2018年3月Python面試總結(jié)

本人2月份由于個人原因離開了深圳,也同樣離開了在深圳的公司,后來面試了好多家公司掀抹,基本都是已經(jīng)融資的虐拓,下面給小伙伴們分享一下心俗,我在這期間遇到的面試題,希望能給小伙伴在未來找工作或者學(xué)習(xí)中帶來一絲的幫助蓉驹。

1城榛,nginx與uwsgi是如何通信的?

我們知道态兴,nginx把瀏覽器等發(fā)過來的請求通過proxy_pass或者uwsgi_pass轉(zhuǎn)發(fā)給上游的web application進(jìn)行處理狠持,然后把處理的結(jié)果發(fā)送給瀏覽器。uwsgi_pass命令的處理函數(shù)為ngx_http_uwsgi_handler,也就是說瞻润,當(dāng)有請求到達(dá)配置uwsgi_pass的location時喘垂,會調(diào)用ngx_http_uwsgi_handler方法,而該方法是整個uwsgi事件處理的入口方法绍撞。下面來看該方法:

static ngx_int_t ngx_http_uwsgi_handler(ngx_http_request_t *r)
{
    ngx_http_upstream_t *u;
    ngx_http_uwsgi_loc_conf_t   *uwcf;
    uwcf = ngx_http_get_module_loc_conf(r, ngx_http_uwsgi_module);
    u = r->upstream;
    ……
    u->create_request = ngx_http_uwsgi_create_request;//根據(jù)wsgi協(xié)議創(chuàng)建請求包體
    u->process_header = ngx_http_uwsgi_process_status_line;//根據(jù)wsgi協(xié)議解析uwsgi發(fā)送來的頭部
    ……
    rc = ngx_http_read_client_request_body(r, ngx_http_upstream_init);//從瀏覽器讀取body數(shù)據(jù)
    ……
}

2正勒,nginx與uwsgi是多線程還是多進(jìn)程 ?

  • uwsgi是用c語言寫的一個webserver,可以啟動多個進(jìn)程傻铣,進(jìn)程里面可以啟動多個線程來服務(wù)章贞。進(jìn)程分為主進(jìn)程和worker進(jìn)程,worker里面可以有多個線程非洲。
  • Nginx會按需同時運行多個進(jìn)程:一個主進(jìn)程(master)和幾個工作進(jìn)程(worker)鸭限,配置了緩存時還會有緩存加載器進(jìn)程(cache loader)和緩存管理器進(jìn)程(cache manager)等蜕径。Nginx主要通過“共享內(nèi)存”的機(jī)制實現(xiàn)進(jìn)程間通信。主進(jìn)程以root用戶身份運行败京,而worker兜喻、cache loader和cache manager均應(yīng)以非特權(quán)用戶身份運行。
  • 在工作方式上喧枷,Nginx分為單工作進(jìn)程和多工作進(jìn)程兩種模式虹统。在單工作進(jìn)程模式下,除主進(jìn)程外隧甚,還有一個工作進(jìn)程车荔,工作進(jìn)程是單線程的;在多工作進(jìn)程模式下戚扳,每個工作進(jìn)程包含多個線程忧便。Nginx默認(rèn)為單工作進(jìn)程模式。

3帽借,寫一個連表查詢

select * from erp as o left join a as p on o.id = p.id where o.price > 20;

4珠增,用Django的ORM寫一個連表查詢

Entry.objects.filter(blog__name='Beatles Blog')

5,寫一個單例模式

class Singleton(object):
    def __new__(cls, *args, **kwargs):
        if not hasattr(cls, 'happle'):
            cls.happle = super(Singleton, cls).__new__(cls, *args,**kwargs)
        return cls.happle

class SingleSpam(Singleton):
    def __init__(self,s):
        self.s = s

    def __str__(self):
        return self.s

s1 = SingleSpam('spam')
print id(s1) # 4487315984
s2 = SingleSpam('spa')
print id(s2) # 4487315984

6,請你說出幾種常見的反爬策略?

1砍艾,監(jiān)控user-agent

2蒂教,監(jiān)控ip

3,登錄才能訪問

4脆荷,nginx的加密

