字节跳动

Agent 开发一面面经

完整信息

13 条问法 · 12 道题

本篇目录

来源内容仅部分可用:原文不足

说出来你们可能不信——这场面试是面试官主动找我约的。

事情是这样的。我一直在牛客上分享面试经历,上周突然收到一条私信,对方说自己是字节的面试官,看了我的面经觉得基础还不错,问我有没有兴趣试试他们部门,可以帮我内推。

我当时第一反应是:这不会是骗子吧?

确认了对方的企业邮箱之后,我才把简历发了过去。结果第二天就收到了面试邀请,效率快得离谱。激动归激动,该准备的还是得准备。花了两天把项目和八股重新过了一遍,面试聊下来整体很顺畅,今天就记录一下这次面试的题目和回答,希望能给同样在准备面试的朋友一些参考。

文末有个小福利,想要的直接划到底部。

1. 多模态结构是怎样的?

面试官开场就问了这个,大概是看我对多模态有没有基本认知。

我的回答:

多模态模型的核心是"让LLM能看懂非文本信息"。以视觉为例,标准架构分三步:

第一步是视觉编码,用ViT或者CLIP把图片转成特征向量;第二步是特征对齐,用适配器(比如Q-Former或简单线性层)把视觉特征映射到LLM的嵌入空间;第三步是训练策略,通常是先冻结视觉编码器和LLM只训练适配器,等对齐好了再端到端微调。

面试官追问"为什么需要两步,不能直接喂特征吗",我说因为视觉特征和文本Token不在一个语义空间里,直接喂LLM理解不了,必须先做映射。

2. RAG完整流程是怎样的?

这道题问的是RAG的标准流程,我分离线在线两个阶段讲。

我的回答:

离线阶段:

文档 → 格式解析(PDF/Markdown/Word) → 语义切分 → Embedding → 存入向量库

切分原则是:有结构按结构切(标题/段落),没结构按固定大小切(512字+128字重叠)。

在线阶段:

用户Query → Query改写(补全指代/扩展同义) → 多路召回 → 融合排序 → Rerank → 拼Prompt → LLM生成

多路召回指的是向量检索+关键词检索(BM25)双路并行,RRF融合各路结果,再用Cross-Encoder做精排。

面试官追问"向量检索和关键词检索各自的优势是什么",我说向量检索擅长语义匹配("手机"能匹配"iPhone"),关键词检索擅长精确匹配(专业术语、编号、代码),两者互补。

3. LoRA和QLoRA的区别?

这道题考的是参数高效微调。

我的回答:

LoRA的原理是冻结底座模型,在每一层插入一个可训练的旁路低秩矩阵:

其中W是原始权重(冻结),A和B是小矩阵(可训练),参数量远小于W。

QLoRA是在LoRA的基础上,把底座模型量化到4bit,进一步压缩显存。

底座精度 16bit 4bit
显存占用 较高 省60%以上
效果 接近全量微调 接近LoRA
适用场景 显存充足 消费级显卡

QLoRA之所以能保持效果,是因为虽然底座是4bit的,但训练过程中的梯度计算是在BF16精度下做的,量化只影响前向传播的精度。

4. A2A和MCP分别是什么?

这道题考的是Agent通信协议。

我的回答:

**MCP(Model Context Protocol)**是Agent和工具之间的协议,解决"怎么调用工具"的问题。它定义了一套标准接口——工具发现、

以下补充内容据 zero2Agent 公开转存:

  1. 长上下文有哪些处理方案?

我的回答:

两种思路:

让模型支持更长上下文:

位置编码扩展:通过位置插值(PI)或NTK-aware让模型泛化到更长序列
KV Cache压缩:对历史Token的Key/Value做降维或筛选

不喂全量,改用RAG检索:

知识类任务用RAG比硬塞全文更优
带来源引用和知识更新能力

选型建议:长文档总结用长上下文模型,开放域问答用RAG,复杂推理任务两者结合。

