面試題1 9月25日面試題

2022-06-06 04:09:12 字數 3817 閱讀 2422

1.簡述http協議

2.請求頭都包含哪些東西?

3.常用狀態碼都有哪些?

4.django請求生命週期?

5.如何自定義中介軟體

6.django怎麼執行原生sql語句

7.什麼是cbv和fbv?

8.什麼是mtv框架、mvc框架?

9.csrf攻擊原理

10.orm常用方法

11.簡述cookie和session

12.django建立專案的命令是什麼?

13.orm如何批量建立資料?

14.中介軟體的作用場景

'''

http協議:超文字傳輸協議

是乙個基於應用層的協議

現如今使用最廣泛的版本是http 1.1

它是客戶端和服務端請求和應答的標準

http請求響應過程:

客戶端傳送乙個請求報文

伺服器解析請求,並向客戶端傳送響應報文

客戶端瀏覽器解析html內容

'''

'''

頭部欄位名:值 + 回車符 + 換行符

頭部欄位名:值 + 回車符 + 換行符

頭部欄位名:值 + 回車符 + 換行符

'''

'''

200 請求成功

404 網頁不存在

500 內部伺服器錯誤

403 forbidden 拒絕執行請求

'''

'''

瀏覽器輸入了url到wsgi wsgi中封裝了socket

之後走中介軟體 url控制器 檢視函式

檢視函式進行orm操作就可以運算元據庫

檢視函式通過render模板渲染就可以到template

模板渲染後 可以返回到檢視函式

再通過中介軟體 通過wsgi返回給瀏覽器

這樣瀏覽器就可以看到頁面了...

1.先在應用下建立乙個資料夾,比如起名mymiddleware

2.在middleware資料夾下建立乙個py檔案,比如叫auth.py

3.在auth.py中

先引入乙個middlewaremixin類

定義乙個類,該類繼承middlewaremixin類

在裡面可以定義中介軟體的5個方法

'''

'''

1.在django裡面,可以用raw()方法執行原生sql語句

models.book.object.all(select name from book)

2.從django提供的介面 像使用pymysql模組一樣運算元據庫

游標cursor-->execute-->fetchone

'''

'''

cbv和fbv都是針對於檢視函式的

cbv:在檢視裡使用類處理請求

fbv:在檢視裡使用函式處理請求

'''

'''

mvc:將web應用分為模型m 控制器c 和 檢視v三層

模型 負責業務和資料庫的對映

檢視 負責和使用者的互動頁面

控制器接受模型和檢視完成使用者的請求

mtv:django中的

m:model 負責業務和資料的對映 orm

t:template 負責如何把頁面展示給使用者 html

v:view 負責業務邏輯,並在適當時候呼叫model和template

還有乙個url分發器 負責將不同url分發給不同的view處理

view再呼叫model和template

'''

'''

csrf:跨站請求偽造

csrf跨站請求偽造校驗

**在給使用者返回乙個具有提交資料的頁面的時候會給這個頁面加乙個唯一標識

當這個頁面朝後端傳送post請求的時候,後端會先校驗唯一標識

如果唯一標識不對,直接拒絕(403 forbidden)

如果成功則正常執行

兩個**請求兩個頁面,兩個**分別返回兩個頁面,兩個頁面長的一模一樣

當頁面提交post請求的時候

**:**在返回頁面的時候,給每個頁面都攜帶了乙個隨機標識過去的

兩個**請求兩個頁面

客戶端向服務端傳送請求

服務端返回頁面給客戶端,在返回頁面的時候是帶了乙個隨機標記過去的

比如說正常**請求頁面,**返回乙個頁面,並攜帶隨機標識33333

釣魚**請求頁面,**返回乙個頁面,並攜帶隨機標識44444(因為標識唯一,所以兩個標識絕對不相同)

客戶端(瀏覽器)有input框,輸入資料提交,這個時候客戶端向服務端傳送post請求

服務端會驗證你發過來的post請求裡,有沒有唯一標記33333

而釣魚**他的唯一標識,是釣魚**的服務端給它發的44444

而當正常**/釣魚**提交post請求時,服務端會驗證你的唯一標識是否是他之前給客戶端的那個

如果唯一標識正確,就可以向後台提交資料

如果唯一標識錯誤,就會把它forbidden 403掉,不能向後台提交資料

'''

'''

all() 獲取表中所有資料 結果為queryset型別

filter() 獲取部分資料 結果為queryset型別

get() 獲取單條資料,結果為model物件

first()queryset資料型別呼叫 返回第一條資料

values() 獲取記錄的某些字段資料

'''

#

cookie

'''cookie出現的原因:http無狀態,每次請求都是獨立的,伺服器不知道客戶端是什麼狀態

cookie原理:

1.瀏覽器訪問服務端,帶著乙個空的cookie

2.然後由伺服器產生cookie,瀏覽器收到響應後儲存在本地

3.瀏覽器再次訪問時,就會自動帶上cookie,伺服器就可以通過cookie來判斷來訪問的是誰了

'''#

session

'''session出現的原因:

1.cookie是明文儲存的

2.cookie的大小限制為4kb

session原理:

1.使用者登入後生成乙個字典,key是由服務端生成的cookie,value是乙個自定義格式的字典,比如

2.往字典裡儲存資訊:比如存使用者是否登入:

3.當我們在django中使用session時,cookie由服務端隨機生成,寫到瀏覽器的cookie中

4.每個瀏覽器都有自己的cookie值,是session尋找使用者資訊的唯一標識

5.request.session <==> 1中key對應的value

session好處:

cookie儲存在瀏覽器,session儲存在客戶端

'''

#

django_admin startproject django_orm

#

models.book.objects.bulk_create(obj_list)

'''

圖書管理系統

不登入不可以檢視所有書籍 以及新增修改和刪除等操作

所以定義中介軟體 在請求之前設定中介軟體

判斷登入狀態 如果登入了 就可以檢視介面進行操作

沒有登入 就不能看到頁面進行任何操作

'''

10月31日,面試題小結

localstorage和sessionstorage 塊級元素會獨佔一行,預設情況下,其寬度自動填滿其父元素寬度.行內元素不會獨佔一行,相鄰的行內元素會排列在同一行裡,直到一行排不下,才會換行,其寬度隨元素的內容而變化.塊級元素可以設定width,height屬性.行內元素設定width,heig...

6 27 每日面試題

6.27 每日面試題 1 stringstream常見用法介紹 定義了三個類 istringstream ostringstream 和 stringstream,分別用來進行流的輸入 輸出和輸入輸出操作。本文以 stringstream 為主,介紹流的輸入和輸出操作。主要用來進行資料型別轉換,由於...

每日面試題8 13

先上題 console.log true false console.log false true false console.log false true false 今天的這一道面試題主要是關於 這個知識點的。要想完全做懂此型別的題目,我們應該需要了解以下幾個點。基本型別的轉化順序。string...