这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 休闲专区 » 我爱工作 » 盘点Python开发工程师常见十道面试题及答案

共1条 1/1 1 跳转至

盘点Python开发工程师常见十道面试题及答案

菜鸟
2020-07-17 11:19:04     打赏

今天扣丁学堂给大家整理了一下关于日常面试中Python开发工程师常见面试题及答案,下面我们一起来看一下吧。

8.png

  

生成斐波那契数列并取前10项  

deffunc(m):  

n,a,b=0,1,1  

whilen<m:  

yielda  

a,b=b,a+b  

n+=1  

foroneinfunc(10):  

printone  

这个可以说是一道常见的简单算法题了,关键点就是理解a,b=b,a+b以及yield的作用。  

扩展一个列表,列表中的元素可能也包含列表  

defmyextend(alist):  

tmp=[]  

foroneinalist:  

ifisinstance(one,list):  

tmp.extend(myextend(one))  

else:  

tmp.append(one)  

returntmp  

t=[1,2,5,[3,[],5,2,[57]],90]  

printt  

printmyextend(t)  

考察递归调用的思想。  

有如下代码,请写出输出  

deftest(x,l=[]):  

foroinrange(x):  

l.append(o)  

printl  

test(3)  

test(1,[3,2,1])  

test(3)  

输出如下:  

[0,1,2]  

[3,2,1,0]  

[0,1,2,0,1,2]  

可变类型作为参数在不显示传递参数时,每次函数调用时候都是共用的;如果传递了参数(比如第二种)则不会互相影响。  

已知某列表中包含重复数据,保持列表中元素第一次出现的顺序并去重,要求复杂度为O(n)。  

deffun(alist):  

result=[]  

temp=set()  

foroinalist:  

ifonotintemp:  

result.append(o)  

temp.add(o)  

returnresult  

考察列表、集合等常见操作的复杂度。  

已知如下函数,请写出输出,并写出正确写法:  

z=[lambdax:x*iforiinrange(3)]  

x=[o(2)foroinz]  

printx  

输出为  

[4,4,4]  

这里主要考察python中闭包、返回值为函数时候的知识点。由于lambda函数共用了i变量,当调用时候i已经变成了2,所以输出都是4。  

改正:  

deffunc():  

defm(x):  

defn(y):  

returnx*y  

returnn  

return[f(one)foroneinrange(3)]  

z=func()  

x=[o(2)foroinz]  

printx  

输出  

[0,2,4]  

创建一个类,并输出某个属性。如果这个属性存在则输出值,否则输出这个属性名的字符串  

classMycls(object):  

a=0  

def__getattr__(self,name):  

printname  

z=Mycls()  

printz.a,z.b  

输出为  

0,b  

主要考察python的反射机制,以及类相关的__getattr__方法。  

注意:__getattr__方法和__getattribute__方法的区别,前者只有在属性不存在时候调用,返回一个值或者引发异常。而后者是每次都会被调用的。另外可以看看getattr(),hasattr()这种内置函数。  



共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]