python面试需要具备什么_Python面试必须要看的15个问题

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 教程和资源。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值