最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python工程師面試題 與Python Web相關(guān)

 更新時(shí)間:2021年09月01日 11:51:33   作者:劉元濤  
這篇文章主要為大家分享了Python工程師面試題,面試題的內(nèi)容主要與Python Web相關(guān),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文為大家分享的Python工程師面試題主要與Python Web相關(guān),供大家參考,具體內(nèi)容如下

1、解釋一下 WSGI 和 FastCGI 的關(guān)系?

CGI全稱是“公共網(wǎng)關(guān)接口”(CommonGateway Interface),HTTP服務(wù)器與你的或其它機(jī)器上的程序進(jìn)行“交談”的一種工具,其程序須運(yùn)行在網(wǎng)絡(luò)服務(wù)器上?!GI可以用任何一種語言編寫,只要這種語言具有標(biāo)準(zhǔn)輸入、輸出和環(huán)境變量。如php,perl,tcl等。
FastCGI像是一個(gè)常駐(long-live)型的CGI,它可以一直執(zhí)行著,只要激活后,不會(huì)每次都要花費(fèi)時(shí)間去fork一次(這是CGI最為人詬病的fork-and-execute模式)。它還支持分布式的運(yùn)算, 即 FastCGI 程序可以在網(wǎng)站服務(wù)器以外的主機(jī)上執(zhí)行并且接受來自其它網(wǎng)站服務(wù)器來的請求。
FastCGI是語言無關(guān)的、可伸縮架構(gòu)的CGI開放擴(kuò)展,其主要行為是將CGI解釋器進(jìn)程保持在內(nèi)存中并因此獲得較高的性能。眾所周知,CGI解釋器的反復(fù)加載是CGI性能低下的主要原因,如果CGI解釋器保持在內(nèi)存中并接受FastCGI進(jìn)程管理器調(diào)度,則可以提供良好的性能、伸縮性、Fail- Over特性等等。
WSGI的全稱為: PythonWeb Server Gateway Interface v1.0 (Python Web 服務(wù)器網(wǎng)關(guān)接口),
它是 Python 應(yīng)用程序和 WEB 服務(wù)器之間的一種接口。
它的作用,類似于FCGI 或 FASTCGI 之類的協(xié)議的作用。
WSGI 的目標(biāo),是要建立一個(gè)簡單的普遍適用的服務(wù)器與 WEB 框架之間的接口。
Flup就是使用 Python 語言對 WSGI 的一種實(shí)現(xiàn),是可以用于 Python 的應(yīng)用開發(fā)中的一種工具或者說是一種庫。
Spawn-fcgi是一個(gè)小程序,這個(gè)程序的作用是管理fast-cgi進(jìn)程,那么管理wsgi進(jìn)程也是沒有問題的,功能和php-fpm類似。
故,簡單地說,WSGI和FastCGI都是一種CGI,用于連接WEB服務(wù)器與應(yīng)用程序,而WSGI專指Python應(yīng)用程序。而flup是WSGI的一種實(shí)現(xiàn),Spawn-fcgi是用于管理flup進(jìn)程的一個(gè)工具,可以啟動(dòng)多個(gè)wsgi進(jìn)程,并管理它們。

2、解釋一下 Django 和 Tornado 的關(guān)系、差別

