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 以上
  • 设备:确认摄像头、麦克风、网速
  • 工作区:整洁、光线好