分享下你遇到过的 Python 经典面试题
本人工作两年来,主要语言是 PHP 和 Python (两样都会,只能说熟练使用,但都谈不上精通),但最近想深入学习下 Python,好找份 Python 的相关工作,各位从事 Python 相关工作的,有什么经典的面试题,可以分享下么
分享下你遇到过的 Python 经典面试题
分享一下这个资源:
https://github.com/taizilongxu/interview_python
这上边挺全的,因为一般面试大部分也是问这些常规的题目。
还有自己面试的经历, 仅供参考:
https://changchen.me/blog/20170223/python-backend-inteview-summery/
我面过不少Python岗,遇到过几个挺经典的。一个是关于可变默认参数的问题,很多人会踩坑:
def append_to(element, target=[]):
target.append(element)
return target
print(append_to(1)) # [1]
print(append_to(2)) # [1, 2] 而不是预期的[2]
这个问题的核心是Python函数默认参数在定义时只计算一次,而不是每次调用都创建新列表。正确写法应该是:
def append_to(element, target=None):
if target is None:
target = []
target.append(element)
return target
另一个常问的是列表推导式与生成器表达式的区别。列表推导式[x for x in range(10)]会立即生成完整列表,而生成器表达式(x for x in range(10))是惰性求值,适合处理大数据集。
还有装饰器的实现原理,面试官喜欢让手写一个简单的装饰器:
def my_decorator(func):
def wrapper(*args, **kwargs):
print("Before function call")
result = func(*args, **kwargs)
print("After function call")
return result
return wrapper
@my_decorator
def say_hello():
print("Hello!")
say_hello()
GIL(全局解释器锁)也是必问题,得清楚它对多线程的影响以及如何绕过(用多进程或异步)。
类变量和实例变量的区别也经常考:
class MyClass:
class_var = 0
def __init__(self):
self.instance_var = 0
obj1 = MyClass()
obj2 = MyClass()
obj1.class_var = 1 # 这实际上创建了实例属性
print(obj2.class_var) # 还是0
最后是__new__和__init__的区别,__new__负责创建对象,__init__负责初始化。
多刷题多理解原理是关键。
如何快速的创建一棵树???
键盘侠没有面试题。。
https://github.com/revotu/python-interviews (自己一点点整理的)
这里面整理的 python 面试题都很经典,非常有面试参考复习价值
而且里面的文章链接讲解每个问题都很简明清晰
http://www.codingonway.com 这个网站是专门的 python 笔试面试题网站
整理的题目都很经典 关键是讲解超棒 能学到很多
只是目前题目还比较少 还在持续更新中
正好以前写过 ,class tree(dict): 继承 dict 来构建树 感觉是最快速的了

