面灵AI

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

轮次
一面
时间
2026-09
来源
牛客网

《面试题目》

  1. Redis 的过期删除是否会立即删除 Key?
  2. 线程池有哪些拒绝策略?
  3. synchronized 获取失败的线程会怎样,实例方法和静态方法分别锁什么?
  4. CompletableFuture 如何并行执行多个任务并处理其中一个任务失败?
  5. G1 垃圾回收器的工作方式是什么?
  6. Redis 有哪些数据结构和高可用方案,ZSet 为什么使用跳表?
  7. Redis 内存接近上限时还能否继续写入?
  8. MySQL 二级索引的叶子节点和非叶子节点分别存什么?
  9. 联合索引遇到等值和范围条件时如何判断是否生效?
  10. MySQL 回滚事务时内部会发生哪些操作?
  11. 如何设计十万人抢一千个座位且优先分配给长途乘客的购票系统?
  12. 如何每 K 个节点一组反转链表?

《参考解析》

  1. 异步编排:多个独立任务可使用 allOf 汇合,总耗时接近最慢任务。异常策略要明确是快速失败、收集全部结果还是允许部分成功,并为每个任务设置超时和错误上下文。
  2. Redis 内存:能否继续写取决于 maxmemory 和淘汰策略。无淘汰策略时写命令会失败;有淘汰策略时会按规则回收 Key,但不能把淘汰当作容量规划。
  3. 联合索引:优化器根据索引前缀、范围条件、选择性和成本决定访问路径。应使用 EXPLAIN ANALYZE 验证实际扫描行数,不能只靠字段书写顺序判断。
  4. 抢票系统:入口削峰并校验用户资格,候选请求按业务规则进入可确定排序的队列;座位分配与库存扣减需要原子化,结果写入使用幂等键并提供超时释放机制。
  5. K 组反转:先检查剩余节点是否满 K 个,再原地反转这一段并连接前后链表;不足 K 个的尾段保持不变。时间复杂度 O(n),额外空间 O(1)。