[Python Study Notes] python面試題總結


python語法以及其餘基礎部分
python

可變與不可變類型; 
淺拷貝與深拷貝的實現方式、區別;deepcopy若是你來設計,如何實現; 
__new__() 與 __init__()的區別; 
你知道幾種設計模式; 
編碼和解碼你瞭解過麼; 
列表推導list comprehension和生成器的優劣; 
什麼是裝飾器;若是想在函數以後進行裝飾,應該怎麼作; 
手寫個使用裝飾器實現的單例模式; 
使用裝飾器的單例和使用其餘方法的單例,在後續使用中,有何區別; 
手寫:正則郵箱地址; 
介紹下垃圾回收:引用計數/分代回收/孤立引用環; 
多進程與多線程的區別;CPU密集型適合用什麼; 
進程通訊的方式有幾種; 
介紹下協程,爲什麼比線程還快; 
range和xrange的區別(他妹的我學的py3…); 
因爲我有C/C++背景,所以要求用C來手寫:將IP地址字符串(好比「172.0.0.1」)轉爲32位二進制數的函數。git

 

算法排序部分redis

手寫快排;堆排;幾種經常使用排序的算法複雜度是多少;快排平均複雜度多少,最壞狀況如何優化; 
手寫:已知一個長度n的無序列表,元素均是數字,要求把全部間隔爲d的組合找出來,你寫的解法算法複雜度多少; 
手寫:一個列表A=[A1,A2,…,An],要求把列表中全部的組合狀況打印出來; 
手寫:用一行python寫出1+2+3+…+10**8 ; 
手寫python:用遞歸的方式判斷字符串是否爲迴文; 
單向鏈表長度未知,如何判斷其中是否有環; 
單向鏈表如何使用快速排序算法進行排序; 
手寫:一個長度n的無序數字元素列表,如何求中位數,如何儘快的估算中位數,你的算法複雜度是多少; 
如何遍歷一個內部未知的文件夾(兩種樹的優先遍歷方式)算法

 

網絡基礎部分數據庫

TCP/IP分別在模型的哪一層; 
socket長鏈接是什麼意思; 
select和epoll你瞭解麼,區別在哪; 
TCP UDP區別;三次握手四次揮手講一下; 
TIME_WAIT過可能是由於什麼; 
http一次鏈接的全過程:你來講下從用戶發起request——到用戶接收到response; 
http鏈接方式。get和post的區別,你還了解其餘的方式麼; 
restful你知道麼; 
狀態碼你知道多少,好比200/403/404/504等等;django

 

數據庫部分flask

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的做用; 

相關文章
相關標籤/搜索