AI + Python 面试总览:校招里到底考什么
这一系列文档覆盖 Python + AI Agent 方向的面试复习全路径。先看清楚各岗位的考察侧重,再按模块逐篇击破,最后用速记清单收口。
一、按岗位看考察侧重
| 岗位方向 | 考察重点 | 对应篇目 |
|---|---|---|
| 后端 / 开发 | 语法糖(装饰器、生成器)、并发(GIL、线程进程协程)、Flask、ORM 与事务 | 基础语法、网络与并发、Flask |
| 测试 / 运维 | 异常处理、文件与编码、模块与包、多进程批量任务 | 基础语法、网络与并发 |
| AI 应用开发 | RAG 检索质量、工具调用、ReAct 循环、LangGraph 编排、评估与成本 | 大模型 API、RAG、ReAct、LangGraph、项目与上线 |
一个直观的判断:后端岗 70% 在考 Python 本身,AI 应用岗 70% 在考「怎么把模型用起来」。两边的基础题(可变不可变、GIL、装饰器)几乎必考,区别在后半场:后端会追问数据库和框架,AI 岗会追问检索质量和 Agent 循环。
二、复习路线图
| 篇目 | 主题 | 一句话核心 |
|---|---|---|
| 基础语法 | 数据类型、拷贝、装饰器、生成器、异常、GC | 可变不可变定 key,is 比地址 == 比值 |
| 面向对象 | 实例化、MRO、方法类型、鸭子类型、元类、单例 | 先 __new__ 造、再 __init__ 装 |
| 网络与并发 | TCP/UDP、粘包、进程线程协程、GIL、锁 | TCP 是字节流所以粘包,GIL 只坑 CPU 密集 |
| Flask | 路由、蓝图、Jinja2、ORM、上下文与 session | add() 只进事务,commit() 才落库 |
| 大模型 API 与 LangChain | messages、参数、JSON 输出、六抽象、LCEL | 模型无状态,多轮要自己维护 messages |
| RAG | 六步流程、切分、检索、防编造、评估 | RAG 效果差,80% 的问题不在提示词 |
| 工具调用与 ReAct | tool_calls、ToolMessage、四道闸、三种实现 | 模型不执行工具,Observation 是代码写的 |
| LangGraph 与多智能体 | State/Node/Edge、Reducer、interrupt、Supervisor | 条件边 + 回边 = 循环,必须有刹车 |
| 项目与上线 | 三个项目、简历写法、三个边界、部署清单 | 失败可兜底、成本可观测,才算上线 |
三、怎么用这套文档
- 先通读每篇的「高频面试题」小节,能直接答上来的跳过,答不上来的回到正文精读。
- AI 应用岗把 6~9 篇当主菜,1~5 篇当基础盘;后端岗反过来。
- 答题模式:结论先行 + 例子佐证 + 边界补充。比如问 GIL,先给结论"任一时刻只有一个线程执行字节码",再举例说明 I/O 密集场景多线程依然有效,最后补一句 3.13 的 free-threaded 实验版——三段式答完,面试官就知道你有体系。
- 每个概念最好挂一个自己踩过的坑。面试官区分"背的"和"用过的",靠的就是追问细节时你能不能给出真实场景。
四、核心结论速记(考前 10 分钟看这里)
可变不可变定 key,is 比地址 == 比值。
默认参数别写可变对象。
先 __new__ 造、再 __init__ 装。
私有只是改名,super() 走 MRO 不是走爹。
TCP 是字节流所以粘包,方案是定长包头。
GIL 只坑 CPU 密集,I/O 密集照样能用。
分数越小越相似,RAG 效果差先查检索。
模型不执行工具,它只输出 tool_calls。
Observation 是代码写的,不是模型编的。
失败可兜底、成本可观测,才算上线。