面灵AI

字节面经-字节跳动后端开发岗面经-08

时间
2026-08
来源
牛客网

《面试题目》

  1. 除了做缓存和分布式锁,Redis 还能做什么?
  2. 什么时候适合用 Redis 存数据?
  3. Redis 有多少种持久化策略?
  4. 讲讲 RDB 的过程?
  5. 了解过 Redis 集群吗?
  6. MySQL 默认的隔离级别是什么?
  7. 数据一致性怎么保证的?
  8. 如何实现整体的限流?
  9. 乐观锁和悲观锁的区别?
  10. aop底层原理?
  11. 如何解决redis大key和热key的问题?
  12. spring框架中bean如何初始化的?
  13. spring怎么解决bean循环依赖的问题?
  14. 说一下责任链和规则树怎么实现的,具体内容是是什么。
  15. 讲一下动态限流如何实现的,ratelimiter的原理
  16. 追问:这个pub sub的原理,是不是建立了长链接?
  17. 说一下AOP原理,追问这个动态代理和反射有什么区别
  18. 说一下Spring其他内容
  19. 一个网站可能面临哪些安全风险?
  20. agent项目用的是什么大模型?
  21. 部署在什么地方?部署的过程遇到什么问题?
  22. 对模型的推理框架有了解吗?
  23. 说一下redia持久化机制
  24. 项目中最大的难点是什么?
  25. 开发项目的时候是从0开始的吗?
  26. 缓存击穿这一类问题自己在单机项目上点一点肯定发现不了,那是怎么知道会有这个问题的呢?
  27. 跳转用的什么协议?
  28. 分块具体怎么做的?
  29. 递归分块具体对于按段落、按章节这些是怎么实现的?
  30. 说一下AOP原理,追问这个动态代理和反射有什么区别(第一次听说,也是被拷打了)
  31. 你在项目中使用了Redis Zset,它是用来做什么的?
  32. Zset的数据结构是怎样的?
  33. B+树是什么?
  34. 你有什么问题想问我们?
  35. 用什么prompt做的?
  36. 闲聊和澄清都是怎么预定义的?
  37. RAG项目做了多久?
  38. 你提到在快手和字节的收获比较大,请分别讲一下你在这两段实习中做了什么,以及收获了什么?
  39. 字节项目的技术架构是怎样的?
  40. 新架构和老架构有什么不同?
  41. [追问] 老架构为什么会存在“每次都需要代码开发”的问题?
  42. C++对于C有什么不一样?
  43. 多态的使用?会有什么情况?
  44. 除了菱形继承还有什么坑点?
  45. 知道智能指针吗?
  46. 如何实现的共享指针,如果我使用共享指针他的引用计数如何实现的?
  47. 进程和线程?线程有哪些状态?
  48. 介绍实习经历?做了哪些工作?有什么产出?多少人协作?
  49. 接收到的数据格式?
  50. 你觉得做的过程中有什么难点和收获?
  51. MQ如何保证消息不丢失?
  52. 分布式ID生成方案?
  53. 如何用Redis实现分布式锁?
  54. 假如让你实现一个消息队列,你会怎么实现?
  55. 海洋物联网平台是做什么的?
  56. 如何接入多源异构的设备数据?
  57. 你提到反射,Java中实现反射有哪几种方式?
  58. CgLib和JDK动态代理差异?
  59. 数据是如何存储的?
  60. MySQL索引有哪些?
  61. 假设一个SQL执行很慢,如何排查?
  62. 你对图数据库有了解么?
  63. 进程和线程的区别,基本单位?
  64. 用户态和内核态有什么区别,如何发生切换?
  65. Nginx反向代理有什么特点,是怎么分给后端服务器的?
  66. 缓存穿透会出现在哪些场景下,除了缓存空值和布隆过滤器还可以?
  67. 看你用了protobuf,它是通过定义的过程当中是通过什么东西识别它的字段的呢?
  68. 比如说我定义了一个 int对吧,如果下一个版本,我又定义了一个它怎么识别我定义的是同一个东西呢?
  69. 你能介绍一下 java那个锁么,有什么类型的锁,作用是啥
  70. cas是软件支持的还是硬件支持的?
  71. 实习到岗实践以及可实习时长?
  72. 你对客户端开发岗位有什么想法?
  73. 请简单介绍一下 JVM。
  74. JVM 的垃圾回收机制和客户端采用的引用计数技术有什么区别?
  75. 说说三色标记法,以及G1回收器和cms的三色标记法区别?
  76. 在 MySQL 中,锁和索引主要用来解决什么问题?
  77. Java 线程和 OS 线程之间是什么关系?
  78. Java 中有没有机制可以避免线程死锁?
  79. Kafka 出现消息消费 lag(消费延迟、消息堆积)时,如何排查问题?
  80. 你们用什么实现的分布式锁?
  81. 为什么要引入这个组件?
  82. 你知道哪些锁的类型?

《参考解析》

  1. 这类问题建议结合自己的项目经历和岗位要求准备具体案例,突出思考过程而非死记结论,面试官更看重解决问题的逻辑。
  2. CAS通过比较并交换实现无锁更新,失败后需要重试;库存扣减等高竞争场景可以引入版本号或分段计数减少冲突概率,避免忙等消耗过多CPU。
  3. 算法题先明确边界条件与不变量,再选择合适的数据结构;双指针、哈希表、递归/迭代是常见工具,目标是把复杂度控制在线性或对数级别。
  4. Spring/Spring Boot的核心是IOC容器与AOP,理解Bean生命周期、自动装配原理和常见starter的加载顺序是回答这类问题的关键。
  5. 介绍项目时应说明背景、个人分工、遇到的技术难点及解决方案,并量化收益(性能提升、成本下降等),便于面试官追问细节。
  6. 笔试类题目建议按题型分配时间,行测题优先保证正确率,编程/建模题先理清规则再动手,避免因为细节遗漏丢分。
  7. 红黑树是内存内的平衡二叉树,追求单点操作的对数复杂度;B+树针对磁盘/索引场景做了扇出优化,减少IO次数,更适合范围查询和顺序扫描。
  8. 进程是资源分配的基本单位,线程是CPU调度的基本单位,协程是用户态的轻量级调度单位,切换成本远低于线程,但需要语言/运行时支持。
  9. CPU飙高排查一般先用top/htop定位进程,再用jstack/pstack抓线程栈,结合火焰图找到热点方法,常见原因是死循环、频繁GC或锁竞争。