分享幾道你可能遇到的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è)可以說是一道常見的簡單算法題了,關(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)用的思想。
三、有如下代碼,請寫出輸出
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ù),請寫出輸出,并寫出正確寫法:
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ù)。
簡答題
- 簡述py2和py3的區(qū)別
- python的垃圾回收機(jī)制
- python中多線程的方法,局限,以及有什么其他方式進(jìn)行并發(fā)處理
- 簡述epoll、select、poll三種模型
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
基于Python編寫一個(gè)有趣的進(jìn)程勾選器(Process?Selector)
本文主要介紹了如何利用Python編寫一個(gè)有趣的進(jìn)程勾選器,可以在Checklistbox中列出系統(tǒng)中正在運(yùn)行的進(jìn)程的名稱和PID,并允許用戶選擇進(jìn)程并將其保存到文本文件中,需要的可以參考一下2023-05-05對(duì)pandas進(jìn)行數(shù)據(jù)預(yù)處理的實(shí)例講解
下面小編就為大家分享一篇對(duì)pandas進(jìn)行數(shù)據(jù)預(yù)處理的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-04-04在Python中使用sort()方法進(jìn)行排序的簡單教程
這篇文章主要介紹了在Python中使用sort()方法進(jìn)行排序的簡單教程,是Python學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-05-05Python實(shí)現(xiàn)的下載8000首兒歌的代碼分享
這篇文章主要介紹了Python實(shí)現(xiàn)的下載8000首兒歌的代碼分享,本文直接給出實(shí)現(xiàn)代碼,下載的是有伴網(wǎng)的資源,需要的朋友可以參考下2014-11-114種Python基于字段的不使用元類的ORM實(shí)現(xiàn)方法總結(jié)
在 Python 中,ORM(Object-Relational Mapping)是一種將對(duì)象和數(shù)據(jù)庫之間的映射關(guān)系進(jìn)行轉(zhuǎn)換的技術(shù),本文為大家整理了4種不使用元類的簡單ORM實(shí)現(xiàn)方式,需要的可以參考下2023-12-12