引言
最近在刷面試題,所以需要看大量的 Python 相關的面試題,從大量的題目中總結了很多的知識,同時也對一些題目進行拓展了,但是在看了網上的大部分面試題不是很滿意。
一個是有些部分還是 Python2 的代碼,另一個就是回答的很簡單,有些關鍵的題目,也沒有點出為什麼,最重要的是還有一些複製粘貼根本就跑不通,這種相信大家深有體會吧,這樣就導致我們可能需要去找其他人發的類似的教程。
難受啊,所以我決定針對市面上大多的 Python 題目做一個分析,同時也希望大家儘可能的做到舉一反三,而不是局限於題目本身。大概就這樣吧,有你看過的題目也有你沒看到過的。
通過本場 Chat,你將獲得如下知識點
掌握 Python 的基礎語法語法常見的 Python 應用場景掌握 Python 閉包的使用以及裝飾器的使用生成器和迭代器的使用常見的設計模式的使用深淺拷貝的區別線程、進程、協程的使用了解 Python 中的元編程和反射常考的數據結構和算法爬蟲相關知識,網絡編程基本知識等
掃碼訂閱本場 Chat 收穫170 道面試題答案
▼
所有題目
語言特性
1.談談對 Python 和其他語言的區別2.簡述解釋型和編譯型程式語言3.Python 的解釋器種類以及相關特點?4.說說你知道的Python3 和 Python2 之間的區別?5.Python3 和 Python2 中 int 和 long 區別?6.xrange 和 range 的區別?
編碼規範
7.什麼是 PEP8?8.了解 Python 之禪麼?9.了解 dosctring 麼?10.了解類型註解麼?11.例舉你知道 Python 對象的命名規範,例如方法或者類等12.Python 中的注釋有幾種?13.如何優雅的給一個函數加注釋?14.如何給變量加注釋?15.Python 代碼縮進中是否支持 Tab 鍵和空格混用。16.是否可以在一句 import 中導入多個庫?17.在給 Py 文件命名的時候需要注意什麼?18.例舉幾個規範 Python 代碼風格的工具
數據類型
字符串
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 = "你好 中國 ",去除多餘空格只留一個空格。
列表
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.按照字典的內的年齡排序
d1 = [{'name':'alice', 'age':38}, {'name':'bob', 'age':18}, {'name':'Carl', 'age':28},]
38.請合併下面兩個字典 a = {"A":1,"B":2},b = {"C":3,"D":4}39.如何使用生成式的方式生成一個字典,寫一段功能代碼。40.如何把元組("a","b")和元組(1,2),變為字典{"a":1,"b":2}
綜合
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.下面的代碼輸出結果是什麼?
a = (1,2,3,[4,5,6,7],8)a[2] = 2
48.下面的代碼輸出的結果是什麼?
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 替換為 10089.正則表達式匹配中(.*)和(.*?)匹配區別?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.什麼是面向對象的 mro103.isinstance 作用以及應用場景?104.什麼是斷言?應用場景?105.lambda 表達式格式以及應用場景?106.新式類和舊式類的區別107.dir()是幹什麼用的?108.一個包裡有三個模塊,demo1.py, demo2.py, demo3.py,但使用 from tools import *導入模塊時,如何保證只有 demo1、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.簡述 GIL162.進程之間如何通信163.IO 多路復用的作用?164.select、poll、epoll 模型的區別?165.什麼是並發和並行?167.解釋什麼是異步非阻塞?168.threading.local 的作用?
Git 面試題
169.說說你知道的 git 命令170.git 如何查看某次提交修改的內容x