字节跳动

Agent 开发一面、二面、三面面经

完整信息

97 条问法 · 87 道题

本篇目录

Timeline:

09.02 一面 过

09.08 二面 过

09.15 三面 横向挂

累了,毁灭吧……9月份后续的两周字节又有两个部门电话约面,一个是云服务部门,由于没有做过对口的实习,直接拒面。另一个是Data的Agent开发,本人对于Agent开发并无太大兴趣,而且这玩意实际上缺乏稳定性,我更加偏向于传统的业务后端,因此也拒了面试。希望国庆节之后,字节能来点正常的岗位捞面。

一面:

A. 开场、经历与求职方向

  1. 请做一个简单的自我介绍。
  2. 你第一段实习在哪里,所在团队和主要工作是什么?
  3. 你在字节实习为什么没有转正?什么时候知道没有转正 HC?
  4. 这次求职主要倾向什么方向?
  5. 你平时主要使用 AI 工具,还是也学习大模型和 Agent 的基础知识?
  6. 舆情分析 Agent 是学校项目还是个人兴趣项目?项目定位是什么?

B. MySQL、B+ 树与订单索引设计

  1. MySQL 索引通常是什么结构?InnoDB 中应怎样设计索引?
  2. 为什么数据库索引常用 B+ 树,而不是二叉搜索树、红黑树或 B 树?
  3. B+ 树与平衡二叉搜索树的查找复杂度有什么区别?
  4. (题面缺失,按对话推断)给定一个订单表和高频查询,这个表与查询的索引应怎样设计?
  5. 联合索引为什么通常先放等值过滤列?什么是最左前缀原则?
  6. 查询要返回 id 和 amount 时,哪些列应放进联合索引?怎样权衡覆盖索引与索引体积?
  7. InnoDB 的主键索引和非主键索引有什么区别?
  8. 查询包含 ORDER BY created_at 时,联合索引应怎样设计?一定要写 DESC 吗?
  9. 建立两个独立索引后,底层是一棵 B+ 树还是两棵 B+ 树?
  10. 两个独立索引怎样参与查询?为什么它们通常不能同时高效完成过滤和排序?
  11. 对于“按订单和状态过滤、按创建时间取最新若干条”的查询,最终联合索引和查询过程是什么?
  12. 使用 LIMIT offset, size 扫描百万或上亿行数据有什么性能问题?
  13. 怎样使用游标分页优化深分页?游标为什么要包含唯一键?
  14. 如果一个订单有一亿条子订单,需要逐批调用 RPC 并更新状态,怎样设计可靠的离线处理任务?

C. MySQL、Redis 与并发控制

  1. Redis 有没有类似数据库二级索引的能力?
  2. Redis 和 MySQL 各有什么优缺点?什么场景分别选择它们?
  3. MVCC 是做什么的?它怎样服务于事务隔离?
  4. Redis 有事务吗?它与 MySQL 事务有什么区别?
  5. Redis 命令大体串行执行,为什么业务上仍然会出现并发问题?
  6. Redis 6 引入 I/O 多线程后,是否变成多个线程并发修改同一个 Key?
  7. 请举一个 Redis 多步骤操作并发不安全的具体例子。
  8. 为什么不能先 GET 判断锁不存在,再执行 SET?SET NX 解决了什么问题?
  9. 一个基本正确的 Redis 分布式锁应怎样获取?
  10. 已经使用 SET NX,为什么释放锁还需要 Lua?为什么不能直接 DEL?
  11. 如果业务没有执行完锁就过期了,怎样处理?
  12. Pipeline 和 Lua 分别解决什么问题?Pipeline 中的一批命令是原子的吗?

D. 缓存淘汰与 LRU 算法

  1. Redis 内存达到上限时有哪些淘汰策略?
  2. 除了 LRU,还了解哪些缓存替换算法?
  3. LRU 的核心原理和数据结构是什么?get、put 的复杂度是多少?
  4. 请使用你熟悉的语言实现支持构造、get 和 put 的 LRU Cache。

E. 候选人反问与面试反馈

  1. 该抖音电商团队主要负责什么业务?
  2. 怎样理解面试官对本场表现的建议,后续应怎样改进?

二面:

A. 自我介绍与风控实习项目

  1. 请简单做一下自我介绍。(00:29)

2. - 10. 字节实习相关产出拷打