7凝垛,請說一下線程與進(jìn)程的區(qū)別

  • 進(jìn)程就是包換上下文切換的程序執(zhí)行時間總和 = CPU加載上下文+CPU執(zhí)行+CPU保存上下文
  • 進(jìn)程和線程都是一個時間段的描述,是CPU工作時間段的描述蜓谋,不過是顆粒大小不同梦皮。

8,下面的程序 會是什么情況桃焕?答案會報參數(shù)錯誤剑肯。

class A(object):
    def run(self,a):
        return a

class B(A):
    def run(self,a,b):
        return b

B().run(1)

django orm 常用查詢篩選(自己新增)

大于、大于等于

__gt  大于
__gte  大于等于

User.objects.filter(age__gt=10)    // 查詢年齡大于10歲的用戶
User.objects.filter(age__gte=10)  // 查詢年齡大于等于10歲的用戶

小于观堂、小于等于

__lt  小于
__lte 小于等于

User.objects.filter(age__lt=10)     // 查詢年齡小于10歲的用戶
User.objects.filter(age__lte=10)   // 查詢年齡小于等于10歲的用戶

in

__in

查詢年齡在某一范圍的用戶
User.objects.filter(age__in=[10, 20, 30])

like

__exact        精確等于 like 'aaa'
__iexact       精確等于 忽略大小寫 ilike 'aaa'
__contains     包含 like '%aaa%'
__icontains    包含 忽略大小寫 ilike '%aaa%'让网,但是對于sqlite來說,contains的作用效果等同于icontains师痕。

is null / is not null

__isnull  判空

User.objects.filter(username__isnull=True)    // 查詢用戶名為空的用戶
User.objects.filter(username__isnull=False)  // 查詢用戶名不為空的用戶

不等于/不包含于

User.objects.filter().excute(age=10)    // 查詢年齡不為10的用戶
User.objects.filter().excute(age__in=[10, 20])  // 查詢年齡不為在 [10, 20] 的用戶

9,put與post的區(qū)別?

POST
用于提交請求溃睹,可以更新或者創(chuàng)建資源,是非冪等的
舉個例子七兜,在我們的支付系統(tǒng)中丸凭,一個api的功能是創(chuàng)建收款金額二維碼,它和金額相關(guān),每個用戶可以有多個二維碼惜犀,如果連續(xù)調(diào)用則會創(chuàng)建新的二維碼铛碑,這個時候就用POST


PUT
用于向指定的URI傳送更新資源,是冪等的
還是那個例子虽界,用戶的賬戶二維碼只和用戶關(guān)聯(lián)汽烦,而且是一一對應(yīng)的關(guān)系,此時這個api就可以用PUT莉御,因為每次調(diào)用它撇吞,都將刷新用戶賬戶二維碼

10,http有幾種方式?

OPTIONS:返回服務(wù)器針對特定資源所支持的HTTP請求方法。也可以利用向Web服務(wù)器發(fā)送'*'的請求來測試服務(wù)器的功能性礁叔。

HEAD:向服務(wù)器索要與GET請求相一致的響應(yīng)牍颈,只不過響應(yīng)體將不會被返回。這一方法可以在不必傳輸整個響應(yīng)內(nèi)容的情況下琅关,就可以獲取包含在響應(yīng)消息頭中的元信息煮岁。

GET:向特定的資源發(fā)出請求。

POST:向指定資源提交數(shù)據(jù)進(jìn)行處理請求(例如提交表單或者上傳文件)涣易。數(shù)據(jù)被包含在請求體中画机。POST請求可能會導(dǎo)致新的資源的創(chuàng)建和/或已有資源的修改。

PUT:向指定資源位置上傳其最新內(nèi)容新症。

DELETE:請求服務(wù)器刪除Request-URI所標(biāo)識的資源步氏。

TRACE:回顯服務(wù)器收到的請求,主要用于測試或診斷徒爹。

CONNECT:HTTP/1.1協(xié)議中預(yù)留給能夠?qū)⑦B接改為管道方式的代理服務(wù)器荚醒。

一次查詢1億數(shù)據(jù)應(yīng)該怎么優(yōu)化呢?

