下面按面试出现频率 + 实战价值,给你一份Python 面试常见问题清单,覆盖从初级到高级(默认偏web后端方向)。
一、Python 基础(必考 ⭐⭐⭐⭐⭐)
1️⃣ Python 是解释型还是编译型?
解释型语言
但实际上:
👉.py → 字节码(.pyc) → Python 虚拟机执行
2️⃣ 深拷贝 vs 浅拷贝
import copy copy.copy() # 浅拷贝 copy.deepcopy() # 深拷贝
浅拷贝:只复制第一层引用
深拷贝:递归复制所有对象
3️⃣ 可变 / 不可变类型
不可变:
int, float, str, tuple, frozenset
可变:
list, dict, set
👉 面试重点:作为 dict key 的必须是不可变类型
4️⃣ is 和 == 的区别
==:值是否相等is:是否指向同一内存地址
5️⃣ None / False / 0 的区别
None == False # False None is False # False bool(None) # False二、函数 & 语法特性(高频 ⭐⭐⭐⭐)
6️⃣ *args 和 **kwargs
def f(*args, **kwargs): pass7️⃣ lambda 的使用场景
简单函数
sorted / map / filter
sorted(data, key=lambda x: x['age'])8️⃣ 装饰器(必考)
def decorator(func): def wrapper(*args, **kwargs): return func(*args, **kwargs) return wrapper追问:
多个装饰器执行顺序?
装饰器带参数怎么写?
9️⃣ 生成器 vs 列表
(x for x in range(10))
节省内存
惰性计算
用于大数据、日志流
三、面向对象(中高级 ⭐⭐⭐⭐)
🔟 类变量 vs 实例变量
class A: x = 1 # 类变量 def __init__(self): self.y = 21️⃣1️⃣ @staticmethod / @classmethod
staticmethod:无 self / cls
classmethod:可访问类变量
1️⃣2️⃣ 魔法方法(常问)
__init____new____str____repr____len____call__
四、内存 & 性能(高级 ⭐⭐⭐⭐)
1️⃣3️⃣ Python 的垃圾回收机制
引用计数
分代回收
解决循环引用
1️⃣4️⃣ GIL 是什么?
全局解释器锁
多线程无法真正并行执行 CPU 密集型任务
IO 密集型依然适合多线程
1️⃣5️⃣ 多进程 vs 多线程
| 类型 | 场景 |
|---|---|
| 多线程 | IO 密集 |
| 多进程 | CPU 密集 |
五、并发 / 异步(越来越常考 ⭐⭐⭐⭐)
1️⃣6️⃣ asyncio 工作原理
事件循环
协程(
async / await)
async def f(): await asyncio.sleep(1)1️⃣7️⃣ 协程 vs 线程
协程:用户态切换,轻量
线程:内核态切换,重
六、常见内置结构 & 原理(高频 ⭐⭐⭐⭐)
1️⃣8️⃣ dict 底层原理
哈希表
开放寻址
O(1) 查找(平均)
1️⃣9️⃣ list 底层原理
动态数组
预分配空间
七、异常 & 上下文(必会 ⭐⭐⭐)
2️⃣0️⃣ try / except / finally
try: ... except Exception as e: ... finally: ...2️⃣1️⃣ with 的原理
上下文管理器
__enter__/__exit__
八、标准库 & 实战(加分 ⭐⭐⭐)
2️⃣2️⃣ 常用标准库
os / sysdatetimerejsoncollectionsitertools
2️⃣3️⃣ collections 常考
Counter
defaultdict
deque
namedtuple
九、框架方向(后端必问 ⭐⭐⭐⭐)
Django / FastAPI 常被追问
ORM 查询是否懒加载?
中间件执行顺序
Django QuerySet 是否立即执行?
FastAPI 为什么快?(ASGI + async)
十、算法 & 逻辑(一定会考 ⭐⭐⭐⭐)
字符串去重
LRU 缓存
两数之和
反转链表
排序算法时间复杂度
面试官最爱追问总结
❗ 知道 “是什么” 不够
❗ 一定要会 “为什么 + 场景 + 对比”