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

字节跳动 · 后端开发 · 一面 · 2026-03

《面试题目》

  1. 项目经历深度挖掘
  2. Spark如何解决数据倾斜,有哪些方式?
  3. 有没有排查过JVM异常和调优?
  4. Spark调优有哪些策略?
  5. Kafka如何保证数据不丢失?
  6. Redis数据存储多少key,满了如何处理,过期时间如何淘汰数据?
  7. Java并发编程了解哪些,线程池原理?
  8. 死锁条件,以及乐观锁和悲观锁的区别?
  9. 手撕代码:最长公共子串(要求动态规划优化)。

《参考解析》

  1. Spark数据倾斜:通过加盐(Salting)分散Key、广播Join(Broadcast Join)避免Shuffle、调整并行度或过滤倾斜Key解决。
  2. Kafka不丢失:生产者设置acks=all,开启重试;Broker端保证副本数,关闭自动提交,手动确认Offset。
  3. Redis过期淘汰:淘汰策略包括LRU、LFU、TTL过期删除;内存满了则通过配置maxmemory-policy(如allkeys-lru)进行清理。
  4. 死锁条件:互斥条件、请求与保持条件、不可剥夺条件、循环等待条件。破坏任意一个即可打破死锁。
  5. 最长公共子串:标准DP空间复杂度O(N*M),优化空间可通过滚动数组或空间压缩将空间复杂度降低至O(min(N,M))。