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

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