B. AI Coding 过程与技术方案评审

  1. 是否收到面试前的 AI Coding 题?目前完成得怎么样?(08:20—08:27)
  2. 展示一下完成合同审核题的过程,你是怎样使用 AI 开发的?(08:39—09:05)
  3. 你对 AI 生成的技术方案提了哪些修改?具体说一两个点。(10:02—10:16)
  4. AI 给出的技术方案很长,人应该怎样 Review、抓重点和做取舍?(10:50—12:11)
  5. 除了主要流程,Review 和开发时还关注哪些点?(13:00)
  6. 当前实现处于什么阶段?不接模型的 baseline 能做什么?(13:24)

C. 输入歧义、不确定性与模型分工

  1. 报告前面提示了一些歧义和问题,你怎样看待这些问题?(14:32)
  2. 输入有歧义时,下面输出的关系是怎么得出的?有歧义就不建立关系吗?(15:19)
  3. 原始信息不完整、不确定时,所谓“默认结果”应如何处理?结论会不会也有问题?(16:08—16:25)
  4. 开发时是否给 AI 明确说明过这些边界情况?是否确认过它的处理逻辑?(16:34)
  5. 这道 AI Coding 题实际花了多长时间?(17:04)
  6. 如果时间更充足,你会怎样继续优化,并怎样和 AI 交互?(17:19)
  7. 没有产品同学可以确认需求时,遇到模糊信息怎么办?(17:53)
  8. 两个条款名称很相似,怎样确认它们是不是同一个条款?能否直接制定一个判断逻辑?(18:25—18:39)
  9. 如果产品同学也是新人,也不知道正确答案,怎么办?(19:00)
  10. 最终报告怎样区分确定的关系和疑似关系?置信度应怎样处理?(19:22)
  11. 如果给你两天时间,最应该优先优化哪些模块?(20:10)
  12. 是否需要引入大模型?哪些部分交给模型,哪些部分交给代码规则?(21:02)
  13. 判断一个任务适合模型还是规则,有什么通用标准?(23:04)

D. 质量评估与 AI 辅助迭代

  1. 怎样判断最终报告的质量,确认输出的关系是否正确?(24:02—24:11)
  2. 将报告与人工标准答案比较后,发现差异应如何迭代?(24:39)
  3. 差异一定要人工逐个分析吗?这个过程怎样利用 AI?(25:45)
  4. 让 AI 分析差异、辅助修复,需要提供哪些信息?(26:25)
  5. 只知道正确答案,不知道最佳实现策略时,怎样让 AI 帮忙?(26:51—26:57)
  6. 告诉 AI 自己设想的实现策略,还是提供输入和正确输出让它推导,哪种更好?(27:30)
  7. 是否实践过把测试用例交给 AI,让它验证、发现偏差并自行迭代?(28:07)

E. 长文档与上下文工程

  1. 合同变成一两百页,超过 Agent 上下文窗口时怎么办?(29:35)
  2. 文档具体怎样切分?如何处理切分边界和块大小?(30:13)
  3. 文档切分以后,怎样得到最终答案?(31:16)
  4. 不同子 Agent 分别处理文档块之后,怎样汇总结果?(32:17)
  5. 汇总后的结果又超出上下文怎么办?如何让 300 页合同的处理链路真正跑通?(32:58—33:41)
  6. 压缩或丢弃信息时,怎样判断哪些信息无效?(33:56)
  7. 渐进式披露在这个合同场景中具体怎样落地?(35:32)

F. 幻觉与事实约束

  1. 如果业务强约束 AI 不能基于虚构信息得出关系和结论,工程上怎样设计?(37:59—38:51)
  2. 用另一个 Agent 评估结果,但评估 Agent 本身也有幻觉,怎么办?(40:47—40:57)
  3. 判断结论是否基于事实,一定要经过 AI 吗?怎样把非 AI 校验纳入工程链路?(42:01)

G. 求职经历、学习方法与工具选型

  1. 为什么没有继续在原团队实习并转正?(44:29)
  2. 实习期间怎样学习 AI?从哪里获取信息?(44:55)
  3. 信息很多时优先关注什么?关注之后有什么实践动作?(45:50)
  4. 学到的新知识有没有用到实习开发中?(46:35)
  5. 除了辅助开发,AI 有没有用到国际支付风控的业务场景中?(46:52)
  6. 怎样理解 CLI 和 MCP Tool,它们有什么区别?(47:31)
  7. 什么场景使用 MCP,什么场景使用 CLI,什么场景需要 Skill?(48:39,按对话推断包含 Skill)
  8. 同一项能力支持多种接入方式时怎样选择?自己的业务能力如何开放给 Agent?(50:34)
  9. 如果重点追求性能和低延迟,CLI、MCP、Skill 应怎样选型和设计?(51:51)