Django源自一個(gè)在線新聞 Web站點(diǎn),于 2005 年以開源的形式被釋放出來。
Django 框架的核心組件有:
用于創(chuàng)建模型的對象關(guān)系映射為最終用戶設(shè)計(jì)的完美管理界面一流的 URL 設(shè)計(jì)設(shè)計(jì)者友好的模板語言緩存系統(tǒng)等等
它鼓勵(lì)快速開發(fā),并遵循MVC設(shè)計(jì)。Django遵守 BSD版權(quán),最新發(fā)行版本是Django
1.4,于2012年03月23日發(fā)布.Django的主要目的是簡便、快速的開發(fā)數(shù)據(jù)庫驅(qū)動(dòng)的網(wǎng)站。它強(qiáng)調(diào)代碼復(fù)用,多個(gè)組件可以很方便的以“插件”形式服務(wù)于整個(gè)框架,Django有許多功能強(qiáng)大的第三方插件,你甚至可以很方便的開發(fā)出自己的工具包。這使得Django具有很強(qiáng)的可擴(kuò)展性。它還強(qiáng)調(diào)快速開發(fā)和DRY(Do Not RepeatYourself)原則。
Tornado是 FriendFeed使用的可擴(kuò)展的非阻塞式 web 服務(wù)器及其相關(guān)工具的開源版本。這個(gè) Web 框架看起來有些像 web.py 或者 Google 的 webapp,不過為了能有效利用非阻塞式服務(wù)器環(huán)境,這個(gè) Web 框架還包含了一些相關(guān)的有用工具和優(yōu)化。
Tornado 和現(xiàn)在的主流 Web 服務(wù)器框架(包括大多數(shù)Python 的框架)有著明顯的區(qū)別:它是非阻塞式服務(wù)器,而且速度相當(dāng)快。得利于其 非阻塞的方式和對epoll的運(yùn)用,Tornado 每秒可以處理數(shù)以千計(jì)的連接,這意味著對于實(shí)時(shí) Web服務(wù)來說,Tornado 是一個(gè)理想的 Web 框架。我們開發(fā)這個(gè) Web 服務(wù)器的主要目的就是為了處理 FriendFeed 的實(shí)時(shí)功能 ——在 FriendFeed 的應(yīng)用里每一個(gè)活動(dòng)用戶都會(huì)保持著一個(gè)服務(wù)器連接。(關(guān)于如何擴(kuò)容 服務(wù)器,以處理數(shù)以千計(jì)的客戶端的連接的問題。

3、解釋下django-debug-toolbar的使用

使用django開發(fā)站點(diǎn)時(shí),可以使用django-debug-toolbar來進(jìn)行調(diào)試。在settings.py中添加'debug_toolbar.middleware.DebugToolbarMiddleware'到項(xiàng)目的MIDDLEWARE_CLASSES 內(nèi)。

4、解釋下Django使用redis緩存服務(wù)器

為了能在Django中使用redis,還需要安裝redis for Django的插件。然后在Django的settings中配置了?,F(xiàn)在連接和配置都已經(jīng)完成了,接下來是一個(gè)簡單的例子:

from django.conf import settings 
from django.core.cache import cache 
#read cache user id 
def read_from_cache(self, user_name): 
  key = 'user_id_of_'+user_name 
  value = cache.get(key) 
  if value == None: 
    data = None 
  else: 
    data = json.loads(value) 
  return data 
#write cache user id 
def write_to_cache(self, user_name): 
  key = 'user_id_of_'+user_name 
  cache.set(key, json.dumps(user_name), settings.NEVER_REDIS_TIMEOUT) 

5、如何進(jìn)行Django單元測試

Django的單元測試使用python的unittest模塊,這個(gè)模塊使用基于類的方法來定義測試。類名為django.test.TestCase,繼承于python的unittest.TestCase。

from django.test import TestCase 
from myapp.models import Animal 
  
class AnimalTestCase(TestCase): 
  def setUp(self): 
    Animal.objects.create(name="lion", sound="roar") 
    Animal.objects.create(name="cat", sound="meow") 
  
  def test_animals_can_speak(self): 
    """Animals that can speak are correctly identified""" 
    lion = Animal.objects.get(name="lion") 
    cat = Animal.objects.get(name="cat") 
    self.assertEqual(lion.speak(), 'The lion says "roar"') 
    self.assertEqual(cat.speak(), 'The cat says "meow"') 

執(zhí)行目錄下所有的測試(所有的test*.py文件):運(yùn)行測試的時(shí)候,測試程序會(huì)在所有以test開頭的文件中查找所有的test cases(inittest.TestCase的子類),自動(dòng)建立測試集然后運(yùn)行測試。

$ python manage.py test 

執(zhí)行animals項(xiàng)目下tests包里的測試:

$ python manage.py testanimals.tests 

執(zhí)行animals項(xiàng)目里的test測試:

$ python manage.py testanimals 

單獨(dú)執(zhí)行某個(gè)test case:

$ python manage.py testanimals.tests.AnimalTestCase 

單獨(dú)執(zhí)行某個(gè)測試方法:

$ python manage.py testanimals.tests.AnimalTestCase.test_animals_can_speak 

為測試文件提供路徑:

$ python manage.py testanimals/ 

通配測試文件名:

$ python manage.py test--pattern="tests_*.py" 

啟用warnings提醒:

$ python -Wall manage.py test 

6、解釋下Http協(xié)議

HTTP是一個(gè)屬于應(yīng)用層的面向?qū)ο蟮膮f(xié)議,由于其簡捷、快速的方式,適用于分布式超媒體信息系統(tǒng)。
HTTP協(xié)議的主要特點(diǎn)可概括如下:

  • 1.支持客戶/服務(wù)器模式。
  • 2.簡單快速:客戶向服務(wù)器請求服務(wù)時(shí),只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。每種方法規(guī)定了客戶與服務(wù)器聯(lián)系的類型不同。由于HTTP協(xié)議簡單,使得HTTP服務(wù)器的程序規(guī)模小,因而通信速度很快。
  • 3.靈活:HTTP允許傳輸任意類型的數(shù)據(jù)對象。正在傳輸?shù)念愋陀蒀ontent-Type加以標(biāo)記。
  • 4.無連接:無連接的含義是限制每次連接只處理一個(gè)請求。服務(wù)器處理完客戶的請求,并收到客戶的應(yīng)答后,即斷開連接。采用這種方式可以節(jié)省傳輸時(shí)間。
  • 5.無狀態(tài):HTTP協(xié)議是無狀態(tài)協(xié)議。無狀態(tài)是指協(xié)議對于事務(wù)處理沒有記憶能力。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息,則它必須重傳,這樣可能導(dǎo)致每次連接傳送的數(shù)據(jù)量增大。另一方面,在服務(wù)器不需要先前信息時(shí)它的應(yīng)答就較快。

