分享幾道你可能遇到的python面試題
本文主要給大家介紹的是關(guān)于最近在面試中遇到的幾個(gè)python面試題,分享出來供大家參考學(xué)習(xí),下面話不多說,來一起看看詳細(xì)的介紹:
一、生成斐波那契數(shù)列并取前10項(xiàng)
def func(m): n,a,b = 0,1,1 while n < m: yield a a,b = b,a+b n += 1 for one in func(10): print one
這個(gè)可以說是一道常見的簡(jiǎn)單算法題了,關(guān)鍵點(diǎn)就是理解a,b=b,a+b以及yield的作用。
二、擴(kuò)展一個(gè)列表,列表中的元素可能也包含列表
def myextend(alist): tmp = [] for one in alist: if isinstance(one,list): tmp.extend(myextend(one)) else: tmp.append(one) return tmp t = [1,2,5,[3,[],5,2,[57]],90] print t print myextend(t)
考察遞歸調(diào)用的思想。
三、有如下代碼,請(qǐng)寫出輸出
def test(x,l=[]): for o in range(x): l.append(o) print l test(3) test(1,[3,2,1]) test(3)
輸入如下:
[0,1,2] [3,2,1,0] [0,1,2,0,1,2]
可變類型作為參數(shù)在不顯示傳遞參數(shù)時(shí),每次函數(shù)調(diào)用時(shí)候都是共用的;如果傳遞了參數(shù)(比如第二種)則不會(huì)互相影響。
四、已知某列表中包含重復(fù)數(shù)據(jù),保持列表中元素第一次出現(xiàn)的順序并去重,要求復(fù)雜度為O(n)。
def fun(alist): result = [] temp = set() for o in alist: if o not in temp: result.append(o) temp.add(o) return result
考察列表、集合等常見操作的復(fù)雜度。
五、已知如下函數(shù),請(qǐng)寫出輸出,并寫出正確寫法:
z = [lambda x:x*i for i in range(3)] x = [o(2) for o in z] print x
輸出為[4,4,4]
這里主要考察python中閉包、返回值為函數(shù)時(shí)候的知識(shí)點(diǎn)。由于lambda函數(shù)共用了i變量,當(dāng)調(diào)用時(shí)候i已經(jīng)變成了2,所以輸出都是4。
改正:
def func(): def m(x): def n(y): return x * y return n return [f(one) for one in range(3)] z = func() x = [o(2) for o in z] print x
輸出[0,2,4]
六、創(chuàng)建一個(gè)類,并輸出某個(gè)屬性。如果這個(gè)屬性存在則輸出值,否則輸出這個(gè)屬性名的字符串
class Mycls(object): a = 0 def __getattr__(self,name): print name z = Mycls() print z.a,z.b
輸出為0,b。
主要考察python的反射機(jī)制,以及類相關(guān)的__getattr__方法。
注意: __getattr__方法和__getattribute__方法的區(qū)別,前者只有在屬性不存在時(shí)候調(diào)用,返回一個(gè)值或者引發(fā)異常。而后者是每次都會(huì)被調(diào)用的。
另外可以看看getattr() ,hasattr()這種內(nèi)置函數(shù)。
簡(jiǎn)答題
- 簡(jiǎn)述py2和py3的區(qū)別
- python的垃圾回收機(jī)制
- python中多線程的方法,局限,以及有什么其他方式進(jìn)行并發(fā)處理
- 簡(jiǎn)述epoll、select、poll三種模型
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
Django之第三方平臺(tái)QQ授權(quán)登錄的實(shí)現(xiàn)
本文主要介紹了Django之第三方平臺(tái)QQ授權(quán)登錄的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05
python獲取系統(tǒng)內(nèi)存占用信息的實(shí)例方法
在本篇文章里小編給大家整理的是關(guān)于python獲取系統(tǒng)內(nèi)存占用信息的實(shí)例方法,有需要的朋友們可以參考學(xué)習(xí)下。2020-07-07
Python函數(shù)默認(rèn)參數(shù)設(shè)置的具體方法
本文主要介紹了Python函數(shù)默認(rèn)參數(shù)設(shè)置,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
python multiprocessing多進(jìn)程變量共享與加鎖的實(shí)現(xiàn)
這篇文章主要介紹了python multiprocessing多進(jìn)程變量共享與加鎖的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
Python將list中的string批量轉(zhuǎn)化成int/float的方法
今天小編就為大家分享一篇Python將list中的string批量轉(zhuǎn)化成int/float的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-06-06
3分鐘看懂Python后端必須知道的Django的信號(hào)機(jī)制
這篇文章主要介紹了3分鐘看懂Python后端必須知道的Django的信號(hào)機(jī)制,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07

