后端开发二面面经
完整信息
本篇目录
时间:2026.9.4
难度很大很大的一次面试,我确实被问懵逼了,这个技不如人了,但是这个难度是真的夸张啊,怎么都开始算上redis的zset的问题了
项目深挖
- 你挑一个在百度实习期间做的具体方向或功能模块展开讲一下:包括背景、角色职责、参与的功能模块、用了什么技术、解决什么问题、达到什么效果、怎么评估的?
- 原来采用的数据结构,它的查询过程是怎样的?为什么性能会那么低?
- 索引改成了 RoaringBitmap 之后,会不会涉及到更新、删除以及并发操作?
- 优化结论提到了提升 QPS 和降低 P99,你的压测环境和统计口径是怎样的?是单机还是集群?数据量有多大?是离线还是在线环境?
- 不同地区之间的流量模型是怎样的?你们有没有在上面做过对照实验?
- 简历里提到 Redis 集群 CPU 突刺,根本原因是什么?你是怎么定位的?
- 针对这个 CPU 突刺问题,你们具体是怎么解决的?
- 手动将大 key 打散后,接下来是通过手动做负载均衡吗?
- 重构广告词表缓存链路时引入了两级缓存,你怎么保证两级缓存底层数据的一致性?
- 全量更新的时候,MySQL 的数据量大概是多少?
- 全量更新一次大概要花多少时间?
- 你提到的单机 QPS 提升,具体指的是纯查询性能的提升吗?
- 这种二级缓存的更新与兜底做法,你觉得存在什么潜在问题吗?
技术栈与基础组件
- 之前常规的组件你都接触过对吧,消息队列这块有用过吗?
- K8s 之前有接触过吗?
- 你的 K8s 大概了解到什么程度?是以使用为主,还是有基于 K8s 做过二次开发?
MySQL 底层与优化
- (贴出一段深分页 SQL)可以先解释一下这条 SQL 想要做的事情是什么吗?
- 假如 account 表的主键是 id,且在 update_time 列加了普通索引,从存储引擎层或索引层解释一下,这条 SQL 的底层查询过程是怎样的?
- 你提到了回表操作,那么 OFFSET 和 LIMIT 操作具体发生在执行流程的哪一步?
- 你觉得这条 SQL 存在性能问题吗?
- 针对这种深分页 SQL,通常可以怎么优化?
- MySQL InnoDB 的默认隔离级别是多少?
- 可重复读(RR)底层具体是怎么实现的?
- 读已提交(RC)隔离级别在底层又是怎么实现的?它与可重复读在 Read View 生成时机上有什么区别?
Redis 与核心数据结构(跳表极限推导 & 淘汰策略)
- Redis 里面的 zset 底层是用什么数据结构实现的?
- 跳表是一个什么样的数据结构?它的查找过程和插入操作是怎么做的?
- 跳表插入时每次向上建立索引的概率是 (Redis 中为 ):假如 非常接近于 0,跳表会退化成什么样的数据结构?假如 非常接近于 1,跳表又会退化成什么样的数据结构?
- 跳表查找的时间复杂度怎么算? 的底数是多少?在物理/数学上分别代表什么含义?
- 假设跳表一共有 个元素,晋升概率 :跳表的索引层数(向下走的次数)应该怎么推导?在每一层需要横向遍历比较的区间数期望是多少?综合起来的时间复杂度是多少?
- 如果 ,每层遍历的区间数期望是多少?
- 为什么 Redis 的跳表把晋升概率 设置为 ,而不是 ?
- 可以简单说一下什么是 LRU,什么是 LFU 吗?
- LRU 和 LFU 各自的适用场景是什么?
- 在你百度实习的词表本地缓存场景中,只能二选一的话,用 LRU 好还是用 LFU 好?为什么?
分布式系统与一致性协议(Kafka & Raft)
- Kafka 在你实际使用的过程中,是在什么项目场景下用的?
- 你提到保证数据最终一致性,这里的“最终一致性”具体指的是什么?
- 抛开业务消费端的幂等处理,Kafka 本身是通过什么机制实现副本数据一致性与高可用的?底层依赖什么共识算法?
- Raft 选举或投票时,为什么判定条件必须是法定多数派()?
- 你什么时候看过 Raft 相关的内容?有没有自己动手实现过?
- 针对这种在实际业务工作中基本碰不到的底层技术,你平时是怎么学习的?
- Kafka 的消费者组 Rebalance 机制有了解过吗?什么时候会触发?
系统设计题(Go 实现并发延时队列 DelayQueue)
- 如果让你在 Go 里面实现一个延时队列(包含 Put(val, delay) 和阻塞的 Get() 方法),整体的设计思路是怎样的?
- Put 方法底层会选用什么数据结构来组织数据?内部按照什么维度去排序?
- 传入的 delay 是相对时长,排序时应该用相对时间还是绝对到期时间戳?
- Get 方法如何高效实现阻塞与按时唤醒?如果不用低效的死循环轮询,可以用什么机制?
- 在高并发场景下(多生产者并发 Put,单个消费者 Get),可能会遇到什么问题?
- 锁应该加在哪里?对哪个对象加锁?
- 如果消费者正在等待堆顶元素休眠(比如还剩 5 秒),此时有新的协程 Put 进一个过期时间更短的元素(比如 1 秒后到期,即插队现象),如何正确打断并重置等待时间?
AI 研发工具与 Agent 实践
- 你平时开发时用什么 AI Coding 工具比较多?
- 用 Claude Code 的话,你配置的是什么底层模型?
- 在实际使用 Cursor、Claude Code 等 AI 工具或 Harness 的过程中,你觉得哪些环节好用,哪些效果还不够理想?有什么心得体会?
- Claude Code 本身有用到 Multi-Agent(多智能体)架构吗?
本篇目录
当前问题0146
- 01
你挑一个在百度实习期间做的具体方向或功能模块展开讲一下:包括背景、角色职责、参与的功能模块、用了什么技术、解决什么问题、达到什么效果、怎么评估的?
- 02
索引改成了 RoaringBitmap 之后,会不会涉及到更新、删除以及并发操作?
- 03
优化结论提到了提升 QPS 和降低 P99,你的压测环境和统计口径是怎样的?是单机还是集群?数据量有多大?是离线还是在线环境?
- 04
不同地区之间的流量模型是怎样的?你们有没有在上面做过对照实验?
- 05
简历里提到 Redis 集群 CPU 突刺,根本原因是什么?你是怎么定位的?
- 06
针对这个 CPU 突刺问题,你们具体是怎么解决的?
- 07
手动将大 key 打散后,接下来是通过手动做负载均衡吗?
- 08
重构广告词表缓存链路时引入了两级缓存,你怎么保证两级缓存底层数据的一致性?
- 09
全量更新的时候,MySQL 的数据量大概是多少?
- 10
全量更新一次大概要花多少时间?
- 11
你提到的单机 QPS 提升,具体指的是纯查询性能的提升吗?
- 12
这种二级缓存的更新与兜底做法,你觉得存在什么潜在问题吗?
- 13
之前常规的组件你都接触过对吧,消息队列这块有用过吗?
- 14
K8s 之前有接触过吗?
- 15
你的 K8s 大概了解到什么程度?是以使用为主,还是有基于 K8s 做过二次开发?
- 16
你提到了回表操作,那么 OFFSET 和 LIMIT 操作具体发生在执行流程的哪一步?
- 17
针对这种深分页 SQL,通常可以怎么优化?
- 18
MySQL InnoDB 的默认隔离级别是多少?
- 19
可重复读(RR)底层具体是怎么实现的?
- 20
读已提交(RC)隔离级别在底层又是怎么实现的?它与可重复读在 Read View 生成时机上有什么区别?
- 21
Redis 里面的 zset 底层是用什么数据结构实现的?
- 22
跳表是一个什么样的数据结构?它的查找过程和插入操作是怎么做的?
- 23
跳表插入时每次向上建立索引的概率是 (Redis 中为 ):假如 非常接近于 0,跳表会退化成什么样的数据结构?假如 非常接近于 1,跳表又会退化成什么样的数据结构?
- 24
跳表查找的时间复杂度怎么算? 的底数是多少?在物理/数学上分别代表什么含义?
- 25
假设跳表一共有 个元素,晋升概率 :跳表的索引层数(向下走的次数)应该怎么推导?在每一层需要横向遍历比较的区间数期望是多少?综合起来的时间复杂度是多少?
- 26
可以简单说一下什么是 LRU,什么是 LFU 吗?
- 27
LRU 和 LFU 各自的适用场景是什么?
- 28
在你百度实习的词表本地缓存场景中,只能二选一的话,用 LRU 好还是用 LFU 好?为什么?
- 29
Kafka 在你实际使用的过程中,是在什么项目场景下用的?
- 30
你提到保证数据最终一致性,这里的“最终一致性”具体指的是什么?
- 31
抛开业务消费端的幂等处理,Kafka 本身是通过什么机制实现副本数据一致性与高可用的?底层依赖什么共识算法?
- 32
Raft 选举或投票时,为什么判定条件必须是法定多数派()?
- 33
你什么时候看过 Raft 相关的内容?有没有自己动手实现过?
- 34
针对这种在实际业务工作中基本碰不到的底层技术,你平时是怎么学习的?
- 35
Kafka 的消费者组 Rebalance 机制有了解过吗?什么时候会触发?
- 36
如果让你在 Go 里面实现一个延时队列(包含 Put(val, delay) 和阻塞的 Get() 方法),整体的设计思路是怎样的?
- 37
Put 方法底层会选用什么数据结构来组织数据?内部按照什么维度去排序?
- 38
传入的 delay 是相对时长,排序时应该用相对时间还是绝对到期时间戳?
- 39
Get 方法如何高效实现阻塞与按时唤醒?如果不用低效的死循环轮询,可以用什么机制?
- 40
在高并发场景下(多生产者并发 Put,单个消费者 Get),可能会遇到什么问题?
- 41
锁应该加在哪里?对哪个对象加锁?
- 42
如果消费者正在等待堆顶元素休眠(比如还剩 5 秒),此时有新的协程 Put 进一个过期时间更短的元素(比如 1 秒后到期,即插队现象),如何正确打断并重置等待时间?
- 43
你平时开发时用什么 AI Coding 工具比较多?
- 44
用 Claude Code 的话,你配置的是什么底层模型?
- 45
在实际使用 Cursor、Claude Code 等 AI 工具或 Harness 的过程中,你觉得哪些环节好用,哪些效果还不够理想?有什么心得体会?
- 46
Claude Code 本身有用到 Multi-Agent(多智能体)架构吗?
