面试面经 · 字节跳动
【字节跳动】【Agent 开发】【暑期实习HR面】面经(八股+大模型项目+手撕)
背景
海外一年制硕士,本科国内中流 211 计算机,投递字节跳动 Agent 开发暑期实习,简历过了之后直接约的 HR 面(技术面之前先聊了一轮,属于交叉面性质,HR 会问一部分技术判断问题)。
字节的 HR 面不是纯聊天。Agent 方向因为岗位新、候选人池子杂,HR 面里会夹技术筛查,尤其是项目真实性和基础八股。以下按当天实际被问到的顺序整理。
题目摘要
- Go 语言基础:slice 的底层结构、扩容规则,以及
append在函数传参时为什么改不动原 slice 的长度。 - MySQL 八股:聚簇索引与二级索引的区别,回表是什么,什么情况下会走覆盖索引;事务隔离级别里 RR 如何解决幻读。
- Redis 八股:缓存穿透、击穿、雪崩的区别与对应方案;Redis 分布式锁为什么用 SETNX + 过期时间,以及锁续期问题。
- Agent 项目深挖:RAG 检索链路里 chunk 怎么切、embedding 模型选型、召回后如何重排;Function Calling 的工具描述怎么写、多工具冲突怎么处理;上下文超长时怎么做管理;推理成本怎么压。
- 手撕算法:给一个字符串数组,找出所有可以由数组中两个不同单词拼接而成的单词(LeetCode 472 连接词变体)。关键思路:先把所有单词塞进 HashSet,对每个单词枚举切分点,判断前缀和后缀是否都在集合里;注意排除自身重复使用的情况,用 DFS 或 DP 优化重复子问题。
项目深挖
简历上写了一个基于 RAG 的企业知识库问答 Agent,HR 追问了三个点。
追问一:你的 chunk 是怎么切的,为什么这么切?
参考回答方向:不要只说"按 512 token 切"。要讲清楚切分策略和业务耦合——比如先按文档结构(标题层级)切,再对超长段落做滑窗,overlap 设 10%–15% 防止语义截断。然后说明为什么:固定长度切会把一个完整答案劈成两半,召回时只命中一半,模型拿不到完整上下文。如果面试官继续问"怎么验证切分合理",答用召回率 + 人工抽检,或者构造一批 query 看命中 chunk 是否包含答案。
追问二:多轮对话里上下文越来越长,你怎么处理?
参考回答方向:分层处理。第一层,最近 N 轮原文保留,保证短期连贯;第二层,更早的对话做摘要压缩,用一个小模型滚动生成 summary;第三层,和当前问题相关的历史片段通过检索召回,而不是全量塞进去。再补一句成本视角:上下文长度直接决定 token 消耗,Agent 场景下每轮都带全量历史,成本会线性膨胀,所以必须做裁剪或摘要。能提到"摘要本身也有信息损失,关键实体要单独抽出来存结构化字段"是加分项。
追问三:Function Calling 的工具多了之后,模型选错工具怎么办?
参考回答方向:先承认这是真实问题。然后给手段:一是工具描述要写清楚适用边界和反例,不能只写功能;二是工具数量超过一定量级(比如 20 个)时做分组或路由,先用一个轻量分类步骤缩小候选工具集;三是加校验层,模型输出的参数做 schema 校验,不合法就让它重试或走兜底。最后可以提一句"工具命名和参数设计要符合模型的语言习惯,别用内部黑话缩写"。
准备建议
- 八股别背结论,背因果链。比如被问 RR 怎么解决幻读,不要只答"间隙锁",要能说清楚:快照读靠 MVCC 读历史版本,当前读靠 next-key lock 锁住记录和间隙,两者配合才在 RR 下避免幻读。HR 面里技术问题不会太深,但答不出因果会直接暴露是背的。
- Agent 项目准备三个"数字":召回率/准确率提升了多少、上下文压缩后 token 降了多少、单次推理成本或延迟是多少。面试官判断项目真假,最直接的方式就是问指标。没有数字的项目,会被默认是跟着教程做的 demo。
- 手撕算法按题型过,不要按题号刷。连接词这题本质是"字符串切分 + 哈希查找",同类还有单词拆分、词典匹配。把「枚举切分点 + 集合判存在」这个模板练熟,比刷 200 道随机题有用。面试时先讲思路再写代码,写之前确认边界条件(空串、单词重复、大小写)。
结果
HR 面结束当天收到反馈,评价是项目部分答得实、八股有细节,3 天后约了下一轮技术面。
想系统备战大厂大模型/Agent 开发?NiceOffer 提供 SDE+LLM 双轨 1v1 陪跑,合同保底 40w 年薪,文末扫码咨询。