几道python面试题
from http://www.hi-roy.com/2017/07/21/%E5%87%A0%E9%81%93python%E9%9D%A2%E8%AF%95%E9%A2%98/
前几天去笔试,这里记录一下遇到的几个编程题,比较基础。
生成斐波那契数列并取前10项
1
|
|
这个可以说是一道常见的简单算法题了,关键点就是理解a,b=b,a+b以及yield的作用。
扩展一个列表,列表中的元素可能也包含列表
1
|
def myextend(alist):
|
考察递归调用的思想。
有如下代码,请写出输出
1
|
def test(x,l=[]):
|
输入如下:
1
|
[0,1,2]
|
可变类型作为参数在不显示传递参数时,每次函数调用时候都是共用的;如果传递了参数(比如第二种)则不会互相影响。
已知某列表中包含重复数据,保持列表中元素第一次出现的顺序并去重,要求复杂度为O(n)。
1
|
def fun(alist):
|
考察列表、集合等常见操作的复杂度。
已知如下函数,请写出输出,并写出正确写法:
1
|
z = [lambda x:x*i for i in range(3)]
|
输出为[4,4,4]
这里主要考察python中闭包、返回值为函数时候的知识点。由于lambda函数共用了i变量,当调用时候i已经变成了2,所以输出都是4。
改正:
1
|
def func():
|
输出[0,2,4]
创建一个类,并输出某个属性。如果这个属性存在则输出值,否则输出这个属性名的字符串
1
|
class Mycls(object):
|
输出为0,b。
主要考察python的反射机制,以及类相关的__getattr__方法。
注意__getattr__方法和__getattribute__方法的区别,前者只有在属性不存在时候调用,返回一个值或者引发异常。而后者是每次都会被调用的。
另外可以看看getattr(),hasattr()这种内置函数。
简答题
- 简述py2和py3的区别
- python的垃圾回收机制
- python中多线程的方法,局限,以及有什么其他方式进行并发处理
- 简述epoll、select、poll三种模型
小小菜鸟一枚
浙公网安备 33010602011771号