
过去三个月我面了20家公司的后端岗从创业公司到一线大厂。过程很累但收获也大——面试官翻来覆去问的其实就那8个问题。今天把它们整理出来附上我踩坑后总结的答法希望能帮你少走弯路。1. 线程池的核心参数和执行流程这是开场必问。别只背七个参数要讲清流程核心线程满→进队列→队列满→开非核心→都满→拒绝策略。面试官常追问队列为什么用有界拒绝策略选哪个我答的是“订单系统用CallerRunsPolicy保证不丢单同时给上游反馈压力”。能结合业务比背概念强十倍。2. JVM内存模型与GC“堆栈怎么划分”“对象什么时候进老年代”“G1和CMS区别”这三个问题几乎每场都问。我一开始只答得出新生代老年代后来补了卡表、记忆集、TLAB。重点讲G1的可预测停顿模型和ZGC的低延迟面试官会觉得你跟进过新技术。3. MySQL索引与事务“为什么用B树”“MVCC怎么实现”“隔离级别解决什么问题”B树矮胖、叶子链表、适合范围查询MVCC靠隐藏列、undo log和ReadView可重复读解决不可重复读但幻读靠间隙锁。再提一句“explain看type和key”基本就稳了。4. Redis缓存三兄弟与分布式锁缓存穿透、击穿、雪崩必须秒答。穿透用布隆过滤器或空值缓存击穿用互斥锁或逻辑过期雪崩用随机过期集群。分布式锁要讲SET NX Lua 看门狗续期并点出Redis是AP模型主从切换可能丢锁。5. 消息队列的可靠性与幂等“消息丢了怎么办”“重复消费怎么解决”分生产者、Broker、消费者三端生产者确认、Broker持久化、消费者手动ACK。重复消费用唯一ID去重表或Redis setnx。顺序消费用单分区单消费者。答不上来面试官会怀疑你没做过异步解耦。6. 分布式事务与一致性“2PC、TCC、Saga、本地消息表区别”2PC强一致但阻塞TCC业务侵入大Saga适合长事务本地消息表最终一致。我通常会补一句“我们订单用本地消息表定时补偿保证最终一致”显得有实战。7. 网络IO与TCP“三次握手四次挥手”“TIME_WAIT作用”“epoll原理”。三次握手确认双方收发四次挥手因为全双工TIME_WAIT保证最后ACK到达。epoll用红黑树就绪链表适合高并发。零拷贝提mmapsendfile。8. Spring IOC与AOP“Bean生命周期”“循环依赖三级缓存”“事务失效场景”。循环依赖靠三级缓存提前暴露事务失效常见自调用、非public、异常被吞。能说出“AOP用JDK动态代理或CGLIB”并解释区别就够用了。总结20场面试下来我发现面试官不是考你背多少而是考你理解多深、有没有踩过坑。这8个问题覆盖了并发、JVM、数据库、缓存、消息、分布式、网络、框架基本就是后端知识树的主干。建议每个问题准备一个项目案例比如“我用线程池CallerRunsPolicy扛住了秒杀流量”比干巴巴的概念更有说服力。把这篇收藏面试前过一遍你也能从“被问倒”变成“答到点”。