1. 程式人生 > >Python 常見問題(即:面式問題)

Python 常見問題(即:面式問題)

python基礎語法:

  1. 可變與不可變型別; 
  2. 淺拷貝與深拷貝的實現方式、區別;deepcopy如果你來設計,如何實現; 
  3. __new__() 與 __init__()的區別; 
  4. 你知道幾種設計模式; 
  5. 編碼和解碼你瞭解過麼; 
  6. 列表推導list comprehension和生成器的優劣; 
  7. 什麼是裝飾器;如果想在函式之後進行裝飾,應該怎麼做; 
  8. 手寫個使用裝飾器實現的單例模式; 
  9. 使用裝飾器的單例和使用其他方法的單例,在後續使用中,有何區別; 
  10. 手寫:正則郵箱地址; 
  11. 介紹下垃圾回收:引用計數/分代回收/孤立引用環; 
  12. 多程序與多執行緒的區別;CPU密集型適合用什麼; 
  13. 程序通訊的方式有幾種; 
  14. 介紹下協程,為何比執行緒還快; 
  15. range和xrange的區別(他妹的我學的py3…); 
  16. 由於我有C/C++背景,因此要求用C來手寫:將IP地址字串(比如“172.0.0.1”)轉為32位二進位制數的函式。

python演算法排序部分

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

網路基礎部分

  1. TCP/IP分別在模型的哪一層; 
  2. socket長連線是什麼意思; 
  3. select和epoll你瞭解麼,區別在哪; 
  4. TCP UDP區別;三次握手四次揮手講一下; 
  5. TIME_WAIT過多是因為什麼; 
  6. http一次連線的全過程:你來說下從使用者發起request——到使用者接收到response; 
  7. http連線方式。get和post的區別,你還了解其他的方式麼; 
  8. restful你知道麼; 
  9. 狀態碼你知道多少,比如200/403/404/504等等;

 

資料庫部分

  1. MySQL鎖有幾種;死鎖是怎麼產生的; 
  2. 為何,以及如何分割槽、分表; 
  3. MySQL的char varchar text的區別; 
  4. 瞭解join麼,有幾種,有何區別,A LEFT JOIN B,查詢的結果中,B沒有的那部分是如何顯示的(NULL); 
  5. 索引型別有幾種,BTree索引和hash索引的區別(我沒答上來這倆在磁碟結構上的區別); 
  6. 手寫:如何對查詢命令進行優化; 
  7. NoSQL瞭解麼,和關係資料庫的區別;redis有幾種常用儲存型別;

 

Linux部分

  1. 講一下你常用的Linux/git命令和作用; 
  2. 檢視當前程序是用什麼命令,除了檔案相關的操作外,你平時還有什麼操作命令; 
  3. (因為我本人Linux本身就很水,只會基本的操作,所以這部分面試官也基本沒怎麼問。。反正問了就大眼瞪小眼唄)

 

django專案部分

  1. 都是讓簡單的介紹下你在公司的專案,不管是不是後端相關的,主要是要體現出你幹了什麼; 
  2. 你在專案中遇到最難的部分是什麼,你是怎麼解決的; 
  3. 你看過django的admin原始碼麼;看過flask的原始碼麼;你如何理解開源; 
  4. MVC / MTV; 
  5. 快取怎麼用; 
  6. 中介軟體是幹嘛的; 
  7. CSRF是什麼,django是如何避免的;XSS呢; 
  8. 如果你來設計login,簡單的說一下思路; 
  9. session和cookie的聯絡與區別;session為什麼說是安全的; 
  10. uWSGI和Nginx的作用;