語法以及其他基礎部分
可變與不可變類型沼沈;
淺拷貝與深拷貝的實現方式丈冬、區(qū)別嘱函;deepcopy如果你來設計,如何實現埂蕊;
new() 與 init()的區(qū)別往弓;
你知道幾種設計模式;
編碼和解碼你了解過么蓄氧;
列表推導list comprehension和生成器的優(yōu)劣函似;
什么是裝飾器;如果想在函數之后進行裝飾喉童,應該怎么做撇寞;
手寫個使用裝飾器實現的單例模式;
使用裝飾器的單例和使用其他方法的單例,在后續(xù)使用中蔑担,有何區(qū)別露氮;
手寫:正則郵箱地址;
介紹下垃圾回收:引用計數/分代回收/孤立引用環(huán)钟沛;
多進程與多線程的區(qū)別;CPU密集型適合用什么局扶;
進程通信的方式有幾種恨统;
介紹下協程,為何比線程還快三妈;
range和xrange的區(qū)別(他妹的我學的py3…)畜埋;
由于我有C/C++背景,因此要求用C來手寫:將IP地址字符串(比如“172.0.0.1”)轉為32位二進制數的函數畴蒲。
算法排序部分
手寫快排悠鞍;堆排;幾種常用排序的算法復雜度是多少模燥;快排平均復雜度多少咖祭,最壞情況如何優(yōu)化; 手寫:已知一個長度n的無序列表蔫骂,元素均是數字么翰,要求把所有間隔為d的組合找出來,你寫的解法算法復雜度多少辽旋; 手寫:一個列表A=[A1浩嫌,A2,…,An]补胚,要求把列表中所有的組合情況打印出來码耐; 手寫:用一行python寫出1+2+3+…+10**8 ; 手寫python:用遞歸的方式判斷字符串是否為回文溶其; 單向鏈表長度未知骚腥,如何判斷其中是否有環(huán); 單向鏈表如何使用快速排序算法進行排序握联; 手寫:一個長度n的無序數字元素列表桦沉,如何求中位數,如何盡快的估算中位數金闽,你的算法復雜度是多少纯露; 如何遍歷一個內部未知的文件夾(兩種樹的優(yōu)先遍歷方式)
網絡基礎部分
TCP/IP分別在模型的哪一層;
socket長連接是什么意思代芜;
select和epoll你了解么埠褪,區(qū)別在哪;
TCP UDP區(qū)別;三次握手四次揮手講一下钞速;
TIME_WAIT過多是因為什么贷掖;
http一次連接的全過程:你來說下從用戶發(fā)起request——到用戶接收到response;
http連接方式渴语。get和post的區(qū)別苹威,你還了解其他的方式么;
restful你知道么驾凶;
狀態(tài)碼你知道多少牙甫,比如200/403/404/504等等;
數據庫部分
MySQL鎖有幾種调违;死鎖是怎么產生的窟哺; 為何,以及如何分區(qū)技肩、分表且轨; mysql的char varchar text的區(qū)別; 了解join么虚婿,有幾種旋奢,有何區(qū)別,A LEFT JOIN B雳锋,查詢的結果中黄绩,B沒有的那部分是如何顯示的(NULL); 索引類型有幾種玷过,BTree索引和hash索引的區(qū)別(我沒答上來這倆在磁盤結構上的區(qū)別)爽丹; 手寫:如何對查詢命令進行優(yōu)化; NoSQL了解么辛蚊,和關系數據庫的區(qū)別粤蝎;Redis有幾種常用存儲類型;
Linux部分
講一下你常用的Linux/git命令和作用袋马; 查看當前進程是用什么命令初澎,除了文件相關的操作外,你平時還有什么操作命令虑凛; (因為我本人linux本身就很水碑宴,只會基本的操作,所以這部分面試官也基本沒怎么問桑谍。延柠。反正問了就大眼瞪小眼唄)
django項目部分
都是讓簡單的介紹下你在公司的項目,不管是不是后端相關的锣披,主要是要體現出你干了什么贞间;
你在項目中遇到最難的部分是什么贿条,你是怎么解決的;
你看過django的admin源碼么增热;看過flask的源碼么整以;你如何理解開源;
MVC / MTV峻仇;
緩存怎么用公黑;
中間件是干嘛的;
CSRF是什么摄咆,django是如何避免的帆调;XSS呢;
如果你來設計login豆同,簡單的說一下思路;
session和cookie的聯系與區(qū)別含鳞;session為什么說是安全的影锈;
uWSGI和Nginx的作用;