python面试应急5分钟_Python面试必须要看的15个问题
Python面試必須要看的15個問題
本文由EarlGrey@編程派編譯,轉載請務必注明作者及出處。 點擊“閱讀原文”查看答案即可。
引言
想找一份Python開發工作嗎?那你很可能得證明自己知道如何使用Python。下面這些問題涉及了與Python相關的許多技能,問題的關注點主要是語言本身,不是某個特定的包或模塊。每一個問題都可以擴充為一個教程,如果可能的話。某些問題甚至會涉及多個領域。
我之前還沒有出過和這些題目一樣難的面試題,如果你能輕松地回答出來的話,趕緊去找份工作吧!
問題1
到底什么是Python?你可以在回答中與其他技術進行對比(也鼓勵這樣做)。
問題2
補充缺失的代碼def?print_directory_contents(sPath):
"""
這個函數接受文件夾的名稱作為輸入參數,
返回該文件夾中文件的路徑,
以及其包含文件夾中文件的路徑。
"""
#?補充代碼
問題3
閱讀下面的代碼,寫出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]
問題4
Python和多線程(multi-threading)。這是個好主意碼?列舉一些讓Python代碼以并行方式運行的方法。
問題5
你如何管理不同版本的代碼?
問題6
下面代碼會輸出什么:def?f(x,l=[]):
for?i?in?range(x):
l.append(i*i)
print?lf(2)f(3,[3,2,1])f(3)
問題7
“猴子補丁”(monkey patching)指的是什么?這種做法好嗎?
問題8
這兩個參數是什么意思:args,*kwargs?我們為什么要使用它們?
問題9
這些是什么意思:@classmethod, @staticmethod, @property?
問題10
閱讀下面的代碼,它的輸出結果是什么?class?A(object):
def?go(self):
print?"go?A?go!"
def?stop(self):
print?"stop?A?stop!"
def?pause(self):
raise?Exception("Not?Implemented")class?B(A):
def?go(self):
super(B,?self).go()
print?"go?B?go!"class?C(A):
def?go(self):
super(C,?self).go()
print?"go?C?go!"
def?stop(self):
super(C,?self).stop()
print?"stop?C?stop!"class?D(B,C):
def?go(self):
super(D,?self).go()????????print?"go?D?go!"
def?stop(self):
super(D,?self).stop()
print?"stop?D?stop!"
def?pause(self):
print?"wait?D?wait!"class?E(B,C):?pass
a?=?A()
b?=?B()
c?=?C()
d?=?D()
e?=?E()
#?說明下列代碼的輸出結果
a.go()
b.go()
c.go()
d.go()
e.go()
a.stop()
b.stop()
c.stop()
d.stop()
e.stop()
a.pause()
b.pause()
c.pause()
d.pause()
e.pause()
問題11
閱讀下面的代碼,它的輸出結果是什么?class?Node(object):
def?__init__(self,sName):
self._lChildren?=?[]
self.sName?=?sName
def?__repr__(self):
return?"".format(self.sName)
def?append(self,*args,**kwargs):
self._lChildren.append(*args,**kwargs)
def?print_all_1(self):
print?self
for?oChild?in?self._lChildren:
oChild.print_all_1()
def?print_all_2(self):
def?gen(o):
lAll?=?[o,]
while?lAll:
oNext?=?lAll.pop(0)
lAll.extend(oNext._lChildren)
yield?oNext
for?oNode?in?gen(self):
print?oNodeo
Root?=?Node("root")oChild1?=?Node("child1")
oChild2?=?Node("child2")
oChild3?=?Node("child3")
oChild4?=?Node("child4")
oChild5?=?Node("child5")
oChild6?=?Node("child6")
oChild7?=?Node("child7")
oChild8?=?Node("child8")
oChild9?=?Node("child9")
oChild10?=?Node("child10")
oRoot.append(oChild1)
oRoot.append(oChild2)
oRoot.append(oChild3)
oChild1.append(oChild4)
oChild1.append(oChild5)
oChild2.append(oChild6)
oChild4.append(oChild7)
oChild3.append(oChild8)
oChild3.append(oChild9)
oChild6.append(oChild10)
#?說明下面代碼的輸出結果
oRoot.print_all_1()
oRoot.print_all_2()
問題12
簡要描述Python的垃圾回收機制(garbage collection)。
問題13
將下面的函數按照執行效率高低排序。它們都接受由0至1之間的數字構成的列表作為輸入。這個列表可以很長。一個輸入列表的示例如下:[random.random() for i in range(100000)]。你如何證明自己的答案是正確的。def?f1(lIn):
l1?=?sorted(lIn)
l2?=?[i?for?i?in?l1?if?i<0.5]
return?[i*i?for?i?in?l2]
def?f2(lIn):
l1?=?[i?for?i?in?lIn?if?i<0.5]
l2?=?sorted(l1)
return?[i*i?for?i?in?l2]
def?f3(lIn):
l1?=?[i*i?for?i?in?lIn]
l2?=?sorted(l1)
return?[i?for?i?in?l1?if?i
問題14
你有過失敗的經歷嗎?
問題15
你有實施過個人項目嗎?
真的?
結語
我給出的這些問題時,有意涉及了多個領域。而且答案也是特意寫的較為啰嗦。在編程面試中,你需要展示自己對語言的理解,如果你能簡要地說清楚,那請務必那樣做。我盡量在答案中提供了足夠的信息,即使是你之前從來沒有了解過這些領域,你也可以從答案中學到些東西。我希望本文能夠幫助你找到滿意的工作。
加油!
題圖:pexels,CC0 授權。
總結
以上是生活随笔為你收集整理的python面试应急5分钟_Python面试必须要看的15个问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 赣州市哪里有学收纳师培训班?
- 下一篇: 规范石材宽度多少需要挂2个挂件呢?