python面試題庫_v4.0【Python Web篇】

Python Web是python程序員的一大就業(yè)方向,以下是針對這一方向的面試題總結(jié)佳魔。

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

CGI全稱是"公共網(wǎng)關(guān)接口"(CommonGateway Interface),HTTP服務(wù)器與你的或其他機(jī)器上的程序進(jìn)行"交談"的一種工具,其程序必須運(yùn)行在網(wǎng)絡(luò)服務(wù)器上吃引。CGI可以用任何一種語言編寫,只要這種語言具有標(biāo)準(zhǔn)輸入刽锤、輸出和環(huán)境變量镊尺。
FastCGI像是一個(gè)常駐型的CGI,它可以一直執(zhí)行著,只要激活后并思,不會每次都要花時(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è)工具委煤,可以啟動多個(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)。
Django的主要目的是簡便照激、快速的開發(fā)數(shù)據(jù)庫驅(qū)動的網(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è)活動用戶都會保持一個(gè)服務(wù)器連接。

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中配置。
安裝

pip install django-redis

配置

CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/1",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    }
}

附錄django-redis 中文文檔:http://django-redis-chs.readthedocs.io/zh_CN/latest/#

5.如何進(jìn)行Django單元測試衩椒?

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

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

HTTP是一個(gè)屬于應(yīng)用層的面向?qū)ο蟮膮f(xié)議苟弛,由于其簡捷、快速的方式阁将,適用于分布式超媒體信息系統(tǒng)膏秫。
HTTP協(xié)議的主要特點(diǎn)可概括如下:
(1).支持客戶/服務(wù)器模式
(2).簡單快速:客戶端向服務(wù)器請求服務(wù)時(shí),只需要傳送請求方法和路徑做盅。請求方法常用的有GET缤削、POST、HEAD等吹榴。每種方法規(guī)定了客戶與服務(wù)器聯(lián)系的類型不同僻他。由于HTTP服務(wù)器的程序規(guī)模小,因?yàn)橥ㄐ潘俣群芸臁?br> (3).靈活:HTTP運(yùn)行傳輸任意類型的數(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請求頭

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)容類型别厘。可以用HttpServletRequest的getContentType()方法取得拥诡。
Cookie:瀏覽器用這個(gè)屬性向服務(wù)器發(fā)送Cookie触趴。Cookie是在瀏覽器中寄存的小型數(shù)據(jù)體,它可以記載和服務(wù)器相關(guān)的用戶信息渴肉,也可以用來實(shí)現(xiàn)會話功能冗懦。

8.常見的響應(yīng)狀態(tài)碼

狀態(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 //客戶端請求成功
202 Accepted/接受 // 告訴客戶端請求正在被執(zhí)行,但還沒有處理完爬凑。
203 Non-Authoritative Information/非官方信息 //是表示文檔被正常的返回徙缴,但是由于正在使用的是文檔副本所以某些響應(yīng)頭信息可能不正確。這是 HTTP 1.1中新加入的嘁信。
300 Multiple Choices/多重選擇 // 表示被請求的文檔可以在多個(gè)地方找到于样,并將在返回的文檔中列出來。如果服務(wù)器有首選設(shè)置潘靖,首選項(xiàng)將會被列于定位響應(yīng)頭信息中穿剖。
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ù)正常

9.你是如何進(jìn)行項(xiàng)目上線部署的,簡單談一下步驟

參考我的這篇文章:http://www.reibang.com/p/9c83916b404c

10.在Django項(xiàng)目中你有沒有用到cookie,是怎么使用的啄刹?

參考我的這篇文章:http://www.reibang.com/p/c8728ab807b5

未完待續(xù)......

heike1.jpg
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市凄贩,隨后出現(xiàn)的幾起案子誓军,更是在濱河造成了極大的恐慌,老刑警劉巖疲扎,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件昵时,死亡現(xiàn)場離奇詭異,居然都是意外死亡椒丧,警方通過查閱死者的電腦和手機(jī)壹甥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來壶熏,“玉大人句柠,你說我怎么就攤上這事“艏伲” “怎么了溯职?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長帽哑。 經(jīng)常有香客問我谜酒,道長,這世上最難降的妖魔是什么妻枕? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任僻族,我火速辦了婚禮粘驰,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鹰贵。我一直安慰自己晴氨,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布碉输。 她就那樣靜靜地躺著,像睡著了一般亭珍。 火紅的嫁衣襯著肌膚如雪敷钾。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天肄梨,我揣著相機(jī)與錄音阻荒,去河邊找鬼。 笑死众羡,一個(gè)胖子當(dāng)著我的面吹牛侨赡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播粱侣,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼羊壹,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了齐婴?” 一聲冷哼從身側(cè)響起油猫,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎柠偶,沒想到半個(gè)月后情妖,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡诱担,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年毡证,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蔫仙。...
    茶點(diǎn)故事閱讀 38,566評論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡料睛,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出匀哄,到底是詐尸還是另有隱情秦效,我是刑警寧澤,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布涎嚼,位于F島的核電站阱州,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏法梯。R本人自食惡果不足惜苔货,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一犀概、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧夜惭,春花似錦姻灶、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至敢会,卻和暖如春曾沈,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鸥昏。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工塞俱, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人吏垮。 一個(gè)月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓障涯,卻偏偏與公主長得像,于是被迫代替她去往敵國和親膳汪。 傳聞我的和親對象是個(gè)殘疾皇子唯蝶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評論 2 348