Python面試常見問題
爬蟲面試常見問題
一.專案問題:
-
你寫爬蟲的時候都遇到過什麼反爬蟲措施,你是怎樣解決的
-
用的什麼框架。為什麼選擇這個框架
二.框架問題:
-
scrapy的基本結構(五個部分都是什麼,請求發出去的整個流程)
-
scrapy的去重原理(指紋去重到底是什麼原理)
-
scrapy中介軟體有幾種類,你用過哪些中介軟體
-
scrapy中介軟體在哪裡起的作業(面向切片程式設計)
三.代理問題:
-
為什麼會用到代理
-
代理怎麼使用(具體程式碼, 請求在什麼時候新增的代理)
-
代理失效了怎麼處理
四.驗證碼處理:
-
登陸驗證碼處理
-
爬取速度過快出現的驗證碼處理
-
如何用機器識別驗證碼
五.模擬登陸問題:
-
模擬登陸流程
-
cookie如何處理
-
如何處理網站傳參加密的情況
六.分散式:
-
分散式原理
-
分散式如何判斷爬蟲已經停止了
-
分散式的去重原理
七.資料儲存和資料庫問題:
-
關係型資料庫和非關係型資料庫的區別
-
爬下來資料你會選擇什麼儲存方式,為什麼
-
各種資料庫支援的資料型別,和特點
是否支援事務...
八.Python基礎問題:
基礎問題非常多,但是因為爬蟲性質,還是有些問的比較多的,下面總結:
-
Python2和Python3的區別,如何實現python2程式碼遷移到Python3環境
-
Python2和Python3的編碼方式有什麼差別
-
迭代器,生成器,裝飾器
-
Python的資料型別
九.協議問題:
-
http協議,請求由什麼組成,每個欄位分別有什麼用,https和http有什麼差距
-
證書問題
-
TCP,UDP各種相關問題
十.資料提取問題:
-
主要使用什麼樣的結構化資料提取方式,可能會寫一兩個例子
-
正則的使用
-
動態載入的資料如何提取
-
json資料如何提取
十一.演算法問題:
演算法:你們要善用Python的資料型別,對Python的資料結構深入瞭解
Python WEB面試常見問題
一. python語法以及其他基礎部分:
- 可變與不可變型別
- 淺拷貝與深拷貝的實現方式、區別;deepcopy如果你來設計,如何實現
- new() 與 init()的區別
- 你知道幾種設計模式
- 編碼和解碼你瞭解過麼
- 列表推導list comprehension和生成器的優劣
- 什麼是裝飾器;如果想在函式之後進行裝飾,應該怎麼做
- 手寫個使用裝飾器實現的單例模式
- 使用裝飾器的單例和使用其他方法的單例,在後續使用中,有何區別
- 手寫:正則郵箱地址
- 介紹下垃圾回收:引用計數/分代回收/孤立引用環
- 多程序與多執行緒的區別,CPU密集型適合用什麼
- 程序通訊的方式有幾種
- 介紹下協程,為何比執行緒還快
- range和xrange的區別
二. 演算法排序部分:
- 手寫快排;堆排;幾種常用排序的演算法複雜度是多少;快排平均複雜度多少,最壞情況如何優化
- 手寫:已知一個長度n的無序列表,元素均是數字,要求把所有間隔為d的組合找出來,你寫的解法演算法複雜度多少
- 手寫:一個列表A=[A1,A2,…,An],要求把列表中所有的組合情況打印出來;
- 手寫:用一行python寫出1+2+3+…+10**8
- 手寫python:用遞迴的方式判斷字串是否為迴文
- 單向連結串列長度未知,如何判斷其中是否有環
- 單向連結串列如何使用快速排序演算法進行排序
- 手寫:一個長度n的無序數字元素列表,如何求中位數,如何儘快的估算中位數,9).你的演算法複雜度是多少;
- 如何遍歷一個內部未知的資料夾(兩種樹的優先遍歷方式)
三. 網路基礎部分:
- TCP/IP分別在模型的哪一層
- socket長連線是什麼意思
- select和epoll你瞭解麼,區別在哪
- TCP UDP區別;三次握手四次揮手講一下
- TIME_WAIT過多是因為什麼
- http一次連線的全過程:你來說下從使用者發起request——到使用者接收到response
- http連線方式。get和post的區別,你還了解其他的方式麼
- restful你知道麼
- 狀態碼你知道多少,比如200/403/404/504等等
四. 資料庫部分:
- SQL/">MySQL鎖有幾種;死鎖是怎麼產生的; 為何,以及如何分割槽、分表;
-
MySQL的char varchar text的區別:
瞭解join麼,有幾種有何區別,A LEFT JOIN B,查詢的結果中,B沒有的那部分是如何顯示的(NULL) - 索引型別有幾種,BTree索引和hash索引的區別
- 手寫:如何對查詢命令進行優化
- NoSQL瞭解麼,和關係資料庫的區別,redis有幾種常用儲存型別
五. Linux部分:
講一下你常用的Linux/git命令和作用;
檢視當前程序是用什麼命令,除了檔案相關的操作外,你平時還有什麼操作命令;
六. Django專案部分:
都是讓簡單的介紹下你在公司的專案,不管是不是後端相關的,主要是要體現出你幹了什麼
- 你在專案中遇到最難的部分是什麼,你是怎麼解決的; 你看過django的admin原始碼麼
- 看過flask的原始碼麼,你如何理解開源
- MVC / MTV, 快取怎麼用, 中介軟體是幹嘛的
- CSRF是什麼,django是如何避免的,XSS
- 如果你來設計login,簡單的說一下思路
- session和cookie的聯絡與區別,session為什麼說是安全的
- uWSGI和Nginx的作用;
每個公司各有特點,但是這些算是基礎,也是常見問題。
面試題連結:ofollow,noindex">https://pan.baidu.com/s/1-fUgHDbRXKUdR9Aq68V3PA 密碼:taxg
祝大家能找到理想工作,不寫bug!