分享下你遇到过的 Python 经典面试题

本人工作两年来,主要语言是 PHP 和 Python (两样都会,只能说熟练使用,但都谈不上精通),但最近想深入学习下 Python,好找份 Python 的相关工作,各位从事 Python 相关工作的,有什么经典的面试题,可以分享下么
分享下你遇到过的 Python 经典面试题

7 回复

分享一下这个资源:
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 来构建树 感觉是最快速的了

回到顶部