面灵AI

字节跳动后端开发二面面经

轮次
二面
时间
2026-08
来源
牛客网

《面试题目》

  1. 请做一下自我介绍。
  2. 网络空间安全专业主要学习了哪些内容?
  3. 你如何理解 Harness,它的核心职责是什么?
  4. Agent 项目使用了哪些中间件和数据库?
  5. 知识库中的内容是如何切分的?
  6. 项目使用了什么 Embedding 模型?
  7. Agent 未来发展的核心方向是什么?项目中最大的前沿技术挑战是什么?
  8. 平时通过哪些方式提升技术能力?
  9. 出现消息堆积时应该如何处理?
  10. 如何分析 MySQL 慢查询?
  11. 令牌桶限流算法的原理是什么?
  12. 如何实现滑动窗口限流?
  13. 常见的系统监控指标有哪些?
  14. JDK 7 和 JDK 8 的 HashMap 实现有什么区别?
  15. 如何保证 HashMap 的线程安全?
  16. 线程池有哪些核心参数?
  17. ZooKeeper 如何充当注册中心?
  18. ZooKeeper 分布式锁的原理是什么?
  19. 如何求最长公共子串并返回该子串?
  20. 你有什么想了解的问题?

《参考解析》

1. 消息堆积处理:先确认是生产流量突增、消费者故障、下游变慢还是单条坏消息导致阻塞,再根据原因恢复消费能力。可临时扩容消费者,但不能超过分区带来的有效并行度;同时应监控积压量和最老消息年龄,并为过期消息、失败重试和死信队列建立明确处理策略。

2. MySQL 慢查询分析:先通过慢查询日志和监控定位高耗时、高频 SQL,再使用 EXPLAIN ANALYZE 检查实际执行路径、扫描行数、索引选择、排序和临时表。优化时同时检查 SQL 写法、索引设计、数据分布及锁等待,避免只凭执行时间直接加索引。

3. 令牌桶与滑动窗口:令牌桶按固定速率补充令牌,请求只有取得令牌才能通过,因此既能限制长期平均速率,也允许桶容量范围内的瞬时突发。滑动窗口可将时间划分为多个小桶,统计当前时刻向前一个完整窗口内的请求数;桶越细越准确,但存储和计算成本越高。

4. HashMap 的版本差异:JDK 7 采用数组加链表,扩容迁移时使用头插法,多线程误用可能形成环。JDK 8 改为数组、链表和红黑树,链表达到阈值且数组容量满足条件时树化,扩容时根据哈希位将节点拆分到原位置或原位置加旧容量的位置。

5. ZooKeeper 分布式锁:客户端在锁目录下创建临时顺序节点,序号最小者获得锁,其他客户端只监听自己前一个节点,避免所有等待者同时被唤醒。持锁客户端会话结束后临时节点自动删除,后继节点收到通知后继续竞争。