下面按面试出现频率 + 实战价值 ,给你一份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):
pass
7️⃣ 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 = 2
1️⃣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 / sys -
datetime -
re -
json -
collections -
itertools
2️⃣3️⃣ collections 常考
-
Counter
-
defaultdict
-
deque
-
namedtuple
九、框架方向(后端必问 ⭐⭐⭐⭐)
Django / FastAPI 常被追问
-
ORM 查询是否懒加载?
-
中间件执行顺序
-
Django QuerySet 是否立即执行?
-
FastAPI 为什么快?(ASGI + async)
十、算法 & 逻辑(一定会考 ⭐⭐⭐⭐)
-
字符串去重
-
LRU 缓存
-
两数之和
-
反转链表
-
排序算法时间复杂度
面试官最爱追问总结
❗ 知道 "是什么" 不够
❗ 一定要会 "为什么 + 场景 + 对比"