岗位题目
后端开发相关面试题
缓存和数据库怎么保持数据一致性?还有别的做法吗?
这题考察 Cache Aside 的读写路径、并发竞态、删除失败补偿和一致性取舍,重点不是追求绝对一致,而是控制旧数据窗口。
同题还出现在 1 个面经场景
分布式系统中的一致性怎么保证?
这题考察一致性目标拆解、复制提交协议、读写路径取舍和故障后的收敛能力,不能只背 CAP 或只说加锁。
Java 的 GC 机制是怎样实现的?
这题考察对象存活判定、分代回收、GC 算法和收集器取舍,还会延伸到分配晋升、停顿和 GC 日志排查。
数据库事务是什么,ACID 分别代表什么?
这题考察事务边界、ACID 语义、日志恢复、隔离级别和业务不变量,重点是把概念落到数据库执行机制。
Redis 常见数据结构有哪些?
这题不只是列 Redis 类型,还要能按访问模式、底层编码、复杂度和大 key 风险说明为什么这样建模。
10G IP 文件、1G 内存,如何找出现最多的 Top10 IP?
这题考察海量数据精确 TopK 的分治思路、内存估算、全局正确性和数据倾斜处理。
图论算法具体有哪些?
这题考察图问题分类能力,要把问题类型、适用条件、图表示和复杂度一起说,而不是背算法名清单。
贪心算法和动态规划分别是什么?
这题考察候选人能否区分局部选择和状态枚举,关键是证明贪心安全性,并能写出 DP 的状态、转移、边界和遍历顺序。
业务中为什么要使用分布式锁?
这题考察分布式互斥的业务动机、锁粒度、正确实现条件和替代方案,重点是说明锁只能保护有限临界区。
Redis 分布式锁的单点故障怎么解决?
这题考察 Redis 锁在单点、异步复制和故障切换下的互斥风险,需要按安全等级给出方案,而不是只说上集群。
ZooKeeper 实现分布式锁的原理是什么?
这题考察临时顺序节点、前驱监听、会话语义和异常重试流程,重点是说明为什么相对公平且能避免惊群。
RocketMQ 和 Kafka 有什么区别?
这题考察消息队列选型,要从模型、存储复制、顺序语义、事务/延迟能力、消费重试和生态取舍比较,而不是简单说一个快一个稳。
消费者端幂等性如何实现?
这题考察至少一次投递下的消费安全,核心是用业务唯一键、可靠去重记录和状态机把重复消息变成无副作用。
Redis 持久化机制有哪些?
这题考察 RDB、AOF、混合持久化的恢复链路和可靠性取舍,还要区分持久化、复制和高可用解决的问题不同。
如何手写 LRU 缓存?
这题是典型手写实现题,关键是用 HashMap 加双向链表在 O(1) 完成查询、更新、移动和淘汰,并处理已有 key、容量边界和 map/list 同步。
线程安全的单例模式怎么写?
这题考察 Java 单例在并发下的安全发布、延迟初始化、重排序风险,以及枚举、静态内部类、DCL 各自的边界。
如何保障服务稳定性?
这题考服务稳定性体系化思维,回答要从目标、风险预防、运行时止损、恢复复盘四层展开,而不是只背限流熔断。
强依赖和弱依赖服务应该如何分别保障?
这题考依赖分级治理,关键是先判断依赖是否影响主流程正确性,再分别设计强依赖高可用和弱依赖降级补偿。
两个大文件如何找共同出现的单词?
这题考大文件处理的内存约束意识,回答要先确认精确性和重复语义,再给出哈希分桶或外部排序方案。
TCP、UDP、HTTP 之间是什么关系?
这题考网络分层和协议职责,回答要把 HTTP 的应用语义与 TCP/UDP 的传输能力分开讲。
协程解决什么问题,和线程性能怎么比较?
这题考并发模型和性能边界,回答要说明协程降低的是调度和内存成本,不是让 CPU 计算突破核心数。
12306 区间购票系统如何设计?
这题考区间库存建模和高并发交易一致性,关键是防止重叠区间超卖,并让占座、支付、释放形成闭环。
什么是零拷贝?
这题考 Linux I/O 数据路径,回答要说明零拷贝减少的是用户态与内核态之间的数据搬运和上下文切换。
HTTP 如何判断一个包读完了?
这题考 HTTP 报文解析和 TCP 字节流边界,关键是说明不能靠一次 recv 或 TCP 包判断 HTTP 是否读完。
注册中心挂了怎么办?
这题考服务发现的控制面故障处理,回答要区分注册中心不可用和业务调用链路不可用。
CPU load 是什么?
这题考 Linux 性能指标理解,回答要区分 load average、CPU 使用率、核数和不可中断 I/O 等待。
删除文件后磁盘占用没有减少是什么原因?
这题考 Linux 文件删除语义,关键是说明目录项删除不等于 inode 和数据块立即释放。
ZooKeeper 如何保证数据不丢?
这题考 ZooKeeper 的持久化和多数派提交机制,回答要把事务日志、快照、Zab 和选主安全性串起来。
Linux 的内存布局是什么?
这题考进程虚拟地址空间,回答要按区域、增长方向、权限和虚拟内存映射机制说明。
Raft 算法的原理是什么?
这题考 Raft 如何用更易理解的方式实现共识,回答要覆盖 leader 选举、日志复制和安全提交。
多线程如何防止并发问题?
这题考并发安全的系统化处理,回答要先减少共享,再对必须共享的状态保证原子性、可见性和有序性。
日志服务如何异步写入,避免影响主流程?
这题考异步化、背压和可靠性分级,回答要说明日志不阻塞主流程的同时不能无限丢失或无限占内存。
最终一致性如何保障?
考察分布式系统在不能同步强一致时,如何用可靠事件、幂等消费、重试补偿和对账把状态收敛到正确结果。
Redis 热点缓存数据如何处理?
考察 Redis 热 key 的识别、读流量分散、缓存重建保护和强弱一致性取舍,核心是先定位热点再按业务语义降压。
新增“十连抽”功能时会考虑什么设计模式?
考察设计模式能否落到抽奖业务扩展上,重点是稳定流程、可替换规则、校验链路、幂等事务和发奖补偿。
JVM 堆和栈的原理与区别是什么?
考察 JVM 运行时内存模型,核心是区分堆对象生命周期、线程私有栈帧、引用关系、异常类型和 JIT 优化边界。
HashMap 和 ConcurrentHashMap 的原理与区别是什么?
考察 Java 哈希表结构和并发容器实现,重点是桶结构、扩容、线程安全策略、弱一致迭代和 null 限制。
volatile 的原理是什么,能否替代锁?
考察 Java 内存模型,核心是 volatile 保证可见性和有序性,但不保证复合操作原子性,不能替代锁保护临界区。
Full GC 的触发原因和主动触发方式有哪些?
考察 JVM 内存压力和 GC 诊断能力,重点是触发原因、显式 GC 风险、不同收集器差异以及如何从日志定位根因。
MySQL 支持哪些隔离级别,对应实现原理是什么?
考察 MySQL InnoDB 隔离级别、MVCC、ReadView、undo log 和锁机制,重点是快照读与当前读的实现差异。
排查性能瓶颈时应该监控哪些参数?
考察性能排查的指标体系和定位顺序,重点是从用户影响出发,沿应用、资源、依赖和链路追踪逐层收敛。
C++ 虚函数是什么?
考察 C++ 运行时多态的实现和边界,重点是 virtual、vptr/vtable、动态绑定、虚析构和构造析构阶段规则。
C++ new 操作的原理是什么?
考察 C++ 对象创建和释放的两阶段语义,重点是 operator new 分配原始内存、构造函数初始化、异常回滚和 delete 对称释放。
内存对齐的作用是什么?
考察内存布局和硬件访问效率,重点是对齐规则、padding 来源、结构体大小、缓存友好性和 ABI 兼容风险。
C++ 和 Java 的主要区别是什么?
考察语言对比是否能上升到运行时、内存资源、类型模型、性能控制、工程生态和适用场景,而不是停留在语法差异。
写单元测试时要注意哪些点?
考察测试工程素养,重点是明确测试边界、可重复性、断言质量、依赖隔离、边界异常用例和覆盖率的正确理解。
为什么使用责任链模式,它的好处是什么?
考察责任链模式的适用场景和工程取舍,重点是把多步骤可变流程拆成可插拔节点,同时控制顺序、终止、观测和性能。
Redis Lua 脚本怎么实现分布式锁
这题考察 Redis 分布式锁的正确最小模型:SET NX PX 原子加锁、唯一 value 标识持有者、Lua 原子校验后删除,以及过期、续期和主从故障风险。
同题还出现在 1 个面经场景