字节面经-字节跳动后端开发岗面经-08
- 时间
- 2026-08
- 来源
- 牛客网
《面试题目》
- 除了做缓存和分布式锁,Redis 还能做什么?
- 什么时候适合用 Redis 存数据?
- Redis 有多少种持久化策略?
- 讲讲 RDB 的过程?
- 了解过 Redis 集群吗?
- MySQL 默认的隔离级别是什么?
- 数据一致性怎么保证的?
- 如何实现整体的限流?
- 乐观锁和悲观锁的区别?
- aop底层原理?
- 如何解决redis大key和热key的问题?
- spring框架中bean如何初始化的?
- spring怎么解决bean循环依赖的问题?
- 说一下责任链和规则树怎么实现的,具体内容是是什么。
- 讲一下动态限流如何实现的,ratelimiter的原理
- 追问:这个pub sub的原理,是不是建立了长链接?
- 说一下AOP原理,追问这个动态代理和反射有什么区别
- 说一下Spring其他内容
- 一个网站可能面临哪些安全风险?
- agent项目用的是什么大模型?
- 部署在什么地方?部署的过程遇到什么问题?
- 对模型的推理框架有了解吗?
- 说一下redia持久化机制
- 项目中最大的难点是什么?
- 开发项目的时候是从0开始的吗?
- 缓存击穿这一类问题自己在单机项目上点一点肯定发现不了,那是怎么知道会有这个问题的呢?
- 跳转用的什么协议?
- 分块具体怎么做的?
- 递归分块具体对于按段落、按章节这些是怎么实现的?
- 说一下AOP原理,追问这个动态代理和反射有什么区别(第一次听说,也是被拷打了)
- 你在项目中使用了Redis Zset,它是用来做什么的?
- Zset的数据结构是怎样的?
- B+树是什么?
- 你有什么问题想问我们?
- 用什么prompt做的?
- 闲聊和澄清都是怎么预定义的?
- RAG项目做了多久?
- 你提到在快手和字节的收获比较大,请分别讲一下你在这两段实习中做了什么,以及收获了什么?
- 字节项目的技术架构是怎样的?
- 新架构和老架构有什么不同?
- [追问] 老架构为什么会存在“每次都需要代码开发”的问题?
- C++对于C有什么不一样?
- 多态的使用?会有什么情况?
- 除了菱形继承还有什么坑点?
- 知道智能指针吗?
- 如何实现的共享指针,如果我使用共享指针他的引用计数如何实现的?
- 进程和线程?线程有哪些状态?
- 介绍实习经历?做了哪些工作?有什么产出?多少人协作?
- 接收到的数据格式?
- 你觉得做的过程中有什么难点和收获?
- MQ如何保证消息不丢失?
- 分布式ID生成方案?
- 如何用Redis实现分布式锁?
- 假如让你实现一个消息队列,你会怎么实现?
- 海洋物联网平台是做什么的?
- 如何接入多源异构的设备数据?
- 你提到反射,Java中实现反射有哪几种方式?
- CgLib和JDK动态代理差异?
- 数据是如何存储的?
- MySQL索引有哪些?
- 假设一个SQL执行很慢,如何排查?
- 你对图数据库有了解么?
- 进程和线程的区别,基本单位?
- 用户态和内核态有什么区别,如何发生切换?
- Nginx反向代理有什么特点,是怎么分给后端服务器的?
- 缓存穿透会出现在哪些场景下,除了缓存空值和布隆过滤器还可以?
- 看你用了protobuf,它是通过定义的过程当中是通过什么东西识别它的字段的呢?
- 比如说我定义了一个 int对吧,如果下一个版本,我又定义了一个它怎么识别我定义的是同一个东西呢?
- 你能介绍一下 java那个锁么,有什么类型的锁,作用是啥
- cas是软件支持的还是硬件支持的?
- 实习到岗实践以及可实习时长?
- 你对客户端开发岗位有什么想法?
- 请简单介绍一下 JVM。
- JVM 的垃圾回收机制和客户端采用的引用计数技术有什么区别?
- 说说三色标记法,以及G1回收器和cms的三色标记法区别?
- 在 MySQL 中,锁和索引主要用来解决什么问题?
- Java 线程和 OS 线程之间是什么关系?
- Java 中有没有机制可以避免线程死锁?
- Kafka 出现消息消费 lag(消费延迟、消息堆积)时,如何排查问题?
- 你们用什么实现的分布式锁?
- 为什么要引入这个组件?
- 你知道哪些锁的类型?
《参考解析》
- 这类问题建议结合自己的项目经历和岗位要求准备具体案例,突出思考过程而非死记结论,面试官更看重解决问题的逻辑。
- CAS通过比较并交换实现无锁更新,失败后需要重试;库存扣减等高竞争场景可以引入版本号或分段计数减少冲突概率,避免忙等消耗过多CPU。
- 算法题先明确边界条件与不变量,再选择合适的数据结构;双指针、哈希表、递归/迭代是常见工具,目标是把复杂度控制在线性或对数级别。
- Spring/Spring Boot的核心是IOC容器与AOP,理解Bean生命周期、自动装配原理和常见starter的加载顺序是回答这类问题的关键。
- 介绍项目时应说明背景、个人分工、遇到的技术难点及解决方案,并量化收益(性能提升、成本下降等),便于面试官追问细节。
- 笔试类题目建议按题型分配时间,行测题优先保证正确率,编程/建模题先理清规则再动手,避免因为细节遗漏丢分。
- 红黑树是内存内的平衡二叉树,追求单点操作的对数复杂度;B+树针对磁盘/索引场景做了扇出优化,减少IO次数,更适合范围查询和顺序扫描。
- 进程是资源分配的基本单位,线程是CPU调度的基本单位,协程是用户态的轻量级调度单位,切换成本远低于线程,但需要语言/运行时支持。
- CPU飙高排查一般先用top/htop定位进程,再用jstack/pstack抓线程栈,结合火焰图找到热点方法,常见原因是死循环、频繁GC或锁竞争。