7、解釋下Http請求頭和常見響應(yīng)狀態(tài)碼

Accept:指瀏覽器或其他客戶可以接愛的MIME文件格式??梢愿鶕?jù)它判斷并返回適當(dāng)?shù)奈募袷健?br /> Accept-Charset:指出瀏覽器可以接受的字符編碼。英文瀏覽器的默認(rèn)值是ISO-8859-1.
Accept-Language:指出瀏覽器可以接受的語言種類,如en或en-us,指英語。
Accept-Encoding:指出瀏覽器可以接受的編碼方式。編碼方式不同于文件格式,它是為了壓縮文件并加速文件傳遞速度。瀏覽器在接收到Web響應(yīng)之后先解碼,然后再檢查文件格式。
Cache-Control:設(shè)置關(guān)于請求被代理服務(wù)器存儲的相關(guān)選項(xiàng)。一般用不到。
Connection:用來告訴服務(wù)器是否可以維持固定的HTTP連接。HTTP/1.1使用Keep-Alive為默認(rèn)值,這樣,當(dāng)瀏覽器需要多個(gè)文件時(shí)(比如一個(gè)HTML文件和相關(guān)的圖形文件),不需要每次都建立連接。
Content-Type:用來表名request的內(nèi)容類型??梢杂肏ttpServletRequest的getContentType()方法取得。
Cookie:瀏覽器用這個(gè)屬性向服務(wù)器發(fā)送Cookie。Cookie是在瀏覽器中寄存的小型數(shù)據(jù)體,它可以記載和服務(wù)器相關(guān)的用戶信息,也可以用來實(shí)現(xiàn)會(huì)話功能。

補(bǔ)充:

狀態(tài)代碼有三位數(shù)字組成,第一個(gè)數(shù)字定義了響應(yīng)的類別,且有五種可能取值:
1xx:指示信息--表示請求已接收,繼續(xù)處理
2xx:成功--表示請求已被成功接收、理解、接受
3xx:重定向--要完成請求必須進(jìn)行更進(jìn)一步的操作
4xx:客戶端錯(cuò)誤--請求有語法錯(cuò)誤或請求無法實(shí)現(xiàn)
5xx:服務(wù)器端錯(cuò)誤--服務(wù)器未能實(shí)現(xiàn)合法的請求
常見狀態(tài)代碼、狀態(tài)描述、說明:
200 OK     //客戶端請求成功
400 Bad Request  //客戶端請求有語法錯(cuò)誤,不能被服務(wù)器所理解
401 Unauthorized //請求未經(jīng)授權(quán),這個(gè)狀態(tài)代碼必須和WWW-Authenticate報(bào)頭域一起使用
403 Forbidden  //服務(wù)器收到請求,但是拒絕提供服務(wù)
404 Not Found  //請求資源不存在,eg:輸入了錯(cuò)誤的URL
500 Internal Server Error //服務(wù)器發(fā)生不可預(yù)期的錯(cuò)誤
503 Server Unavailable  //服務(wù)器當(dāng)前不能處理客戶端的請求,一段時(shí)間后可能恢復(fù)正常
eg:HTTP/1.1 200 OK (CRLF)

希望通過本文能夠幫助大家順順利利通過Python面試。

