Python後端面試常考題彙總

數據結構與算法:

  1. 數組與鏈表(手寫 定義一個棧或隊列 寫出入隊與出隊的方法) 樹與圖
  2. 快速排序 (考慮遞歸增長調用棧的深度, 應區分for循環與遞歸的使用場景)
  3. 二叉樹 廣度優先搜素(封裝成一個類,實現前/中/後序遍歷搜素)
  4. Python字典的實現原理(典型的散列表數據結構,能夠用數組及鏈表來實現)

數據庫

  1. 分表分庫的場景(根據具體的業務場景來劃分)
  2. 動態查詢優化問題(redis緩存 mysql的view視圖)
  3. 索引的原理及什麼時候須要增長索引(b+tree數據結構的考場)
  4. 數據庫的ACID(注意事務隔離機制的實現原理,級別,場景配置)
  5. 高併發狀況下,怎麼調用阿里短信服務接口(加入消息隊列中異步調用)
  6. 針對非關係型數據庫mongodb,怎麼查詢缺失字段的記錄 {fieldname: {$exists: false}}
  7. 數據庫的樣式
  8. redis數據庫的實現原理
  9. 關係型數據庫與非關係型數據庫的區別

web框架

  1. django與flask關於多對多的數據模型設計
  2. flask關於全局上下文變量 g session request current_app的做用
  3. 關於flask請求隔離機制的處理(ThreadLocal實現)
  4. django與flask查詢 querySet的優化問題(sqlalchemy自帶limit 但django的filter沒有limit 大部分狀況下用sql去實現 )
  5. flask怎麼實現跨域請求
  6. 關於 WSGI uWSGI uwsgi的區別
  7. gunicorn與celery原理的瞭解程度(celery的broken經常使用組件)
  8. 常見的中間件的實現(手寫 過濾特定請求--ip限制 請求頻率控制)

網絡編程

  1. tcp怎麼實現實現通訊安全?
  2. 怎麼判斷服務器響應的資源不一樣呢?
  3. 怎麼在服務器端管理不一樣的進程呢?好比消息隊列的進程死掉了,怎麼解決?(用supervisor監控進程的存活狀態)

Python語言

  1. 手寫 裝飾器(注意類裝飾器) 單例模式 快速排序(遞歸) 嵌套數組及字典的排序問題
  2. 異步 async的瞭解程度(能夠類比 JS中的Promise)
  3. 進程 線程 協程
  4. 關於對象引用的認識(常考題 定義一個函數,其缺省參數如一個空列表的狀況)
  5. 手寫一個with語句

關於項目

  1. 項目的技術棧(通常不會深刻聊業務,TA更關注你的技術棧--會針對這個深刻的問一下問題,一直到答不上來)
  2. 項目的獨立服務程度
  3. 項目遇到最難的問題是什麼?怎麼解決
相關文章
相關標籤/搜索