Python 最多見的 170 道面試題全解析:2019 版

Python 最多見的 170 道面試題全解析:2019 版

引言

最近在刷面試題,因此須要看大量的 Python 相關的面試題,從大量的題目中總結了不少的知識,同時也對一些題目進行拓展了,可是在看了網上的大部分面試題不是很滿意,一個是有些部分仍是 Python2 的代碼,另外一個就是回答的很簡單,有些關鍵的題目,也沒有點出爲何,最重要的是還有一些複製粘貼根本就跑不通,這種相信你們深有體會吧,這樣就致使咱們可能須要去找其餘人發的相似的教程。難受啊,因此我決定針對市面上大多的 Python 題目作一個分析,同時也但願你們儘量的作到觸類旁通,而不是侷限於題目自己。大概就這樣吧,有你看過的題目也有你沒看到過的。html

經過本場 Chat,你將得到以下知識點:

  • 掌握 Python 的基礎語法
  • 語法常見的 Python 應用場景
  • 掌握 Python 閉包的使用以及裝飾器的使用
  • 生成器和迭代器的使用
  • 常見的設計模式的使用
  • 深淺拷貝的區別
  • 線程、進程、協程的使用
  • 瞭解 Python 中的元編程和反射
  • 常考的數據結構和算法
  • 爬蟲相關知識,網絡編程基本知識等

全部題目

語言特性

1.談談對 Python 和其餘語言的區別 2.簡述解釋型和編譯型編程語言 3.Python 的解釋器種類以及相關特色? 4.說說你知道的Python3 和 Python2 之間的區別? 5.Python3 和 Python2 中 int 和 long 區別? 6.xrange 和 range 的區別?python

編碼規範

7.什麼是 PEP8? 8.瞭解 Python 之禪麼? 9.瞭解 dosctring 麼? 10.瞭解類型註解麼? 11.例舉你知道 Python 對象的命名規範,例如方法或者類等 12.Python 中的註釋有幾種? 13.如何優雅的給一個函數加註釋? 14.如何給變量加註釋? 15.Python 代碼縮進中是否支持 Tab 鍵和空格混用。 16.是否能夠在一句 import 中導入多個庫? 17.在給 Py 文件命名的時候須要注意什麼? 18.例舉幾個規範 Python 代碼風格的工具mysql

數據類型

字符串

19.列舉 Python 中的基本數據類型? 20.如何區別可變數據類型和不可變數據類型 21.將"hello world"轉換爲首字母大寫"Hello World" 22.如何檢測字符串中只含有數字? 23.將字符串"ilovechina"進行反轉 24.Python 中的字符串格式化方式你知道哪些? 25.有一個字符串開頭和末尾都有空格,好比「 adabdw 」,要求寫一個函數把這個字符串的先後空格都去掉。 26.獲取字符串」123456「最後的兩個字符。 27.一個編碼爲 GBK 的字符串 S,要將其轉成 UTF-8 編碼的字符串,應如何操做? 28.s="info:xiaoZhang 33 shandong",用正則切分字符串輸出['info', 'xiaoZhang', '33', 'shandong'] 27.怎樣將字符串轉換爲小寫? 28.單引號、雙引號、三引號的區別? 29.a = "你好 中國 ",去除多餘空格只留一個空格。git

列表

30.已知 AList = [1,2,3,1,2],對 AList 列表元素去重,寫出具體過程。 31.如何實現 "1,2,3" 變成 ["1","2","3"] 32.給定兩個 list,A 和 B,找出相同元素和不一樣元素 33.[[1,2],[3,4],[5,6]]一行代碼展開該列表,得出[1,2,3,4,5,6] 34.合併列表[1,5,7,9]和[2,2,6,8] 35.如何打亂一個列表的元素?面試

字典

36.字典操做中 del 和 pop 有什麼區別 37.按照字典的內的年齡排序正則表達式

38.請合併下面兩個字典 a = {"A":1,"B":2},b = {"C":3,"D":4} 39.如何使用生成式的方式生成一個字典,寫一段功能代碼。 40.如何把元組("a","b")和元組(1,2),變爲字典{"a":1,"b":2}redis

