分享幾道你可能遇到的python面試題
本文主要給大家介紹的是關(guān)于最近在面試中遇到的幾個python面試題,分享出來供大家參考學(xué)習(xí),下面話不多說,來一起看看詳細(xì)的介紹:
一、生成斐波那契數(shù)列并取前10項
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
這個可以說是一道常見的簡單算法題了,關(guān)鍵點就是理解a,b=b,a+b以及yield的作用。
二、擴(kuò)展一個列表,列表中的元素可能也包含列表
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ù)調(diào)用時候都是共用的;如果傳遞了參數(shù)(比如第二種)則不會互相影響。
四、已知某列表中包含重復(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ù)時候的知識點。由于lambda函數(shù)共用了i變量,當(dāng)調(diào)用時候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)建一個類,并輸出某個屬性。如果這個屬性存在則輸出值,否則輸出這個屬性名的字符串
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ū)別,前者只有在屬性不存在時候調(diào)用,返回一個值或者引發(fā)異常。而后者是每次都會被調(diào)用的。
另外可以看看getattr()
,hasattr()
這種內(nèi)置函數(shù)。
簡答題
- 簡述py2和py3的區(qū)別
- python的垃圾回收機(jī)制
- python中多線程的方法,局限,以及有什么其他方式進(jìn)行并發(fā)處理
- 簡述epoll、select、poll三種模型
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
基于Python編寫一個有趣的進(jìn)程勾選器(Process?Selector)
本文主要介紹了如何利用Python編寫一個有趣的進(jìn)程勾選器,可以在Checklistbox中列出系統(tǒng)中正在運(yùn)行的進(jìn)程的名稱和PID,并允許用戶選擇進(jìn)程并將其保存到文本文件中,需要的可以參考一下2023-05-05對pandas進(jìn)行數(shù)據(jù)預(yù)處理的實例講解
下面小編就為大家分享一篇對pandas進(jìn)行數(shù)據(jù)預(yù)處理的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-04-04在Python中使用sort()方法進(jìn)行排序的簡單教程
這篇文章主要介紹了在Python中使用sort()方法進(jìn)行排序的簡單教程,是Python學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下2015-05-054種Python基于字段的不使用元類的ORM實現(xiàn)方法總結(jié)
在 Python 中,ORM(Object-Relational Mapping)是一種將對象和數(shù)據(jù)庫之間的映射關(guān)系進(jìn)行轉(zhuǎn)換的技術(shù),本文為大家整理了4種不使用元類的簡單ORM實現(xiàn)方式,需要的可以參考下2023-12-12