
GIL是Python多线程的紧箍咒全局解释器锁CPython里同一时刻只有一个线程跑字节码。你开十个线程做CPU密集计算速度和单线程差不多甚至更慢因为切换有开销。面试官问这个是想看你知道什么时候用多进程什么时候用多线程。IO密集任务GIL会在等待时释放所以爬虫多线程有用CPU密集任务老老实实上多进程。不懂GIL等于不懂Python并发。装饰器写不出来别说你精通Python装饰器是闭包加函数作为参数外层返回内层。带参数的装饰器就是三层嵌套。面试官常让你手写一个记录执行时间的装饰器。很多人背得出语法糖一写就卡在functools.wraps上。写不出来面试官默认你只用别人造好的轮子。装饰器是Python优雅的招牌不会写就是打脸。生成器和迭代器分不清就露馅迭代器实现__iter__和__next__生成器用yield简化。面试官会问读一个10G日志文件怎么不爆内存答案是用生成器逐行读而不是readlines一把梭。yield暂停函数并返回值下次从暂停处继续。只知道for循环不知道yield说明你连内存优化都不关心。深拷贝浅拷贝拷错一次就是事故浅拷贝只复制最外层嵌套对象还是共享引用深拷贝递归复制所有层级。copy.copy浅copy.deepcopy深。面试官给你嵌套列表让你预测修改内层后原对象变不变。答错说明你分不清对象引用和值。生产环境传参不小心改了原数据排查半天找不到原因就是浅拷贝的锅。内存管理和垃圾回收背概念不如讲机制引用计数为主标记清除和分代回收为辅。对象被引用一次加一失效减一减到零回收。循环引用计数解决不了所以有标记清除。分代回收把对象分三代新对象朝生夕死老对象少扫。面试官想听你知不知道什么时候内存泄漏比如全局缓存不清理、循环引用带__del__。只背名词不讲机制等于没学。多线程多进程协程选错场景反向优化多线程适合IO密集多进程适合CPU密集协程适合高并发IO且不想吃线程切换开销。面试官问爬虫同时抓一千个网页选哪个协程加asyncio最合适。你说多线程他会追问线程栈内存多大、上下文切换成本多少。协程是用户态调度没有GIL限制但一有阻塞调用就卡死整个事件循环。选型讲不清说明你只会写demo没上过生产。闭包和late binding踩过一次就忘不了闭包是函数记住了定义时的环境变量。经典坑循环里创建多个lambda都引用同一个变量i最后全返回循环结束后的值。解决办法是用默认参数绑定当前值或者用functools.partial。面试官让你写计数器函数用闭包写出来再问多个计数器会不会互相干扰。答不好说明你对作用域和可变对象理解不深。元类和__new__高级但能区分层次元类是创建类的类type是所有类的元类。__new__负责创建实例__init__负责初始化。面试官问这个不是要你天天写元类是想看你知道不知道Python对象模型。比如单例可以用元类实现也可以重写__new__。说清楚顺序先由元类创建类对象再调用__new__创建实例最后__init__初始化。答得出来说明你读过源码不是只会调库。这8个问题覆盖了Python核心机制、内存、并发、函数式特性和对象模型。能答上六个基础算扎实能答上八个开价都有底气。面试不是背书是看你有没有踩过坑。平时写代码多问一句为什么比临时抱佛脚强一百倍。面了二十家最大的感受就是你糊弄代码面试官就糊弄你。