H. 反问与面试反馈

  1. 本轮没有算法题吗?(53:06,候选人反问)
  2. 上一轮做了什么算法题?平时是否比较擅长算法题?(53:12—53:21)
  3. 对这场面试或后续学习有什么建议?(53:24,候选人反问)
  4. 你自己对这场面试有什么感受?(53:43)
  5. 怎样理解新概念的核心差异、出现原因、解决的问题及带来的新问题?(54:17—55:17,面试官反馈中的引导问题)

三面:

A. 开场与实习经历

  1. 请做一下自我介绍。
  2. 你在实习团队拿到转正 Offer 了吗?为什么没有转正?
  3. 介绍一件实习期间能体现个人技术成长和能力的事情。

B. 实习产出A

  1. - 24. 字节实习产出A拷打

C. 实习产出B

  1. - 9. 字节实习产出B拷打

D. 实习产出C

  1. - 9. 字节实习产出C拷打

E. 舆情分析 Agent 项目

  1. 可以现场演示一下舆情分析 Agent 产品吗?
  2. 这个项目是否已经上线并被真实用户使用?
  3. 没有上线的话,本地直接运行这个项目吧。
  4. 项目的目录结构是什么,为什么这样设计?
  5. 你认为项目中最关键的代码和技术方案是什么?
  6. 为什么自己实现这套流程,而不是直接使用成熟的开源 Agent 框架?
  7. 为什么要持久化任务、工具调用和执行过程数据?

F. 算法题

  1. 实现「最短无序连续子数组」。给定一个无序的数组,找到最短的连续覆盖区间,对区间内的元素递增排序,使得数组整体递增。(当时没多想,sort一下就完事了,面试官也没看具体代码的思路,看我样例过了就OK)

G. 候选人反问与反馈

  1. 商品 AI 主要服务哪一类用户?
  2. 商品 AI 想解决什么问题、达到什么业务效果?面试官对本场有什么建议?

希望面经能对大家的秋招有所帮助,也愿节后的面试能顺利一些,别再被横向了,能收到更多的面试[赞]

本篇目录
  1. 01
  2. 02
  3. 03
  4. 04
  5. 05
  6. 06
  7. 07
  8. 08
  9. 09
  10. 10
  11. 11
    追问
    查询要返回 `id` 和 `amount` 时,哪些列应放进联合索引?怎样权衡覆盖索引与索引体积?
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
    追问
    对于“按订单和状态过滤、按创建时间取最新若干条”的查询,最终联合索引和查询过程是什么?
  17. 17
  18. 18
  19. 19
    追问
    如果一个订单有一亿条子订单,需要逐批调用 RPC 并更新状态,怎样设计可靠的离线处理任务?
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
    追问
    为什么不能先 `GET` 判断锁不存在,再执行 `SET`?`SET NX` 解决了什么问题?
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
    追问
    原始信息不完整、不确定时,所谓“默认结果”应如何处理?结论会不会也有问题?(16:08—16:25)
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
    追问
    两个条款名称很相似,怎样确认它们是不是同一个条款?能否直接制定一个判断逻辑?(18:25—18:39)
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
    追问
    汇总后的结果又超出上下文怎么办?如何让 300 页合同的处理链路真正跑通?(32:58—33:41)
  68. 68
  69. 69
  70. 70
    如果业务强约束 AI 不能基于虚构信息得出关系和结论,工程上怎样设计?(37:59—38:51)
  71. 71
    追问
    用另一个 Agent 评估结果,但评估 Agent 本身也有幻觉,怎么办?(40:47—40:57)
  72. 72
    追问
    判断结论是否基于事实,一定要经过 AI 吗?怎样把非 AI 校验纳入工程链路?(42:01)
  73. 73
  74. 74
  75. 75
  76. 76
  77. 77
  78. 78
  79. 79
  80. 80
  81. 81
  82. 82
  83. 83
  84. 84
  85. 85
  86. 86
  87. 87
  88. 88
  89. 89
  90. 90
  91. 91
  92. 92
  93. 93
  94. 94
  95. 95
    实现「最短无序连续子数组」。给定一个无序的数组,找到最短的连续覆盖区间,对区间内的元素递增排序,使得数组整体递增。(当时没多想,sort一下就完事了,面试官也没看具体代码的思路,看我样例过了就OK)
  96. 96
  97. 97

相关公司