綜合

41.Python 經常使用的數據結構的類型及其特性?算法

A:{1:0,2:0,3:0}
B:{"a":0, "b":0, "c":0}
C: {(1,2):0, (2,3):0}
D: {[1,2]:0, [2,3]:0}

42.如何將元組("A","B")和元組(1,2),合併成字典{"A":1,"B":2} 43.Python 裏面如何實現 tuple 和 list 的轉換? 44.咱們知道對於列表可使用切片操做進行部分元素的選擇,那麼如何對生成器類型的對象實現相同的功能呢? 45.請將[i for i in range(3)]改爲生成器 46.a="hello"和 b="你好"編碼成 bytes 類型 47.下面的代碼輸出結果是什麼?sql

a = (1,2,3,[4,5,6,7],8)
a[2] = 2

48.下面的代碼輸出的結果是什麼?mongodb

a = (1,2,3,[4,5,6,7],8)
a[5] = 2

操做類題目

49.Python 交換兩個變量的值 50.在讀文件操做的時候會使用 read、readline 或者 readlines,簡述它們各自的左右 51.json 序列化時,能夠處理的數據類型有哪些?如何定製支持 datetime 類型? 52.json 序列化時,默認遇到中文會轉換成 unicode,若是想要保留中文怎麼辦? 53.有兩個磁盤文件 A 和 B,各存放一行字母,要求把這兩個文件中的信息合併(按字母順序排列),輸出到一個新文件 C 中。 54.若是當前的日期爲 20190530,要求寫一個函數輸出 N 天后的日期,(好比 N 爲 2,則輸出 20190601)。 55.寫一個函數,接收整數參數 n,返回一個函數,函數的功能是把函數的參數和 n 相乘並把結果返回。 56.下面代碼會存在什麼問題,如何改進?

def strappend(num):
    str='first'
    for i in range(num):
        str+=str(i)
    return str

57.一行代碼輸出 1-100 之間的全部偶數。 58.with 語句的做用,寫一段代碼? 59.python 字典和 json 字符串相互轉化方法 60.請寫一個 Python 邏輯,計算一個文件中的大寫字母數量

高級特性

70.函數裝飾器有什麼做用?請列舉說明? 71.Python 垃圾回收機制? 72.魔法函數 __call__怎麼使用? 73.如何判斷一個對象是函數仍是方法? 74.@classmethod 和@staticmethod 用法和區別 75.Python 中的接口如何實現? 76.Python 中的反射了解麼? 77.metaclass 做用?以及應用場景? 78.hasattr() getattr() setattr()的用法 79.請列舉你知道的 Python 的魔法方法及用途。 80.如何知道一個 Python 對象的類型? 81.Python 的傳參是傳值仍是傳址? 82.Python 中的元類(metaclass)使用舉例 83.簡述 any()和 all()方法 84.filter 方法求出列表全部奇數並構造新列表,a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 85.什麼是猴子補丁? 86.在 Python 中是如何管理內存的? 87.當退出 Python 時是否釋放全部內存分配?

正則表達式

88.使用正則表達式匹配出<html><h1>www.baidu.com</html>中的地址 a="張明 98 分",用 re.sub,將 98 替換爲 100 89.正則表達式匹配中(.)和(.?)匹配區別? 90.寫一段匹配郵箱的正則表達式

其餘內容

