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

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

第1題: Flask中的請求上下文和應用上下文是什麼?

  • 在Flask中處理請求時,就會產生一個 「請求上下文」 對象,整個請求的處理過程,都會在這個上下文對象中進行。 這保證了請求的處理過程不被幹擾。 包含了和請求處理相關的信息,同時Flask還根據werkzeug.local模塊中實現的一種數據結構LocalStack用來存儲「請求上下文」對象。
  • 「應用上下文」 也是一個上下文對象,可使用with語句構造一個上下文環境,它也實現了push、pop等方法。 「應用上下文」 的構造函數也和 「請求上下文」 相似,都有app、url_adapter等屬性。「應用上下文」 存在的一個主要功能就是肯定請求所在的應用。

第2題:django中間件的使用?

django在中間件中預設了6個方法,這6個方法區別在於不一樣的階段執行,對輸入或輸出進行干預,方法以下:html

#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 年以開源的形式被釋放出來。python

Django 框架的核心組件有:c++

用於建立模型的對象關係映射爲最終用戶設計的完美管理界面一流的 URL 設計設計者友好的模板語言緩存系統等等程序員

它鼓勵快速開發,並遵循MVC設計。web

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 的應用裏每個活動用戶都會保持着一個服務器鏈接。(關於如何擴容 服務器,以處理數以千計的客戶端的鏈接的問題。django

第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種編程語言, 用自學的經歷告訴你,學編程就找夢想橡皮擦編程

歡迎關注她的公衆號,搜索— 非本科程序員json

相關文章
相關標籤/搜索