字节跳动 AI Agent 工程师 - 面试题 & 面经

面试流程

  • 2-3 轮技术面 + HR 面

  • 每轮:自我介绍(5min)→ 技术问题(15-20min)→ 编程题(30min)

  • 编程题难度:LeetCode Medium ~ Hard


一、Agent 核心面试题

Q: Agent 和 LLM 的区别?

参考答案:

  • LLM:语言模型,核心能力是文本生成和理解,本质是 next token prediction

  • Agent:以 LLM 为大脑的自主系统,额外具备:

    • 环境感知和交互能力
    • 工具调用能力
    • 记忆管理
    • 自主规划和决策
  • 类比:LLM 是大脑,Agent 是有手有脚有记忆的完整人

Q: 如何设计高效的 Agent 上下文维护方案?

参考答案: 分层管理:

  1. 系统上下文:角色定义、工具说明(固定)

  2. 长期记忆:用户画像、历史总结(向量检索按需加载)

  3. 短期记忆:当前对话历史(滑动窗口 + 摘要压缩)

  4. 工作记忆:当前任务状态、中间结果(结构化存储)

优化策略:

  • 上下文压缩:长对话做摘要

  • 按需检索:不把所有信息塞进去

  • 优先级排序:重要信息靠近末尾(recency bias)

  • 结构化格式:JSON/XML 比自然语言更节省 token

Q: Agent 调用工具不正确怎么办?

参考答案: 多层防护:

  1. 预防:优化工具描述、few-shot 示例、参数校验

  2. 检测:工具返回值验证、类型检查、超时检测

  3. 恢复:重试机制、fallback 工具、人工介入

  4. 学习:记录错误案例,用于优化 prompt 或微调

Q: Agent 记忆机制如何设计?

参考答案: 三级记忆:

  • 感官记忆:原始输入,不持久化

  • 短期记忆:对话上下文,滑动窗口管理

  • 长期记忆

    • 语义记忆(知识):向量数据库存储
    • 情景记忆(经历):结构化日志
    • 程序记忆(技能):工具和 workflow 定义

Q: 多 Agent 执行策略的智能选择和切换机制?

参考答案:

  • 路由策略:根据任务类型分发到专业 Agent

  • 协作模式

    • 顺序执行:pipeline 模式
    • 并行执行:独立子任务
    • 讨论模式:多个 Agent 辩论达成共识
  • 切换机制

    • 基于置信度:Agent 不确定时转交
    • 基于能力:任务超出当前 Agent 能力范围时
    • 基于结果:输出不满足质量阈值时触发其他 Agent 审核

二、RAG 高频题

Q: RAG 系统流程?

参考答案:

  1. 索引阶段:文档分块 → Embedding → 存入向量数据库

  2. 检索阶段:Query Embedding → 向量相似度搜索 → 重排序

  3. 生成阶段:检索结果 + 原始问题 → LLM 生成回答

Q: 如何解决 "Lost in the Middle" 问题?

参考答案:

  • LLM 倾向于关注输入的开头和结尾,中间信息容易被忽略

  • 解决方案:

    • 将最相关内容放在开头或结尾
    • 减少检索结果数量,只保留 top-k
    • 对检索结果做摘要后再输入
    • 使用 Map-Reduce:分别处理每个文档再汇总

Q: 向量检索 vs 关键词检索?

参考答案:

  • 向量检索:语义匹配,处理同义词/近义表达好,但可能丢失精确匹配

  • 关键词检索(BM25):精确匹配强,但无法理解语义

  • 最佳实践:混合检索:两者结合 + 重排序(Cross-Encoder)


三、模型微调

Q: LoRA 原理?Q-LoRA 如何优化显存?

参考答案:

  • LoRA:冻结原始权重,添加低秩分解矩阵 A×B(r<<d),只训练 A 和 B

    • 参数量:原始 d×d → r×d + d×r,大幅减少
  • Q-LoRA:在 LoRA 基础上将原始权重量化为 4-bit

    • NF4 量化 + 双重量化 + 分页优化器
    • 可在单卡 24GB 上微调 65B 模型

Q: LoRA 效果不佳时怎么办?

参考答案:

  1. 增大 rank(r),增加可训练参数

  2. 调整学习率和训练轮次

  3. 检查数据质量和数据量

  4. 尝试对更多层应用 LoRA

  5. 考虑全参数微调(如果资源允许)

  6. 数据增强或改善数据分布


四、计算机基础(仍然会考)

  • TCP/IP 协议栈、HTTPS 工作原理

  • 协程 vs 线程区别

  • MySQL 事务隔离级别、索引覆盖

  • Redis 数据结构、持久化

  • 消息队列保证消息不丢失

  • 微服务架构

五、算法题

  • LeetCode 第 2 题(两数相加)等经典题

  • 中等偏难为主