學(xué)會了Python技術(shù)后,同學(xué)們接下來面臨的第一個問題就是面試找工作,很多面試題都是要提前有所準(zhǔn)備的,小編下面就為大家詳細(xì)的介紹一下Python經(jīng)典面試題,希望能夠幫助到大家。
Python培訓(xùn)分享:Python經(jīng)典面試題!請看下文:
問題1:
閱讀下面的代碼,寫出A0,A1至An的最終值:
A0 = dict(zip(("a","b","c","d","e"),(1,2,3,4,5)))
A1 = range(10)
A2 = [i for i in A1 if i in A0]
A3 = [A0[s] for s in A0]
A4 = [i for i in A1 if i in A3]
A5 = {i:i*i for i in A1}
A6 = [[i,i*i] for i in A1]
答案:
A0 = {"a": 1, "c": 3, "b": 2, "e": 5, "d": 4}
A1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
A2 = []
A3 = [1, 3, 2, 5, 4]
A4 = [1, 2, 3, 4, 5]
A5 = {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}
A6 = [[0, 0], [1, 1], [2, 4], [3, 9], [4, 16], [5, 25], [6, 36], [7, 49], [8, 64], [9, 81]]
問題2:
如何管理不同版本的代碼?
可以向面試官概述下日常工作中是如何使用Git的,或者其他你喜歡的工具也可以,比如我偏向于使用Git作為版本控制系統(tǒng)(VCS),但還有其他的選擇,比如subversion(SVN)。
問題3:
下面代碼會輸出什么?
def f(x,l=[]):
for i in range(x):
l.append(i*i)
print l
f(2)
f(3,[3,2,1])
f(3)
答案:
[0, 1]
[3, 2, 1, 0, 1, 4]
[0, 1, 0, 1, 4]
問題4:
下面這些是什么意思?<@classmethod, @staticmethod, @property?>
答案:
這些都是裝飾器(decorator)。裝飾器是一種特殊的函數(shù),要么接受函數(shù)作為輸入?yún)?shù),并返回一個函數(shù),要么接受一個類作為輸入?yún)?shù),并返回一個類。@標(biāo)記是語法糖(syntactic sugar),可以讓你以簡單易讀得方式裝飾目標(biāo)對象。
問題5:
簡要描述Python的垃圾回收機制(garbage collection)?
這里能說的很多。你應(yīng)該提到下面幾個主要的點:
1、Python在內(nèi)存中存儲了每個對象的引用計數(shù)(reference count)。如果計數(shù)值變成0,那么相應(yīng)的對象就會小時,分配給該對象的內(nèi)存就會釋放出來用作他用。
2、偶爾也會出現(xiàn)引用循環(huán)(reference cycle)。垃圾回收器會定時尋找這個循環(huán),并將其回收。舉個例子,假設(shè)有兩個對象o1和o2,而且符合o1.x==o2和o2.x==o1這兩個條件。如果o1和o2沒有其他代碼引用,那么它們就不應(yīng)該繼續(xù)存在。但它們的引用計數(shù)都是1。
3、Python中使用了某些啟發(fā)式算法(heuristics)來加速垃圾回收。例如,越晚創(chuàng)建的對象更有可能被回收。對象被創(chuàng)建之后,垃圾回收器會分配它們所屬的代(generation)。每個對象都會被分配一個代,而被分配更年輕代的對象是優(yōu)先被處理的。
問題6:
你有實施過個人項目嗎?
如果做過個人項目,這說明從更新自己的技能水平方面來看,你愿意比最低要求付出更多的努力。如果你有維護(hù)的個人項目,工作之外也堅持編碼,那么你的雇主就更可能把你視作為會增值的資產(chǎn)。即使他們不問這個問題,談?wù)勥@個話題也很有幫助。
以上就是為大家介紹的“Python經(jīng)典面試題”內(nèi)容,希望能幫助到正在面試找工作的同學(xué)們,學(xué)習(xí)Python離人工智能更近一步,學(xué)習(xí)Python未來可期,更多Python相關(guān)的內(nèi)容盡在千鋒教育培訓(xùn)機構(gòu),敬請關(guān)注!