下面整理 50 道常见 Python 面试题,覆盖 基础语法、数据结构、函数、面向对象、内存管理、并发、标准库等核心知识点。每题附简要答案,适合快速复习。
一、Python基础(1–10)
1. Python 的特点是什么?
- 解释型语言
- 动态类型
- 自动内存管理
- 丰富标准库
- 跨平台
2. Python 是编译型还是解释型?
Python 代码会先编译为 字节码 .pyc,再由解释器执行。
3. Python 中的变量需要声明类型吗?
不需要。Python 是 动态类型语言。
x = 10
x = "hello"
4. Python 中的缩进有什么作用?
Python 使用 缩进表示代码块,而不是 {}。
5. Python 支持哪些数据类型?
常见类型:
- int
- float
- str
- list
- tuple
- dict
- set
- bool
6. list 和 tuple 的区别?
| list | tuple |
|---|---|
| 可变 | 不可变 |
用 [] | 用 () |
| 可以修改元素 | 不可以 |
7. Python 中的 None 是什么?
None 表示 空值对象。
8. is 与 == 的区别?
| 运算符 | 作用 |
|---|---|
== | 值是否相等 |
is | 是否同一个对象 |
9. Python 的关键字有哪些?
示例:
if, else, for, while, class, def, try, except, return
10. Python 中的注释方式?
# 单行注释
"""
多行注释
"""
二、字符串与数据结构(11–20)
11. Python 字符串是否可变?
字符串是 不可变对象。
12. 如何反转字符串?
s[::-1]
13. list 常用方法?
- append()
- insert()
- remove()
- pop()
- sort()
14. Python 字典的特点?
- key-value 结构
- key 必须可哈希
- 查找速度快
15. set 的作用?
集合用于:
- 去重
- 集合运算
16. list 和 set 的区别?
| list | set |
|---|---|
| 有序 | 无序 |
| 可重复 | 不可重复 |
17. Python 中如何去重?
list(set(a))
18. Python 中的切片是什么?
a[start:end:step]
例:
a[1:5]
19. 什么是列表推导式?
[x*x for x in range(10)]
20. Python 如何交换变量?
a, b = b, a
三、函数(21–30)
21. Python 如何定义函数?
def func():
pass
22. Python 函数参数类型?
- 位置参数
- 默认参数
- 可变参数
*args - 关键字参数
**kwargs
23. *args 和 **kwargs 区别?
| 参数 | 说明 |
|---|---|
| *args | 可变位置参数 |
| **kwargs | 可变关键字参数 |
24. lambda 函数是什么?
匿名函数。
lambda x: x + 1
25. Python 是否支持函数嵌套?
支持。
26. 什么是闭包?
内部函数引用外部变量。
27. Python 中的装饰器是什么?
装饰器用于 扩展函数功能。
@decorator
def func():
pass
28. Python 是否支持函数重载?
不支持传统重载。
29. Python 的递归是什么?
函数调用自身。
30. Python 默认递归深度?
约 1000 层。
四、面向对象(31–40)
31. Python 面向对象三大特性?
- 封装
- 继承
- 多态
32. Python 如何定义类?
class Person:
pass
33. __init__ 方法作用?
构造函数,用于初始化对象。
34. self 是什么?
代表当前对象实例。
35. Python 是否支持多继承?
支持。
36. 什么是魔法方法?
特殊方法,例如:
__init__
__str__
__len__
37. __str__ 作用?
定义对象的字符串表示。
38. Python 如何实现封装?
通过:
_private
__private
39. Python 类变量和实例变量区别?
| 类变量 | 实例变量 |
|---|---|
| 所有实例共享 | 每个实例独立 |
40. 什么是抽象类?
不能实例化的类。
模块:
abc
五、进阶问题(41–50)
41. Python 垃圾回收机制?
- 引用计数
- 循环引用检测
- 分代回收
42. Python GIL 是什么?
GIL 是 全局解释器锁。
在 CPython 中:
同一时刻只允许一个线程执行 Python 字节码。
43. Python 多线程适合什么任务?
IO密集型任务。
44. Python 多进程模块?
模块:
multiprocessing
45. Python 协程库?
常见:
- asyncio
- gevent
46. 什么是生成器?
使用 yield 生成数据。
def gen():
yield 1
47. Python 中的迭代器?
实现:
__iter__()
__next__()
48. Python 模块与包区别?
| 模块 | 包 |
|---|---|
| 单个 .py 文件 | 文件夹 |
49. Python 虚拟环境作用?
隔离不同项目依赖。
工具:
- virtualenv
- Conda
50. Python 常见 Web 框架?
例如:
- Django
- Flask
- FastAPI
总结
Python 面试通常考察五大模块:
| 模块 | 重点 |
|---|---|
| 基础语法 | 数据类型、运算 |
| 数据结构 | list、dict、set |
| 函数 | 参数、装饰器 |
| 面向对象 | 类、继承 |
| 进阶 | GIL、GC、并发 |
如果你需要,我可以再整理一份 “Python面试100题(大厂高频版)”,里面会包含:
- 字节 / 腾讯 / 阿里常问题
- GIL 深度题
- 装饰器手写题
- 迭代器 vs 生成器
- Python 底层实现题。