目錄
- 本面試題題庫(kù),由公號(hào):非本科程序員 整理發(fā)布
- 第1題: Flask中的請(qǐng)求上下文和應(yīng)用上下文是什么?
- 第2題:django中間件的使用?
- 第3題: django開(kāi)發(fā)中數(shù)據(jù)做過(guò)什么優(yōu)化?
-
第4題: 解釋一下 Django 和 Tornado 的關(guān)系、差別?
- Django
- Tornado
-
第5題:什么是restful API ,談?wù)勀愕睦斫猓?
- REST 的特點(diǎn)
- 第6題:關(guān)注題,最近在公號(hào)更新一個(gè)神奇的系列入門(mén)文章
@
本面試題題庫(kù),由公號(hào):非本科程序員 整理發(fā)布
第1題: Flask中的請(qǐng)求上下文和應(yīng)用上下文是什么?
-
在Flask中處理請(qǐng)求時(shí),就會(huì)產(chǎn)生一個(gè) “請(qǐng)求上下文” 對(duì)象,整個(gè)請(qǐng)求的處理過(guò)程,都會(huì)在這個(gè)上下文對(duì)象中進(jìn)行。
這保證了請(qǐng)求的處理過(guò)程不被干擾。
包含了和請(qǐng)求處理相關(guān)的信息,同時(shí)Flask還根據(jù)werkzeug.local模塊中實(shí)現(xiàn)的一種數(shù)據(jù)結(jié)構(gòu)LocalStack用來(lái)存儲(chǔ)“請(qǐng)求上下文”對(duì)象。 -
“應(yīng)用上下文” 也是一個(gè)上下文對(duì)象,可以使用with語(yǔ)句構(gòu)造一個(gè)上下文環(huán)境,它也實(shí)現(xiàn)了push、pop等方法。
“應(yīng)用上下文” 的構(gòu)造函數(shù)也和 “請(qǐng)求上下文” 類(lèi)似,都有app、url_adapter等屬性。“應(yīng)用上下文” 存在的一個(gè)主要功能就是確定請(qǐng)求所在的應(yīng)用。
第2題:django中間件的使用?
django在中間件中預(yù)設(shè)了6個(gè)方法,這6個(gè)方法區(qū)別在于不同的階段執(zhí)行,對(duì)輸入或輸出進(jìn)行干預(yù),方法如下:
#1 初始化: 無(wú)需任何參數(shù),服務(wù)器響應(yīng)第一個(gè)請(qǐng)求的時(shí)候調(diào)用一次,用于確定是否啟用當(dāng)前中間件
def __init__():
pass
#2.處理請(qǐng)求前:在每個(gè)請(qǐng)求上調(diào)用,返回None或者HttpResponse 對(duì)象
def process_response(request):
pass
#3 處理視圖前,在每個(gè)請(qǐng)求上調(diào)用,返回None 或HttpResopnse對(duì)象
def process_view(request.view_func, view_args, view_kwargs):
pass
#4 處理模板響應(yīng)前: 在每個(gè)請(qǐng)求上調(diào)用,返回實(shí)現(xiàn)render 方法的響應(yīng)對(duì)象
def peocess_template_response(request, response):
pass
#5 處理響應(yīng)后,多有響應(yīng)返回瀏覽器之前被調(diào)用,每個(gè)請(qǐng)求上調(diào)用,返回HttpResponse對(duì)象
def process_response(request, response):
pass
#6 異常處理:當(dāng)時(shí)圖拋出異常時(shí)調(diào)用,在每個(gè)請(qǐng)求上調(diào)用,返回一個(gè)HttpResponse對(duì)象
def process_exception(request, execption):
pass
第3題: django開(kāi)發(fā)中數(shù)據(jù)做過(guò)什么優(yōu)化?
- 設(shè)計(jì)表時(shí),盡量少使用外鍵,因?yàn)橥怄I約束會(huì)影響插入和刪除性能
- 使用緩存,減少對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)
- orm框架下設(shè)置表時(shí),能使用varchar確定字段長(zhǎng)度時(shí),就別用text
- 可以給搜索頻率搞得字段屬性,在定義時(shí)創(chuàng)建索引
- django orm 框架下的Querysets 本來(lái)就有緩存的
- 如果一個(gè)頁(yè)面需要多次鏈接數(shù)據(jù)庫(kù),最好一次性去除所有需要的數(shù)據(jù),減少數(shù)據(jù)庫(kù)的查詢(xún)次數(shù)
- 若頁(yè)面只需要數(shù)據(jù)庫(kù)里面的某一兩個(gè)字段時(shí),可以用QuerySet.values()
- 在模板標(biāo)簽里使用with標(biāo)簽可以緩存Qset查詢(xún)結(jié)果
第4題: 解釋一下 Django 和 Tornado 的關(guān)系、差別?
Django
Django源自一個(gè)在線新聞 Web站點(diǎn),于 2005 年以開(kāi)源的形式被釋放出來(lái)。
Django 框架的核心組件有:
用于創(chuàng)建模型的對(duì)象關(guān)系映射為最終用戶設(shè)計(jì)的完美管理界面一流的 URL 設(shè)計(jì)設(shè)計(jì)者友好的模板語(yǔ)言緩存系統(tǒng)等等
它鼓勵(lì)快速開(kāi)發(fā),并遵循MVC設(shè)計(jì)。
Django遵守 BSD版權(quán),最新發(fā)行版本是Django1.4,于2012年03月23日發(fā)布.Django的主要目的是簡(jiǎn)便、快速的開(kāi)發(fā)數(shù)據(jù)庫(kù)驅(qū)動(dòng)的網(wǎng)站。它強(qiáng)調(diào)代碼復(fù)用,多個(gè)組件可以很方便的以“插件”形式服務(wù)于整個(gè)框架,Django有許多功能強(qiáng)大的第三方插件,你甚至可以很方便的開(kāi)發(fā)出自己的工具包。這使得Django具有很強(qiáng)的可擴(kuò)展性。它還強(qiáng)調(diào)快速開(kāi)發(fā)和DRY(Do Not RepeatYourself)原則。
Tornado
Tornado是 FriendFeed使用的可擴(kuò)展的非阻塞式 web 服務(wù)器及其相關(guān)工具的開(kāi)源版本。這個(gè) Web 框架看起來(lái)有些像 web.py 或者 Google 的 webapp,不過(guò)為了能有效利用非阻塞式服務(wù)器環(huán)境,這個(gè) Web 框架還包含了一些相關(guān)的有用工具和優(yōu)化。
Tornado 和現(xiàn)在的主流 Web 服務(wù)器框架(包括大多數(shù)Python 的框架)有著明顯的區(qū)別:它是非阻塞式服務(wù)器,而且速度相當(dāng)快。得利于其 非阻塞的方式和對(duì)epoll的運(yùn)用,Tornado 每秒可以處理數(shù)以千計(jì)的連接,這意味著對(duì)于實(shí)時(shí) Web服務(wù)來(lái)說(shuō),Tornado 是一個(gè)理想的 Web 框架。我們開(kāi)發(fā)這個(gè) Web 服務(wù)器的主要目的就是為了處理 FriendFeed 的實(shí)時(shí)功能 ——在 FriendFeed 的應(yīng)用里每一個(gè)活動(dòng)用戶都會(huì)保持著一個(gè)服務(wù)器連接。(關(guān)于如何擴(kuò)容 服務(wù)器,以處理數(shù)以千計(jì)的客戶端的連接的問(wèn)題。
REST 的特點(diǎn)
-
具象的。一般指表現(xiàn)層,要表現(xiàn)的對(duì)象就是資源。比如,客戶端訪問(wèn)服務(wù)器,獲取的數(shù)據(jù)就是資源。比如文字、圖片、音視頻等。
-
表現(xiàn):資源的表現(xiàn)形式。txt 格式、html 格式、json 格式、jpg 格式等。瀏覽器通過(guò)URL 確定資源的位置,但是需要在HTTP 請(qǐng)求頭中,用Accept 和Content-Type 字段指定,這兩個(gè)字段是對(duì)資源表現(xiàn)的描述。
-
狀態(tài)轉(zhuǎn)換:客戶端和服務(wù)器交互的過(guò)程。在這個(gè)過(guò)程中,一定會(huì)有數(shù)據(jù)和狀態(tài)的轉(zhuǎn)化,這種轉(zhuǎn)化叫做狀態(tài)轉(zhuǎn)換。其中,GET 表示獲取資源,POST 表示新建資源,PUT 表示更新資源,DELETE 表示刪除資源。HTTP 協(xié)議中最常用的就是這四種操作方式。
RESTful 架構(gòu)
-
每個(gè)URL 代表一種資源;
-
客戶端和服務(wù)器之間,傳遞這種資源的某種表現(xiàn)層;
-
客戶端通過(guò)四個(gè)http 動(dòng)詞,對(duì)服務(wù)器資源進(jìn)行操作,實(shí)現(xiàn)表現(xiàn)層狀態(tài)轉(zhuǎn)換。
第6題:關(guān)注題,最近在公號(hào)更新一個(gè)神奇的系列入門(mén)文章
狀態(tài)轉(zhuǎn)換:客戶端和服務(wù)器交互的過(guò)程。在這個(gè)過(guò)程中,一定會(huì)有數(shù)據(jù)和狀態(tài)的轉(zhuǎn)化,這種轉(zhuǎn)化叫做狀態(tài)轉(zhuǎn)換。其中,GET 表示獲取資源,POST 表示新建資源,PUT 表示更新資源,DELETE 表示刪除資源。HTTP 協(xié)議中最常用的就是這四種操作方式。
RESTful 架構(gòu)
客戶端通過(guò)四個(gè)http 動(dòng)詞,對(duì)服務(wù)器資源進(jìn)行操作,實(shí)現(xiàn)表現(xiàn)層狀態(tài)轉(zhuǎn)換。
她專(zhuān)科學(xué)歷
27歲從零開(kāi)始學(xué)習(xí)c,c++,python編程語(yǔ)言
29歲編寫(xiě)百例教程
30歲掌握10種編程語(yǔ)言,
用自學(xué)的經(jīng)歷告訴你,學(xué)編程就找夢(mèng)想橡皮擦
歡迎關(guān)注她的公眾號(hào),搜索— 非本科程序員
序號(hào) | 文章 |
---|---|
Python面試題No1 | Python基礎(chǔ)面試,看這篇文章畫(huà)重點(diǎn)吧 |
Python面試題No2 | Python面試快問(wèn)快答,理論要的就是速度與精準(zhǔn) |
Python面試題No3 | 學(xué)習(xí)Python一年,基礎(chǔ)忘記了,看看面試題回憶回議 |
Python面試題No4 | 去面試Python工程師,這幾個(gè)基礎(chǔ)問(wèn)題一定要能回答 |
Python面試題No5 | 2019年,Python工程師必考的6個(gè)面試題 |
Python面試題No6 | 昨天去面試,這5個(gè)Python面試題都被考到了 |
Python面試題No7 | 周三面試Python開(kāi)發(fā),這幾道Python面試題差點(diǎn)答錯(cuò),Python面試題No7 |
Python面試題No8 | 面試Python工程師,這幾道編碼題有必要背背 |
Python面試題No9 | 又面試了Python爬蟲(chóng)工程師,碰到這么幾道面試題 |
Python面試題No10 | 朋友去面試Python工程師,又帶回來(lái)幾道基礎(chǔ)題 |
Python面試題No11 | 剛畢業(yè)去面試Python工程師,這幾道題太難了 |
Python面試題No12 | 五一4天就背這些Python面試題了 |
Python面試題No13 | 大意了,這幾道Python面試題沒(méi)有答對(duì) |
Python面試題No14 | 明天找python工作,看看這幾道Python面試題吧 |
Python面試題No15 | 這幾道Python面試題,穩(wěn)準(zhǔn)狠 |
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
