defprint_directory_contents(sPath):
"""
这个函数接受文件夹的名称作为输入参数,
返回该文件夹中文件的路径,
以及其包含文件夹中文件的路径。
"""
# 补充代码
阅读下面的代码,写出A0,A1至An的最终值。
A0=dict(zip(('a','b','c','d','e'),(1,2,3,4,5)))
A1=range(10)
A2=[iforiinA1ifiinA0]
A3=[A0[s]forsinA0]
A4=[iforiinA1ifiinA3]
A5={i:i*iforiinA1}
A6=[[i,i*i]foriinA1]
A0=dict(zip(('a','b','c','d','e'),(1,2,3,4,5)))
A1=range(10)
A2=[iforiinA1ifiinA0]
A3=[A0[s]forsinA0]
A4=[iforiinA1ifiinA3]
A5={i:i*iforiinA1}
A6=[[i,i*i]foriinA1]
Python和多线程(multi-threading)。这是个好主意码?列举一些让Python代码以并行方式运行的方法。
问题5
你如何管理不同版本的代码?
问题6
下面代码会输出什么:
deff(x,l=[]):
foriinrange(x):
l.append(i*i)
printlf(2)f(3,[3,2,1])f(3)
deff(x,l=[]):
foriinrange(x):
l.append(i*i)
printlf(2)f(3,[3,2,1])f(3)
“猴子补丁”(monkey patching)指的是什么?这种做法好吗?
问题8
这两个参数是什么意思:args,*kwargs?我们为什么要使用它们?
问题9
这些是什么意思:@classmethod, @staticmethod, @property?
问题10
阅读下面的代码,它的输出结果是什么?
classA(object):
defgo(self):
print"go A go!"
defstop(self):
print"stop A stop!"
defpause(self):
raiseException("Not Implemented")classB(A):
defgo(self):
super(B,self).go()
print"go B go!"classC(A):
defgo(self):
super(C,self).go()
print"go C go!"
defstop(self):
super(C,self).stop()
print"stop C stop!"classD(B,C):
defgo(self):
super(D,self).go()
print"go D go!"
defstop(self):
super(D,self).stop()
print"stop D stop!"
defpause(self):
print"wait D wait!"classE(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()
classA(object):
defgo(self):
print"go A go!"
defstop(self):
print"stop A stop!"
defpause(self):
raiseException("Not Implemented")classB(A):
defgo(self):
super(B,self).go()
print"go B go!"classC(A):
defgo(self):
super(C,self).go()
print"go C go!"
defstop(self):
super(C,self).stop()
print"stop C stop!"classD(B,C):
defgo(self):
super(D,self).go()
print"go D go!"
defstop(self):
super(D,self).stop()
print"stop D stop!"
defpause(self):
print"wait D wait!"classE(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()
阅读下面的代码,它的输出结果是什么?
classNode(object):
def__init__(self,sName):
self._lChildren=[]
self.sName=sName
def__repr__(self):
return"".format(self.sName)
defappend(self,*args,**kwargs):
self._lChildren.append(*args,**kwargs)
defprint_all_1(self):
printself
foroChildinself._lChildren:
oChild.print_all_1()
defprint_all_2(self):
defgen(o):
lAll=[o,]
whilelAll:
oNext=lAll.pop(0)
lAll.extend(oNext._lChildren)
yieldoNext
foroNodeingen(self):
printoNode
oRoot=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()
classNode(object):
def__init__(self,sName):
self._lChildren=[]
self.sName=sName
def__repr__(self):
return"".format(self.sName)
defappend(self,*args,**kwargs):
self._lChildren.append(*args,**kwargs)
defprint_all_1(self):
printself
foroChildinself._lChildren:
oChild.print_all_1()
defprint_all_2(self):
defgen(o):
lAll=[o,]
whilelAll:
oNext=lAll.pop(0)
lAll.extend(oNext._lChildren)
yieldoNext
foroNodeingen(self):
printoNode
oRoot=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()
简要描述Python的垃圾回收机制(garbage collection)。
问题13
将下面的函数按照执行效率高低排序。它们都接受由0至1之间的数字构成的列表作为输入。这个列表可以很长。一个输入列表的示例如下:[random.random() for i in range(100000)]。你如何证明自己的答案是正确的。
deff1(lIn):
l1=sorted(lIn)
l2=[iforiinl1ifi<0.5]
return[i*iforiinl2]
deff2(lIn):
l1=[iforiinlInifi<0.5]
l2=sorted(l1)
return[i*iforiinl2]
deff3(lIn):
l1=[i*iforiinlIn]
l2=sorted(l1)
return[iforiinl1ifi
deff1(lIn):
l1=sorted(lIn)
l2=[iforiinl1ifi<0.5]
return[i*iforiinl2]
deff2(lIn):
l1=[iforiinlInifi<0.5]
l2=sorted(l1)
return[i*iforiinl2]
deff3(lIn):
l1=[i*iforiinlIn]
l2=sorted(l1)
return[iforiinl1ifi
你有过失败的经历吗?
问题15
你有实施过个人项目吗?
真的?
结语
我给出的这些问题时,有意涉及了多个领域。而且答案也是特意写的较为啰嗦。在编程面试中,你需要展示自己对语言的理解,如果你能简要地说清楚,那请务必那样做。我尽量在答案中提供了足够的信息,即使是你之前从来没有了解过这些领域,你也可以从答案中学到些东西。我希望本文能够帮助你找到满意的工作。
加油!
题图:pexels,CC0 授权。
点击阅读原文,查看更多 Python 教程和资源。