Python後端面試常考題彙總
數據結構與算法:
- 數組與鏈表(手寫 定義一個棧或隊列 寫出入隊與出隊的方法) 樹與圖
- 快速排序 (考慮遞歸增長調用棧的深度, 應區分for循環與遞歸的使用場景)
- 二叉樹 廣度優先搜素(封裝成一個類,實現前/中/後序遍歷搜素)
- Python字典的實現原理(典型的散列表數據結構,能夠用數組及鏈表來實現)
數據庫
- 分表分庫的場景(根據具體的業務場景來劃分)
- 動態查詢優化問題(redis緩存 mysql的view視圖)
- 索引的原理及什麼時候須要增長索引(b+tree數據結構的考場)
- 數據庫的ACID(注意事務隔離機制的實現原理,級別,場景配置)
- 高併發狀況下,怎麼調用阿里短信服務接口(加入消息隊列中異步調用)
- 針對非關係型數據庫mongodb,怎麼查詢缺失字段的記錄 {fieldname: {$exists: false}}
- 數據庫的樣式
- redis數據庫的實現原理
- 關係型數據庫與非關係型數據庫的區別
web框架
- django與flask關於多對多的數據模型設計
- flask關於全局上下文變量 g session request current_app的做用
- 關於flask請求隔離機制的處理(ThreadLocal實現)
- django與flask查詢 querySet的優化問題(sqlalchemy自帶limit 但django的filter沒有limit 大部分狀況下用sql去實現 )
- flask怎麼實現跨域請求
- 關於 WSGI uWSGI uwsgi的區別
- gunicorn與celery原理的瞭解程度(celery的broken經常使用組件)
- 常見的中間件的實現(手寫 過濾特定請求--ip限制 請求頻率控制)
網絡編程
- tcp怎麼實現實現通訊安全?
- 怎麼判斷服務器響應的資源不一樣呢?
- 怎麼在服務器端管理不一樣的進程呢?好比消息隊列的進程死掉了,怎麼解決?(用supervisor監控進程的存活狀態)
Python語言
- 手寫 裝飾器(注意類裝飾器) 單例模式 快速排序(遞歸) 嵌套數組及字典的排序問題
- 異步 async的瞭解程度(能夠類比 JS中的Promise)
- 進程 線程 協程
- 關於對象引用的認識(常考題 定義一個函數,其缺省參數如一個空列表的狀況)
- 手寫一個with語句
關於項目
- 項目的技術棧(通常不會深刻聊業務,TA更關注你的技術棧--會針對這個深刻的問一下問題,一直到答不上來)
- 項目的獨立服務程度
- 項目遇到最難的問題是什麼?怎麼解決
歡迎關注本站公眾號,獲取更多信息