百度大牛總結(jié)十條Python面試題陷阱,看看你是否會(huì)中招
每年的3-4月份是跳槽的高峰期,無論是應(yīng)聘Python web開發(fā),爬蟲工程師,或是數(shù)據(jù)分析,還是自動(dòng)化運(yùn)維,都涉及到一些基礎(chǔ)的知識(shí)!我挑了一些Python的基礎(chǔ)面試題,看看你能不能的答上來,也許面試的同學(xué)用的著!
問題1:請(qǐng)問如何修改以下Python代碼,使得下面的代碼調(diào)用類A的show方法?
答:這道題的考點(diǎn)是類繼承,只要通過__class__ 方法指定類對(duì)象就可以了。補(bǔ)充的代碼如下:
問題2:請(qǐng)問如何修改以下Python代碼,使得代碼能夠運(yùn)行?
答:此題考察得是方法對(duì)象,為了能讓對(duì)象實(shí)例能被直接調(diào)用,需要實(shí)現(xiàn) __call__ 方法,補(bǔ)充代碼如下:
問題3:下面這段代碼的輸出是什么?
答:
此題考察的是new和init的用法,使用 __new__ 方法,可以決定返回那個(gè)對(duì)象,也就是創(chuàng)建對(duì)象之前調(diào)用的,這個(gè)常見于于設(shè)計(jì)模式的單例、工廠模式。__init__ 是創(chuàng)建對(duì)象是調(diào)用的。
問題4:下面這段代碼輸出什么?
答:
此題考察的是列表和字典的生成。
問題5:下面這段代碼輸出什么?
答:
此題考察全局變量和局部變量。num 不是個(gè)全局變量,所以每個(gè)函數(shù)都得到了自己的 num 拷貝,如果你想修改 num ,則必須用 global 關(guān)鍵字聲明。比如下面這樣
問題6:如何使用一行代碼交換兩個(gè)變量值?
答:
問題7:如何添加代碼,使得沒有定義的方法都調(diào)用mydefault方法?
答:
此題的考的是Python的默認(rèn)方法, 只有當(dāng)沒有定義的方法調(diào)用時(shí),才會(huì)調(diào)用方法 __getattr__。當(dāng) fn1 方法傳入?yún)?shù)時(shí),我們可以給 mydefault 方法增加一個(gè) *args 不定參數(shù)來兼容。
問題8:一個(gè)包里有三個(gè)模塊,mod1.py , mod2.py , mod3.py ,但使用 from demopack import * 導(dǎo)入模塊時(shí),如何保證只有 mod1 、 mod3 被導(dǎo)入了。
答:在包中增加 __init__.py 文件,并在文件中增加:
問題9:寫一個(gè)函數(shù),接收整數(shù)參數(shù) n ,返回一個(gè)函數(shù),函數(shù)返回n和參數(shù)的積。
答:
問題10:請(qǐng)問下面的代碼有什么隱患?
答:由于變量str是個(gè)不可變對(duì)象,每次迭代,python都會(huì)生成新的str對(duì)象來存儲(chǔ)新的字符串,num越大,創(chuàng)建的str對(duì)象越多,內(nèi)存消耗越大。