面试官追问"什么时候不能只用RAG",我说需要全局理解的任务(比如"整本书的核心论点是什么")RAG效果不好,因为检索只能拿到片段,看不到整体。

  1. 常用的Agent框架有哪些?分别适合什么场景?

我的回答:

LangChain

通用框架

快速搭原型、组件拼接

LangGraph

状态机

复杂Agent循环、条件分支

LlamaIndex

检索框架

RAG系统、知识库构建

AutoGen

多智能体

多Agent协作、群聊

Dify

低代码

非技术人员快速搭建

个人经验:做复杂状态流转选LangGraph;做检索密集型选LlamaIndex;做多Agent协作选AutoGen。LangChain适合验证想法,但不适合上生产。

  1. 多模态检索是怎么做的?

我的回答:

核心是CLIP跨模态Embedding。CLIP同时训练了图片编码器和文本编码器,把两种模态映射到同一个向量空间。检索时用户文本Query过文本编码器,然后去向量库里找最接近的图片向量。

进阶方案是混合检索——如果图片里有文字(截图、海报),先用OCR提取文字,然后图文双路召回,用RRF融合排序:

  1. 用户信息和历史对话怎么存?

我的回答:

用户画像存KV数据库(Redis或MySQL)。用户画像是结构化数据,偏好设置、常用工具、个人信息,每个字段有明确的key,用KV最适合。

1
2
3
4
5

{
  "user_id": "u123",
  "preferred_lang": "Python",
  "timezone": "Asia/Shanghai"
}

历史对话存向量库(Milvus/Pinecone)。每条对话作为一个向量,附带元数据(时间戳、会话ID、任务类型)。检索时用向量相似度+元数据过滤。

Agent使用时先加载用户画像,再检索相关历史对话,合并注入上下文。

  1. AI开发有什么心得?

我的回答:

AI辅助开发主要用在三个场景:

代码生成:重复性代码(CRUD、DTO、配置类)交给AI,从10分钟降到1分钟。

Debug:报错日志贴给Claude Code分析,快速定位NPE、空指针之类的问题。

测试生成:写完业务逻辑后让AI生成单元测试用例,框架性的东西省很多时间。

整体效率提升了大概30%-40%。但有个原则必须坚持:AI生成的代码要人工审查+测试验证,不能直接上线。

  1. 你对Agent的预期是什么?

我的回答:

现状:Agent还在初级阶段。能落地的多半是Workflow或简单ReAct循环,远没到"自主智能"的程度。核心痛点还是幻觉和稳定性。

未来期待:

长期记忆:记住用户的偏好和习惯,不用每次都从头理解
跨App操作:打通日历、邮件、文档,完成复合任务
主动服务:不只被动回答,能根据场景主动建议

最终理想形态是真正的个人数字助理(PDA),帮用户完成事情,而不只是回答问题。

【原帖配图文字整理】

图1:图片输入→视觉编码器ViT/CLIP→视觉特征→适配器/Q-Former(特征对齐)→LLM主干→文本输出;文本输入直接进入LLM主干。
图2:W′=W+ΔW=W+BA。

本篇目录
  1. 01
  2. 02
    面试官追问"为什么需要两步,不能直接喂特征吗",我说因为视觉特征和文本Token不在一个语义空间里,直接喂LLM理解不了,必须先做映射。
  3. 03
  4. 04
    面试官追问"向量检索和关键词检索各自的优势是什么",我说向量检索擅长语义匹配("手机"能匹配"iPhone"),关键词检索擅长精确匹配(专业术语、编号、代码),两者互补。
  5. 05
  6. 06
  7. 07
  8. 08
    面试官追问"什么时候不能只用RAG",我说需要全局理解的任务(比如"整本书的核心论点是什么")RAG效果不好,因为检索只能拿到片段,看不到整体。
  9. 09
  10. 10
  11. 11
  12. 12
  13. 13

同作者面经

展开其余 1 篇收起其余 1 篇

相关公司