https://jingyan.baidu.com/article/e75057f2c413e8ebc91a89b0.html


以上答案都是本人課后查找的瀑焦,水平有限腌且,僅供參考梗肝,如果發(fā)現(xiàn)錯誤請及時聯(lián)系作者榛瓮,謝謝童谒!共同進(jìn)步M谘溅蛉!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末涌萤,一起剝皮案震驚了整個濱河市上渴,隨后出現(xiàn)的幾起案子瘫絮,更是在濱河造成了極大的恐慌嘱吗,老刑警劉巖勺像,帶你破解...
    沈念sama閱讀 221,406評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件顷级,死亡現(xiàn)場離奇詭異凫乖,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評論 3 398
  • 文/潘曉璐 我一進(jìn)店門帽芽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來删掀,“玉大人,你說我怎么就攤上這事导街∨幔” “怎么了?”我有些...
    開封第一講書人閱讀 167,815評論 0 360
  • 文/不壞的土叔 我叫張陵搬瑰,是天一觀的道長款票。 經(jīng)常有香客問我,道長泽论,這世上最難降的妖魔是什么艾少? 我笑而不...
    開封第一講書人閱讀 59,537評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮翼悴,結(jié)果婚禮上姆钉,老公的妹妹穿的比我還像新娘。我一直安慰自己抄瓦,他們只是感情好潮瓶,可當(dāng)我...
    茶點故事閱讀 68,536評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著钙姊,像睡著了一般毯辅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上煞额,一...
    開封第一講書人閱讀 52,184評論 1 308
  • 那天思恐,我揣著相機(jī)與錄音,去河邊找鬼膊毁。 笑死胀莹,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的婚温。 我是一名探鬼主播描焰,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼栅螟!你這毒婦竟也來了荆秦?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,668評論 0 276
  • 序言:老撾萬榮一對情侶失蹤力图,失蹤者是張志新(化名)和其女友劉穎步绸,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體吃媒,經(jīng)...
    沈念sama閱讀 46,212評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡瓤介,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,299評論 3 340
  • 正文 我和宋清朗相戀三年吕喘,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片刑桑。...
    茶點故事閱讀 40,438評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡兽泄,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出漾月,到底是詐尸還是另有隱情病梢,我是刑警寧澤,帶...
    沈念sama閱讀 36,128評論 5 349
  • 正文 年R本政府宣布梁肿,位于F島的核電站蜓陌,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏吩蔑。R本人自食惡果不足惜钮热,卻給世界環(huán)境...
    茶點故事閱讀 41,807評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望烛芬。 院中可真熱鬧隧期,春花似錦、人聲如沸赘娄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽遣臼。三九已至性置,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間揍堰,已是汗流浹背鹏浅。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留屏歹,地道東北人隐砸。 一個月前我還...
    沈念sama閱讀 48,827評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像蝙眶,于是被迫代替她去往敵國和親季希。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,446評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 第一章 Nginx簡介 Nginx是什么 沒有聽過Nginx械馆?那么一定聽過它的“同行”Apache吧胖眷!Ngi...
    JokerW閱讀 32,700評論 24 1,002
  • 1. Nginx的模塊與工作原理 Nginx由內(nèi)核和模塊組成武通,其中霹崎,內(nèi)核的設(shè)計非常微小和簡潔,完成的工作也非常簡單...
    rosekissyou閱讀 10,221評論 5 124
  • Nginx簡介 解決基于進(jìn)程模型產(chǎn)生的C10K問題,請求時即使無狀態(tài)連接如web服務(wù)都無法達(dá)到并發(fā)響應(yīng)量級一萬的現(xiàn)...
    魏鎮(zhèn)坪閱讀 2,007評論 0 9
  • I/O模型Nginx介紹Nginx的安裝和目錄結(jié)構(gòu)Nginx的配置Nginx的編譯安裝 一冶忱、I/O模型 (一)I/...
    哈嘍別樣閱讀 895評論 0 4
  • 河北省唐山市地方政府把地方的各個路橋收費站取消了。取消路橋收費站這事可謂大快人心派诬。 但是收費站的工作人員就不樂意了...
    小考拉俱樂部閱讀 654評論 0 0