☰
Python面试必问的20道题,答对一半算你牛
2026/10/3 6:40:01 网站建设 项目流程

列表和元组有什么区别?列表可变,支持增删改;元组不可变,可作字典键。元组内存更小,速度略快。

is和==的区别?is比较内存地址,==比较值。小整数和字符串驻留时可能相同,但大对象需谨慎。

深拷贝和浅拷贝的区别?浅拷贝只复制顶层,嵌套对象仍共享;深拷贝递归复制所有层。copy.deepcopy实现深拷贝。

什么是GIL?全局解释器锁,CPython中同一时刻只有一个线程执行字节码。它使多线程无法并行计算,但I/O等待时会释放。

多线程和多进程怎么选?CPU密集用多进程,I/O密集用多线程或异步。多进程绕开GIL,但通信开销大。

装饰器的作用?在不修改原函数代码的前提下增加功能,如日志、计时、权限校验。本质是接收函数返回新函数。

生成器和迭代器的区别?迭代器实现__iter__和__next__;生成器是简化版,用yield自动实现。生成器惰性求值,省内存。

闭包是什么?内层函数引用外层函数的变量,且外层函数返回内层函数。闭包可保存状态,但注意循环变量陷阱。

args和kwargs的作用?args接收任意位置参数为元组,kwargs接收任意关键字参数为字典。

Python内存管理机制?引用计数为主,标记清除和分代回收为辅。对象引用为0时立即回收,循环引用靠GC解决。

垃圾回收怎么工作?引用计数实时回收;标记清除处理循环引用;分代回收将对象分三代,越老扫描越少,提升效率。

元类是什么?类的类。type是默认元类。元类可控制类的创建过程,用于框架和ORM。

上下文管理器有什么用?用with管理资源,确保退出时执行清理。实现__enter__和__exit__,或使用contextlib。

协程和线程的区别?协程是单线程内用户态调度,切换开销极小;线程由操作系统调度,切换成本高。协程适合高并发I/O。

列表推导式和生成器表达式的区别?列表推导式立即生成列表,占内存;生成器表达式返回生成器,惰性求值,省内存。

字典的底层实现?哈希表,键必须可哈希。Python 3.7后有序。冲突用开放寻址,扩容时重新哈希。

异常处理中finally的作用?无论是否异常都会执行,常用于释放资源。else在无异常时执行。

lambda的用途?匿名函数,适合简单逻辑,常配合map、filter、sorted使用。不能包含语句。

新式类和旧式类的区别?Python 3只有新式类,默认继承object。新式类支持super、__slots__和描述符。

如何优化Python性能?用内置函数、局部变量、生成器;避免循环内重复计算;用cProfile定位瓶颈;必要时用C扩展或PyPy。

这20道题覆盖了Python面试的核心考点。能答对一半,说明基础扎实;答对八成以上,面试官大概率会对你刮目相看。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询