字节后端开发秋招二面(2026 年 8 月)

岗位:后端开发 · 更新于 2026-08-23

面经与参考答法

字节后端开发秋招二面(2026 年 8 月)

这是一份 A 级第一手二面记录,问题集中在 Redis 集群、分布式锁和 Agent 项目高可用。原帖没有公开算法题题面,本文不会补写不存在的题目。

(1)怎样介绍大规模业务中的 Redis 架构?

先区分两个问题:高可用与水平扩展。

面试官问“多大量级”时,不要用“并发很高”代替事实。应给出自己可验证的指标:峰值 QPS、数据量、命中率、P99 延迟、实例数和热点占比;不知道运维全局数据就明确边界,只讲自己观测和负责的部分。

(2)Redis 用过哪些能力,怎样从项目场景回答?

按“业务问题 → 数据结构/命令 → 生命周期 → 一致性与降级”回答比罗列命令更有效。例如:

每个例子都要补 TTL、淘汰、穿透/击穿/雪崩、缓存与数据库一致性,以及 Redis 不可用时业务如何降级。

(3)Redis 分布式锁有哪些实现层次?

只用 SETNX 不够,因为“加锁成功后、设置过期时间前崩溃”会留下永久锁。单实例的基本正确形式是一次原子命令:

SET lock:order:<id> <unique-token> NX PX <ttl-ms>

释放时必须比较唯一 token,只能删除自己持有的锁;比较与删除要用 Lua 脚本原子执行。Java 项目通常使用成熟客户端(如 Redisson)的可重入锁与续期机制,但仍应理解其租约、故障和拓扑边界。

延伸阅读:Redis 分布式锁:租约、续期与故障边界。

(4)锁的过期时间和 Watchdog 要注意什么?

固定 TTL 太短会导致任务尚未完成、锁已过期,第二个执行者进入临界区;太长则持有者崩溃后恢复缓慢。TTL 应覆盖正常执行时间与合理抖动,并对超时、续期失败和任务卡死设置上限。

Watchdog 会在持有者仍存活时周期续约,降低“业务正常但 TTL 到期”的风险,但它不能消除所有问题:进程长时间暂停、网络隔离或 Redis 故障都可能让租约失效。对写入数据库等重要资源,应再使用幂等键、唯一约束或 fencing token,避免过期持有者恢复后写入旧结果。

(5)如何讲 Agent 项目里最难的设计和高可用?

把 Agent 编排与业务副作用分开回答:

  1. Agent 图负责计划、工具调用、重试、审批和终止条件,状态通过 checkpoint 恢复;
  2. 业务写入以 MySQL 为真相源,在同一事务写业务数据与 Outbox 事件;
  3. 独立发布器把 Outbox 投递到 Kafka,消费者按事件 ID 幂等;
  4. 分布式锁只保护确需互斥的短临界区,不能替代数据库唯一约束和事务;
  5. 用 trace 关联 run、step、tool call、outbox event,监控死循环、积压、重试和超时。

面试官真正想听的是失败窗口:模型调用成功但状态没保存怎么办,事务提交后 Kafka 没发出去怎么办,锁续期失败怎么办。能够逐一说明恢复依据,比堆叠组件名称更有说服力。

(6)算法题没有公开题面时怎么整理?

原帖只记录“算法题”,没有题目、输入输出或约束。真实题库应保留这个事实,但不能凭空补一道常见题。复习时仍应覆盖数组/字符串、哈希、双指针、二叉树、图搜索和常见动态规划,并在模拟面试中练习先澄清约束再编码。

(7)反问和结果沟通怎样处理?

可以问团队当前最重要的工程问题、岗位前三个月的交付预期、面试官认为自己还欠缺的能力。结果时间由招聘流程决定,不应在公开面经保留私人联系方式或可定位个人的沟通细节。

面经是候选人自述,解析为 Agent Journey 整理。更多大厂 AI / Agent 岗面经 · 按目标公司模拟面试