相關(guān)文章

  • Jupyter notebook中5個(gè)有趣的魔法命令分享

    Jupyter notebook中5個(gè)有趣的魔法命令分享

    眾?所周知,Jupyter notebook是一個(gè)交互式的Python shell,也就是IPython的封裝版,非常適合用來進(jìn)行數(shù)據(jù)分析和機(jī)器學(xué)習(xí)。本文為大家整理了Jupyter notebook中5個(gè)有趣的魔法命令,感興趣的可以了解一下
    2022-07-07
  • 高性能web服務(wù)器框架Tornado簡單實(shí)現(xiàn)restful接口及開發(fā)實(shí)例

    高性能web服務(wù)器框架Tornado簡單實(shí)現(xiàn)restful接口及開發(fā)實(shí)例

    Tornado和現(xiàn)在的主流Web服務(wù)器框架(包括大多數(shù)Python的框架)有著明顯的區(qū)別:它是非阻塞式服務(wù)器,而且速度相當(dāng)快。得利于其 非阻塞的方式和對epoll的運(yùn)用,Tornado每秒可以處理數(shù)以千計(jì)的連接,這意味著對于實(shí)時(shí)Web服務(wù)來說,Tornado是一個(gè)理想的Web框架。
    2014-07-07
  • Python實(shí)現(xiàn)刪除重復(fù)視頻文件的方法詳解

    Python實(shí)現(xiàn)刪除重復(fù)視頻文件的方法詳解

    這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)刪除重復(fù)視頻文件功能,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Python有一定幫助,需要的可以參考一下
    2022-10-10
  • OpenCV-Python實(shí)現(xiàn)通用形態(tài)學(xué)函數(shù)

    OpenCV-Python實(shí)現(xiàn)通用形態(tài)學(xué)函數(shù)

    本文將結(jié)合實(shí)例代碼,介紹OpenCV-Python實(shí)現(xiàn)通用形態(tài)學(xué)函數(shù),包含開運(yùn)算,閉運(yùn)算等復(fù)雜的形態(tài)學(xué)運(yùn)算,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-06-06
  • Python+Pygame實(shí)戰(zhàn)之24點(diǎn)游戲的實(shí)現(xiàn)

    Python+Pygame實(shí)戰(zhàn)之24點(diǎn)游戲的實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了如何利用Python和Pygame實(shí)現(xiàn)24點(diǎn)小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Python實(shí)現(xiàn)FTP上傳文件或文件夾實(shí)例(遞歸)

    Python實(shí)現(xiàn)FTP上傳文件或文件夾實(shí)例(遞歸)

    本篇文章主要介紹了Python實(shí)現(xiàn)FTP上傳文件或文件夾實(shí)例(遞歸),具有一定的參考價(jià)值,有興趣的可以了解一下。
    2017-01-01
  • 用Python爬取某乎手機(jī)APP數(shù)據(jù)

    用Python爬取某乎手機(jī)APP數(shù)據(jù)

    最近爬取的數(shù)據(jù)都是網(wǎng)頁端,今天來教大家如何爬取手機(jī)端app數(shù)據(jù)(本文以ios蘋果手機(jī)為例,其實(shí)安卓跟ios差不多)! 本文將以『某乎』為實(shí)戰(zhàn)案例,手把手教你從配置到代碼一步一步的爬取App數(shù)據(jù),需要的朋友可以參考下
    2021-06-06
  • 學(xué)習(xí)python可以干什么

    學(xué)習(xí)python可以干什么

    在本文里我們給大家分享了關(guān)于學(xué)習(xí)python的前途以及告訴大家可以做什么,正在學(xué)習(xí)PYTHON的朋友們學(xué)習(xí)下。
    2019-02-02
  • python熱力圖實(shí)現(xiàn)的完整實(shí)例

    python熱力圖實(shí)現(xiàn)的完整實(shí)例

    熱力圖的使用場景有描述數(shù)據(jù)在空間的密集程度,常見有城市熱力圖、區(qū)域熱力圖,描述多個(gè)變量之間相關(guān)性高低程度,這篇文章主要給大家介紹了關(guān)于python熱力圖實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • Python如何使用Scapy實(shí)現(xiàn)端口探測

    Python如何使用Scapy實(shí)現(xiàn)端口探測

    Scapy 是一款使用純Python編寫的跨平臺網(wǎng)絡(luò)數(shù)據(jù)包操控工具,它能夠處理和嗅探各種網(wǎng)絡(luò)數(shù)據(jù)包,本文主要介紹了Python如何使用使用Scapy實(shí)現(xiàn)端口探測,有需要的可以參考下
    2023-10-10

最新評論

彭州市| 花莲县| 清水县| 遂昌县| 白山市| 奉化市| 深水埗区| 民和| 镇原县| 吉水县| 阳谷县| 玉门市| 衡阳县| 镇原县| 尚志市| 汝南县| 松江区| 吴川市| 正宁县| 正镶白旗| 花垣县| 彝良县| 泉州市| 陆丰市| 屯留县| 舒城县| 双峰县| 怀化市| 灵武市| 隆子县| 洮南市| 石楼县| 大洼县| 通河县| 清徐县| 本溪市| 岢岚县| 保亭| 库尔勒市| 西吉县| 桂阳县|