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