91.解釋一下 python 中 pass 語句的做用? 92.簡述你對 input()函數的理解 93.python 中的 is 和== 94.Python 中的做用域 95.三元運算寫法和應用場景? 96.瞭解 enumerate 麼? 97.列舉 5 個 Python 中的標準模塊 98.如何在函數中設置一個全局變量 99.pathlib 的用法舉例 100.Python 中的異常處理,寫一個簡單的應用場景 101.Python 中遞歸的最大次數,那如何突破呢? 102.什麼是面向對象的 mro 103.isinstance 做用以及應用場景? 104.什麼是斷言?應用場景? 105.lambda 表達式格式以及應用場景? 106.新式類和舊式類的區別 107.dir()是幹什麼用的? 108.一個包裏有三個模塊,demo1.py, demo2.py, demo3.py,但使用 from tools import 導入模塊時,如何保證只有 demo一、demo3 被導入了。 109.列舉 5 個 Python 中的異常類型以及其含義 110.copy 和 deepcopy 的區別是什麼? 111.代碼中常常遇到的args, **kwargs 含義及用法。 112.Python 中會有函數或成員變量包含單下劃線前綴和結尾,和雙下劃線前綴結尾,區別是什麼? 113.w、a+、wb 文件寫入模式的區別 114.舉例 sort 和 sorted 的區別 115.什麼是負索引? 116.pprint 模塊是幹什麼的? 117.解釋一下 Python 中的賦值運算符 118.解釋一下 Python 中的邏輯運算符 119.講講 Python 中的位運算符 120.在 Python 中如何使用多進制數字? 121.怎樣聲明多個變量並賦值?

算法和數據結構

122.已知:

AList = [1,2,3]
BSet = {1,2,3}

(1) 從 AList 和 BSet 中 查找 4,最壞時間複雜度那個大? (2) 從 AList 和 BSet 中 插入 4,最壞時間複雜度那個大? 123.用 Python 實現一個二分查找的函數 124.python 單例模式的實現方法 125.使用 Python 實現一個斐波那契數列 126.找出列表中的重複數字 127.找出列表中的單個數字 128.寫一個冒泡排序 129.寫一個快速排序 130.寫一個拓撲排序 131.python 實現一個二進制計算 132.有一組「+」和「-」符號,要求將「+」排到左邊,「-」排到右邊,寫出具體的實現方法。 133.單鏈表反轉 134.交叉鏈表求交點 135.用隊列實現棧 136.找出數據流的中位數 137.二叉搜索樹中第 K 小的元素

爬蟲相關

138.在 requests 模塊中,requests.content 和 requests.text 什麼區別 139.簡要寫一下 lxml 模塊的使用方法框架 140.說一說 scrapy 的工做流程 141.scrapy 的去重原理 142.scrapy 中間件有幾種類,你用過哪些中間件 143.你寫爬蟲的時候都遇到過什麼?反爬蟲措施,你是怎麼解決的? 144.爲何會用到代理? 145.代理失效了怎麼處理? 146.列出你知道 header 的內容以及信息 147.說一說打開瀏覽器訪問 www.baidu.com 獲取到結果,整個流程。 148.爬取速度過快出現了驗證碼怎麼處理 149.scrapy 和 scrapy-redis 有什麼區別?爲何選擇 redis 數據庫? 150.分佈式爬蟲主要解決什麼問題 151.寫爬蟲是用多進程好?仍是多線程好? 爲何? 152.解析網頁的解析器使用最多的是哪幾個 153.須要登陸的網頁,如何解決同時限制 ip,cookie,session(其中有一些是動態生成的)在不使用動態爬取的狀況下? 154.驗證碼的解決(簡單的:對圖像作處理後能夠獲得的,困難的:驗證碼是點擊,拖動等動態進行的?) 155.使用最多的數據庫(mysql,mongodb,redis 等),對他的理解?

網絡編程

156.TCP 和 UDP 的區別? 157.簡要介紹三次握手和四次揮手 158.什麼是粘包? socket 中形成粘包的緣由是什麼? 哪些狀況會發生粘包現象?

併發

159.舉例說明 conccurent.future 的中線程池的用法 160.說一說多線程,多進程和協程的區別。 161.簡述 GIL 162.進程之間如何通訊 163.IO 多路複用的做用? 164.select、poll、epoll 模型的區別? 165.什麼是併發和並行? 167.解釋什麼是異步非阻塞? 168.threading.local 的做用?

Git 面試題

169.說說你知道的 git 命令 170.git 如何查看某次提交修改的內容x

相關文章
相關標籤/搜索