面試前趕緊看了5道Python Web面試題,Python面試題No17

本面試題題庫,由公號:非本科程序員 整理髮布

第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開發中數據做過什麼優化?

  1. 設計表時,儘量少使用外鍵,因爲外鍵約束會影響插入和刪除性能
  2. 使用緩存,減少對數據庫的訪問
  3. orm框架下設置表時,能使用varchar確定字段長度時,就別用text
  4. 可以給搜索頻率搞得字段屬性,在定義時創建索引
  5. django orm 框架下的Querysets 本來就有緩存的
  6. 如果一個頁面需要多次鏈接數據庫,最好一次性去除所有需要的數據,減少數據庫的查詢次數
  7. 若頁面只需要數據庫裏面的某一兩個字段時,可以用QuerySet.values()
  8. 在模板標籤裏使用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 的特點

  1. 具象的。一般指表現層,要表現的對象就是資源。比如,客戶端訪問服務器,獲取的數據就是資源。比如文字、圖片、音視頻等。
  2. 表現:資源的表現形式。txt 格式、html 格式、json 格式、jpg 格式等。瀏覽器通過URL 確定資源的位置,但是需要在HTTP 請求頭中,用Accept 和Content-Type 字段指定,這兩個字段是對資源表現的描述。
  3. 狀態轉換:客戶端和服務器交互的過程。在這個過程中,一定會有數據和狀態的轉化,這種轉化叫做狀態轉換。其中,GET 表示獲取資源,POST 表示新建資源,PUT 表示更新資源,DELETE 表示刪除資源。HTTP 協議中最常用的就是這四種操作方式。

RESTful 架構

  1. 每個URL 代表一種資源;
  2. 客戶端和服務器之間,傳遞這種資源的某種表現層;
  3. 客戶端通過四個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面試題,穩準狠
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章