# Python面试题专栏
这个专栏只讲Python语言本身,不展开Web框架、数据库、测试工具或数据分析库。38篇文章覆盖从基础语法到进阶特性的完整学习路线,每篇从真实面试问题切入,先给能直接回答面试官的结论,再解释语言行为和底层原因。
适合谁?
- 准备Python岗位面试,需要系统复习语法和语言机制。
- 已经用Python刷题,但对对象模型、作用域、生成器、装饰器等机制不够清楚。
- 从其他语言转Python,想快速补齐语言特性和常见易错点。
- 零基础学Python,需要一条从语法到进阶的连续学习路线。
# 完整学习路线
推荐按顺序学习。已有基础的录友可以直接跳到函数、面向对象或进阶语法章节查漏。
# 第一章:专栏入口
| 序号 | 文章标题 |
|---|---|
| 1 | Python面试题专栏介绍 |
| 2 | Python学习路线:从基础语法到进阶特性 |
# 第二章:基础语法
| 序号 | 文章标题 | 核心问题 |
|---|---|---|
| 3 | Python程序如何运行?解释器、源码与字节码是什么? | 解释器执行过程、字节码、.pyc缓存 |
| 4 | Python有哪些内置数据类型? | 数值、序列、映射、集合、布尔、None |
| 5 | Python变量保存的是什么?变量、对象和引用有什么关系? | 名字绑定、对象身份、引用 |
| 6 | Python中的可变对象和不可变对象有什么区别? | 可变性、原地修改、对象共享 |
| 7 | is和==有什么区别? | 身份比较、相等性协议 |
| 8 | Python的运算符有哪些?and、or为什么会返回对象? | 短路求值、运算符优先级 |
| 9 | Python条件判断和循环有哪些常见写法与易错点? | if、for、while、break、continue |
| 10 | Python字符串为什么不可变?常用操作有哪些? | 字符串不可变性、常用方法 |
| 11 | Python列表和元组有什么区别? | 可变性、性能、使用场景 |
| 12 | Python字典和集合有什么区别? | 键值映射、去重、哈希 |
| 13 | Python切片和序列解包怎么用? | 切片语法、序列解包 |
| 14 | 列表、字典和集合推导式怎么写?什么时候不该用? | 推导式语法、可读性边界 |
阶段目标:能独立完成基础输入输出、分支、循环和常用容器操作,并能判断一个操作会不会修改原对象。
# 第三章:函数、作用域与模块
| 序号 | 文章标题 | 核心问题 |
|---|---|---|
| 15 | Python函数参数是值传递还是引用传递? | 对象共享传递、参数绑定 |
| 16 | 位置参数、关键字参数、*args和**kwargs怎么用? | 参数种类、参数解包 |
| 17 | Python默认参数为什么不能随便使用列表和字典? | 可变默认参数陷阱 |
| 18 | Python中的匿名函数、map、filter和reduce怎么用? | 匿名函数、函数式工具 |
| 19 | Python的LEGB作用域是什么? | 变量查找顺序 |
| 20 | global和nonlocal有什么区别? | 跨作用域修改变量 |
| 21 | 什么是闭包?闭包中的变量为什么会出现延迟绑定? | 闭包、自由变量、延迟绑定 |
| 22 | Python模块和包是什么?import是怎么工作的? | 模块导入、包结构 |
阶段目标:能够把重复逻辑封装成函数,把代码拆成多个模块,并说清楚参数传递、变量查找和导入过程。
# 第四章:面向对象
| 序号 | 文章标题 | 核心问题 |
|---|---|---|
| 23 | Python中的类和对象是什么? | 类定义、对象创建 |
| 24 | 实例属性和类属性有什么区别? | 属性查找、属性覆盖 |
| 25 | 实例方法、类方法和静态方法有什么区别? | 三种方法的区别和使用场景 |
| 26 | __new__和__init__有什么区别? | 对象创建过程 |
| 27 | Python如何实现封装、继承和多态? | 面向对象三大特性 |
| 28 | Python多继承的MRO是什么?super()如何工作? | 方法解析顺序、super()调用 |
| 29 | Python常见魔术方法有哪些? | 特殊方法、运算符重载 |
阶段目标:能够设计简单的类,正确区分类属性和实例属性,并能解释继承、方法解析顺序和对象创建过程。
# 第五章:进阶语法与语言机制
| 序号 | 文章标题 | 核心问题 |
|---|---|---|
| 30 | 可迭代对象和迭代器有什么区别? | 迭代协议、__iter__、__next__ |
| 31 | 生成器是什么?yield为什么能节省内存? | 生成器、惰性求值 |
| 32 | Python装饰器的原理是什么? | 装饰器、函数包装 |
| 33 | Python上下文管理器是什么?with如何自动释放资源? | 上下文管理协议 |
| 34 | Python异常体系是什么?try、except、else和finally怎么执行? | 异常处理、异常传播 |
| 35 | Python浅拷贝和深拷贝有什么区别? | 对象复制、引用共享 |
| 36 | Python类型标注有什么用?常见类型应该怎么写? | 类型提示、静态检查 |
| 37 | dataclass、namedtuple和普通类有什么区别? | 数据类、命名元组 |
| 38 | Python如何管理内存?引用计数和垃圾回收是什么? | 内存管理、引用计数、循环引用 |
阶段目标:能够读懂成熟Python代码里的生成器、装饰器、上下文管理器和类型标注,并理解常见对象的生命周期。
# 每篇文章的结构
每篇文章保持统一的三层结构:
- 开头:面试官的问题 + 多数人容易答错的位置
- 简要回答:2—4段可以直接用于面试口述的结论
- 详细回答:解释机制、对比差异、展示代码
- 知识拓展:面试官可能追问的3—5个问题
读完一篇文章后,录友应该能完成三步:
- 用半分钟说出准确结论
- 用一个小例子解释Python为什么这样运行
- 面对追问时,能说清版本、对象模型和实现边界
# 配合基础课和知识星球
零基础录友可以先完成Python基础课,掌握基本语法后再按本专栏逐篇学习。已经刷题的录友,可以从函数、面向对象或进阶语法开始查漏。
遇到代码问题、简历点评或面试经验分享,可以加入知识星球 (opens new window),和其他录友一起讨论。
# 开始学习
建议从Python学习路线开始,了解完整学习顺序和每阶段目标。然后按章节顺序逐篇学习,每篇文章控制在10—15分钟阅读时间。
推荐学习节奏:
- 第1—2周:第3—9篇,掌握类型、变量、对象和控制流
- 第3—4周:第10—14篇,完成常见字符串、列表和哈希题
- 第5—6周:第15—22篇,把单文件代码拆成多个模块
- 第7—8周:第23—29篇,完成一个小型面向对象程序
- 第9—10周:第30—38篇,能读懂常见Python项目代码
每周复习已学文章,用知识星球的练习题验证理解。10周后,基本可以完成Python语法层面的系统准备。
评论
验证登录状态...