python後端開發面試總結
- 2021 年 1 月 10 日
- 筆記
網路協議
通訊電腦雙方必須共同遵從的一組約定,只有遵守這個約定,電腦之間才能相互通訊交流
TCP / IP
TCP/IP(傳輸控制協議/網際協議)是指能夠在多個不同網路間實現資訊傳輸的協議簇。TCP/IP協議不僅僅指的是TCP 和IP兩個協議,而是指一個由FTP、SMTP、TCP、UDP、IP等協議構成的協議簇, 只是因為在TCP/IP協議中TCP協議和IP協議最具代表性,所以被稱為TCP/IP協議 # TCP(傳輸控制協議) """ TCP 為應用程式提供了可靠的傳輸流和虛擬連接服務。TCP主要提供數據流轉送,可靠傳輸,有效流控制,全雙工操作和多路傳輸技術 """ # IP(網際協議) """ 提供一種無連接、不可靠的、儘力而為的數據包傳輸服務 """
HTTP
# HTTP(超文本傳輸協議) """ HTTP基於TCP/IP協議,無狀態;短鏈接;被動響應;工作在應用層(客戶與伺服器建立連接;客戶向伺服器提出請求;伺服器接受請求,並根據請求返回相應的文件作為應答;客戶與伺服器關閉連接) """
restfull API 規範
""" 1, 域名 2, 版本 3, 路徑 4, HTTP動詞 5, 過濾 6, 狀態碼 7, 錯誤處理 8, 返回結果 9, 超媒體 0, 其他 """
Django與Flask
# Flask 1:輕量級web框架,只有一個內核,默認依賴兩個外部庫:Jinja2 模板引擎和 Werkzeug WSGI 工具集,自由,靈活,可擴展性強 2:適用於做小型網站以及web服務的API,開發大型網站無壓力,架構需自行設計 3:與關係型資料庫結合不弱於Django,而與非關係型資料庫的結合遠遠優於Django # Django 1:重量級web框架,功能齊全,提供一站式解決的思路,能讓開發者不用在選擇應用上花費大量時間 2:自帶ORM(Object-Relational Mapping 對象關聯映射)和模板引擎,支援JinJa等非官方模板引擎,靈活度不高 3:自帶ORM使Django和關係型資料庫耦合度過高,如果要使用非關係型資料庫,需要使用第三方庫 4:自帶資料庫管理app 5:成熟、穩定、開發效率高、相對於Flask,Django的整體封閉性比較好,適合做企業級網站的開發 6:python web框架的先驅,第三方庫豐富 7:上手容易,開發文檔詳細、完善、資料豐富
CBV與FBV
# FBV (function base views) """ 在視圖裡使用函數處理請求,基本簡單示例 """ path(r'longin/', views.login) # 路由 def login(request): # 視圖函數 return HTTPResponse("ok") # CBV (class base views) """ 就是在視圖裡使用類處理請求,基本簡單示例 """ path(r'longin/', Login.as_view()) # 路由 class Login(View): def get(self, request): return HTTPResponse("ok") # 拓展 """ CBV內部封裝的dispatch方法,通過反射進行不同請求方法的分發,本質和FBV是一樣的 """
ORM
# ORM (Object Relational Mapping) 對象關係映射 """ 通過orm將程式語言的對象模型和資料庫的關係模型建立映射關係,這樣我們在使用程式語言對資料庫進行操作的時候可以直接使用程式語言的對象模型進行操作就可以了,而不用直接使用sql語言 """ # 優點 1,使我們構造數據結構變得簡單易行 2,完全不需要考慮複雜的sql語句,開發效率高 # 缺點 1,自動化生成sql,犧牲一定的原生sql性能 # 拓展 1,Django自帶的Model 2,有名的SQLAlchemy 3,了解一點各自的語句,關鍵詞
DRF
# Django REST framework 框架是一個用於構建Web API 的強大而又靈活的工具 1: 提供了定義序列化器Serializer的方法,可以快速根據 Django ORM 或者其它庫自動序列化/反序列化; 2: 提供了豐富的類視圖、Mixin擴展類,簡化視圖的編寫; 3: 豐富的訂製層級:函數視圖、類視圖、視圖集合到自動生成 API,滿足各種需要; 4: 直觀的 API web 介面 ,可擴展性,插件豐富 # DRF組件 1: 認證Authentication 2: 許可權Permissions 3: 限流Throttling 4: 過排Filtering 5: 分頁Pagination 6: 介面文檔coreapi
JWT
# Json Web Token 驗證 1: 是什麼 2: 優缺點 3: 原理
Celery
# Celery是一個簡單、靈活且可靠的,處理大量消息的分散式系統,專註於實時處理的非同步任務隊列,同時也支援任務調度 1: 適用場景 非同步任務:將耗時操作任務提交給Celery去非同步執行,比如發送簡訊/郵件、消息推送、音影片處理等 定時任務:定時執行某件事情,比如每天數據統計等 2: 工作原理
RabbitMQ
git
git init # 當前目錄下創建空倉庫 配置用戶 git config --global user.name 名字 git config --global user.email 郵箱 git status # 查看文件夾文件狀態,紅色未管理 git add . # 管理所有文件,綠色 git commit -m '第一版本' # 生成版本 git log # 查看版本commit git reset --hard 版本號 # 回滾版本 git reflog # 記錄切換版本記錄 git branch 分支名 # 創建分支 git checkout 分支名 # 切換分支 git branch -a # 查看所有分支 git merge 分支名 # 合併分支到master git branch -d 分支名 # 刪除分支 git clong # 克隆 git pull origin master # 將遠程master倉庫與當前master更新 git push origin dev:master # 將本地的dev分支推送到gitee的 master 主分支上
資料庫
Mysql Redis Mongo
演算法與數據結構