AI 面试经验总结
从面试官的角度看,一些常见的被问问题和高效的回答框架。
项目相关
问题 1:简述你最复杂的项目
不好的回答
- 堆砌技术名词
- 没有定量结果
- 没有清晰的问题→解决方案→结果链路
好的回答框架
1. 背景(1-2句):企业级 RAG 系统 for 内部文档问答
2. 核心问题(1 个):文档检索准确率低,权限混乱,延迟不可控
3. 你的方案(2-3 个技术亮点)
- 设计了分层 chunk 策略(300-800 token)
- 混合检索:向量 + BM25
- 权限三层过滤(源头标注 + 检索阶段 + 生成阶段)
4. 定量结果
- 准确率:68% → 78%
- 权限泄露事件:0
- P99 延迟:3.2s → 1.8s
5. 技术细节(如果面试官问)
- Chunk 设计为什么用 token 而非字符?
- BM25 vs Dense retrieval 的 trade-off?
问题 2:手撕题出错了怎么办
不好的反应
- 紧张、重新写
- 解释错误而不是修正
好的反应
1. 停下来分析:
"我的逻辑是 X,但实际情况是 Y,所以这行应该改为..."
2. 重新写那一行
3. 快速 trace 一遍新代码
"现在对于输入 [1,2,3],流程是..."
技术深度题
LLM 推理的非确定性
问题:Temperature=0 时为什么仍然无法保证重复?
分层回答
浅层:浮点数精度,GPU 并行计算的累积误差
中层:MoE 路由问题
- 多用户批处理,邻近请求影响路由决策
- 同一 token 可能被不同专家处理
深层:系统级非确定性
- 动态批处理调度不同
- 硬件异构性(A100 vs H100)
- PyTorch 框架允许的非确定算法
结论:Temperature=0 只消除采样层随机性,系统级不确定性无法消除
追问可能:如何最大化一致性?
→ 自托管模型 + torch.use_deterministic_algorithms(True)
→ 固定硬件和环境
→ 添加重试验证逻辑
Agent RL vs SFT
问题:为什么要用 RL 而不是单纯微调?
答题框架
SFT 的局限性:
- 学习的是已有数据的分布
- 无法探索更优的决策路径
- 对新任务的泛化能力弱
RL 的优势:
- 通过交互探索最优策略
- 奖励信号指导学习方向
- 能处理长序列决策
具体例子:
- Multi-turn dialog: SFT 学的是"模仿一次对话"
RL 学的是"如何不断改进对话质量"
- Agent 任务: SFT 可能学到捷径(只用表面特征)
RL 学到真正的推理能力
定量对比(如果有数据)
模型 | 任务 | SFT | RL (GRPO) | 提升
Qwen | WebShop | 52% | 68% | +16%
GPT-3.5 | ALFWorld | 61% | 75% | +14%
如何设计 RAG 系统
问题:企业 RAG 和开源 RAG 的区别?
答题框架
权限管理:
- 开源:假设所有用户访问相同数据
- 企业:必须多层过滤(源头 + 检索 + 生成)
Chunk 设计:
- 开源:固定大小(512 tokens)
- 企业:按文档类型调整(合同 600-1000, FAQ 200-400)
成本与延迟:
- 开源:能用就行
- 企业:必须考虑 API 成本(多少次调用?)和 P99 延迟(2s 以内)
评估指标:
- 开源:召回率、NDCG
- 企业:权限泄露率(0 容忍)、幻觉率(<5%)、用户满意度
算法面试
手撕题的通用步骤
1. 理解题意(2 min)
- 问清楚:输入格式、输出格式、边界情况
- "能用额外空间吗?" "数组有序吗?"
2. 分析复杂度要求(1 min)
- 时间:通常要求 O(n log n) 或 O(n)
- 空间:是否要 O(1)
3. 给出算法思路(2-3 min)
- 先说粗思路,不要直接写代码
- 给出示例,trace 一遍
4. 写代码(10 min)
- 先写 skeleton,再填 details
- 用有意义的变量名
5. 验证(3 min)
- 正常案例
- 边界案例(空、单元素、重复)
- 代码 review(指针、索引、off-by-one)
常见模式识别
| 问题特征 | 可能算法 | 例子 |
|---|---|---|
| 需要所有子集 | 回溯/DFS | 子集、排列、组合 |
| 两指针 | 二分/对撞 | 两数之和、容纳最多水 |
| 动态规划 | DP | 编辑距离、背包、路径数 |
| 树的遍历 | DFS/BFS | 所有路径、层序 |
| 贪心 | 排序后选择 | 区间调度、活动选择 |
面试不该踩的坑
| 坑 | 例子 | 解决方案 |
|---|---|---|
| 技术用词不当 | ”我们用了 deepspeed 优化推理” (错,是训练优化) | 分清训练 vs 推理优化 |
| 数字没有出处 | ”模型准确率提升 40%” (没说对比什么) | 明确基线和新方案 |
| 不敢说不知道 | 硬编答案(面试官能看出) | “我不确定,我的理解是…” |
| 过度设计 | 手撕题写了 100 行 | 先写能跑的,再优化 |
| 忽视边界 | 不考虑 null、空数组 | 最后必须验证边界 |
面试前 24 小时清单
- 复习自己项目的 3 个核心难点
- 准备 2 个好的故事(失败 + 解决方案)
- 算法:回溯、DP、二叉树各刷 5 题
- 睡眠:前一晚 8h 以上
- 设备:确认摄像头、麦克风、网速
- 工作区:整洁、光线好