python面試總結1(web方向)
1,session和cookie的區別
session儲存在伺服器,cookie儲存在客戶端。
2,,解釋裝飾器和閉包,並分別說明各自應用場景。
閉包:函式和執行環境的整體。
裝飾器:在函式執行過程中動態增加功能。
閉包應用:可以定義裝飾器。
裝飾器應用:給函式新增日誌等。
3,有沒有用過Redis?有沒有用過mongodb?簡要介紹一下。
沒有用過,會去了解。
4,flask中,防止跨站請求偽造的方法,以及實現原理。
在form表單中新增隱藏欄位csrf_token,請求發起後,將cookie中的csrf_token和表單資料中取出的值做對比,值一樣,視為正常請求
5,flask的werkzeug拓展
一個WSGI(Web Server Gateway Interface)庫,用來定義web服務介面規範。相當於一個工具包,可以用它來搭建web伺服器。
6,雜湊演算法
又稱雜湊演算法或hash演算法。 一種壓縮對映,就是把任意長度的輸入(又叫做預對映pre-image)通過雜湊演算法變換成固定長度的輸出。
7,列表和元組,以及元組的應用場景。
列表:有序集合,可變。
元組:有序集合,不可變。應用:函式返回值
8,mysql資料庫的高階用法
知道有事物,索引,但沒有具體應用過。
9,flask中,上下文的應用場景。
程式上下文:(current_app,g)多應用巢狀時,用於確定當前處理哪個應用。
請求上下文:(request,session)利用執行緒隔離,將其在一次請求中設定為全域性變數。
10,flask中資料庫遷移的三個步驟及目的
python manage.py db init 建立遷移倉庫
python XXXX.py db migrate -m "提示資訊" 建立遷移指令碼
python XXXX.py db upgrade 更新至資料庫
11,flask藍圖實現機制
1:在藍圖物件上呼叫route裝飾器註冊路由,在內部的延遲操作記錄列表defered_functions中添加了一個項。
2:執行應用物件的register_blueprint()方法時,應用物件從defered_functions列表中取出每一項,即呼叫應用物件的add_url_rule()方法,最終修改程式例項的路由對映列表
12,介紹MVC和MVT,闡述區別。
MVC:模型(M),控制器(C),檢視(V)
MVT:模型(M),模板(T)檢視(V)
共同點:1,都將業務處理和顯示分開進行。2,model都是資料存取。
不同點:在顯示階段,mvc中view只負責顯示具體內容,而MVT中,由view將資料填充到template中再顯示。
13,介紹http協議。
超文字傳輸協議。應用層協議。
請求由三部分構成:請求行、訊息報頭、請求正文
請求方法有:GET,POST,HEAD,PUT,DELETE等。
響應也由三部分構成:狀態行、訊息報頭、響應正文
響應狀態碼的五種可能取值:
1xx:指示資訊--表示請求已接收,繼續處理
2xx:成功--表示請求已被成功接收、理解、接受
3xx:重定向--要完成請求必須進行更進一步的操作
4xx:客戶端錯誤--請求有語法錯誤或請求無法實現
5xx:伺服器端錯誤--伺服器未能實現合法的請求
14,介紹氣泡排序
從頭開始,遍歷所有元素。比較兩個相鄰的元素,將值大的元素交換至右端,始終將較小的值放在左邊。