1808B 第二周筆試題
- 選擇題(8題 1~7單選, 8~10多選)(40分)
1. Django框架的設(shè)計模式是( B )
A. MVC B. MVT
C. MVVM D. MVP
2.Django在項目中用來配置項目信息文件是( A )
A. setting.py B. urls.py
C. init.py D. wsgi.py
3.選擇id為myId的網(wǎng)頁元素正確的是(C )
A. ('myId')
C. ('.myId')
- 下列關(guān)于json模塊的方法,描述正確的是( A )
A、json.dumps 是將python數(shù)據(jù)類型,轉(zhuǎn)換為json字符串
B、json.dumps 是將json字符串轉(zhuǎn)換為Python數(shù)據(jù)類型
C、json.load是直接將json字符串轉(zhuǎn)換為Python數(shù)據(jù)類型
D、json.loads是直接將python數(shù)據(jù)類型,轉(zhuǎn)換為json字符串
5.Django創(chuàng)建項目使用的命令是( C )
A、python3 manage.py makemigrations
B、python3 manage.py migrate
C、django-admin startproject
D、python3 manage.py startproject
6.下列關(guān)于csrf說法不正確的是( C)
A. csrf存在的目的是為了防止跨域攻擊
B. 在settings.py的MIDDLEWARE中激活 'django.middleware.csrf.CsrfViewMiddleware'中間件, 表示在全局使用csrf認(rèn)證
C. @csrf_protect 裝飾器,表示取消csrf驗證
D. @csrf_exempt裝飾器,表示取消csrf驗證
- mysql中為表中的字段添加索引的目的是( A )
A、提高查詢的檢索效率
B、歸類
C、創(chuàng)建唯一索引
D、創(chuàng)建主鍵
8.Django rest framework 用戶認(rèn)證,說法正確的是( ABCD )(多選)
A、Django rest framework 可以通過自定義認(rèn)證類實現(xiàn)認(rèn)證功能,并且需要設(shè)置authentication_classes
B、無論是自定義的認(rèn)證類還是 rest framework 自帶的認(rèn)證類都繼承自BaseAuthentication實現(xiàn)
C、BaseAuthentication 中有兩個方法 authenticate 和authenticate_header, 其中 authenticate 方法必須實現(xiàn)
D、如果用戶需要自定義認(rèn)證方法則繼承 BaseAuthentication 重寫 authenticate 方法實現(xiàn)認(rèn)證邏輯即可
9. 關(guān)于RESTful請求方式描述正確的是( ABCD )(多選)
A、GET(SELECT):GET從服務(wù)器取出資源(一項或多項)
B、POST(CREATE):POST在服務(wù)器新建一個資源
C、PUT(UPDATE):PUT在服務(wù)器更新資源(客戶端提供改變后的完整資源)
D、DELETE(DELETE):DELETE從服務(wù)器刪除資源
10. 關(guān)于屬于mysql的約束類型的是( ACD )(多選)
A、PRIMARY B、TRUNCATE
C、DEFAULT D、UNIQUE
二、判斷題 (10分)
DRF實現(xiàn)接口的方式有CBV和FBV兩種,其中FBV是基于反射實現(xiàn)的 ( × )
HTTP/HTTPS屬于應(yīng)用層協(xié)議,HTTPS比HTTP多了SSL安全套接字層, HTTPS會對數(shù)據(jù)進(jìn)行加密,保證數(shù)據(jù)傳輸?shù)陌踩?( √)
HTTP是一個無狀態(tài)的請求 ( √ )
Python中類不支持多繼承。 (× )
DRF中APIView類通過dispatch方法,將不同的請求映射到不同的方法中 (√ )
三、簡答題 (50分)
1. 簡述Http中的狀態(tài)保持?
http協(xié)議是無狀態(tài)的:每次請求都是一次新的請求,不會記得之前通信的狀態(tài);客戶端與服務(wù)器端的一次通信,就是一次會話;實現(xiàn)狀態(tài)保持的方式:在客戶端或服務(wù)器端存儲與會話有關(guān)的數(shù)據(jù);存儲方式包括cookie、session,會話一般指session對象;使用cookie,所有數(shù)據(jù)存儲在客戶端,注意不要存儲敏感信息;推薦使用sesison方式,所有數(shù)據(jù)存儲在服務(wù)器端,在客戶端cookie中存儲session_id;狀態(tài)保持的目的是在一段時間內(nèi)跟蹤請求者的狀態(tài),可以實現(xiàn)跨頁面訪問當(dāng)前請求者的數(shù)據(jù);注意:不同的請求者之間不會共享這個數(shù)據(jù),與請求者一一對應(yīng)
2、請列舉一些常見的請求狀態(tài)碼?
余請求才能完成整個處理過程。
200開頭:表示服務(wù)器成功接收請求并已完成整個處理過程。
200(OK 請求成功)。
300開頭:為完成請求,客戶需進(jìn)一步細(xì)化請求。例如:請求的資源已經(jīng)移動一個新地址、 常用
301: 永久重定向
302: 臨時重定向(所請求的頁面已經(jīng)臨時轉(zhuǎn)移至新的url)
400開頭:客戶端的請求有錯誤.
400:錯誤請求,服務(wù)器無法解析請求
401:未授權(quán),沒有進(jìn)行身份驗證
403:服務(wù)器拒絕訪問
404:服務(wù)器無法找到被請求的網(wǎng)頁
405:請求方式不被允許
408:請求超時
500開頭:服務(wù)器端出現(xiàn)錯誤
500:服務(wù)器內(nèi)部錯誤
501:服務(wù)器不具備完成請求的功能
503:服務(wù)器不可用
3. 列舉django中間件的5個方法?
1.process_request : 請求進(jìn)來時,權(quán)限認(rèn)證
2.process_view : 路由匹配之后,能夠得到視圖函數(shù)
3.process_exception : 異常時執(zhí)行
4.process_template_responseprocess : 模板渲染時執(zhí)行
5.process_response : 請求有響應(yīng)時執(zhí)行
- restful 常見的請求方式有哪些?分別在什么情況下使用?
GET :從服務(wù)器取出資源(一項或多項)
POST :在服務(wù)器新建一個資源
PUT :在服務(wù)器更新資源(客戶端提供改變后的完整資源)
PATCH :在服務(wù)器更新資源(客戶端提供改變的屬性)
DELETE :從服務(wù)器刪除資源
5、根據(jù)以下場景,使用合適的Vue指令?
(1)遍歷列表:v-for
(2)input數(shù)據(jù)的雙向綁定:v-model
(3)通過控制 display 樣式來控制顯示/隱藏:v-show
(4)綁定事件:v-bind
(5)輸出富文本:
6、談?wù)勀銓γ嫦驅(qū)ο蟮睦斫猓?/p>
在我理解,面向?qū)ο笫窍颥F(xiàn)實世界模型的自然延伸,這是一種“萬物皆對象”的編程思想。在現(xiàn)實生活中的任何物體都可以歸為一類事物,而每一個個體都是一類事物的實例。面向?qū)ο蟮木幊淌且詫ο鬄橹行?,以消息為?qū)動,所以程序=對象+消息。
面向?qū)ο笥腥筇匦裕庋b、繼承和多態(tài)。
封裝就是將一類事物的屬性和行為抽象成一個類,使其屬性私有化,行為公開化,提高了數(shù)據(jù)的隱秘性的同時,使代碼模塊化。這樣做使得代碼的復(fù)用性更高。
繼承則是進(jìn)一步將一類事物共有的屬性和行為抽象成一個父類,而每一個子類是一個特殊的父類--有父類的行為和屬性,也有自己特有的行為和屬性。這樣做擴(kuò)展了已存在的代碼塊,進(jìn)一步提高了代碼的復(fù)用性。
如果說封裝和繼承是為了使代碼重用,那么多態(tài)則是為了實現(xiàn)接口重用。多態(tài)的一大作用就是為了解耦--為了解除父子類繼承的耦合度。如果說繼承中父子類的關(guān)系式IS-A的關(guān)系,那么接口和實現(xiàn)類之之間的關(guān)系式HAS-A。簡單來說,多態(tài)就是允許父類引用(或接口)指向子類(或?qū)崿F(xiàn)類)對象。很多的設(shè)計模式都是基于面向?qū)ο蟮亩鄳B(tài)性設(shè)計的。