公司动态

Java后端面试八股文速刷指南:掌握原理与答题链路

📅 2026/8/31 10:35:05
Java后端面试八股文速刷指南:掌握原理与答题链路
我发现这类标题的问题在于它把“八股文面试”描述得像背题库就能过关的考试。实际上Java后端面试确实有大量需要记忆的知识点但面试官真正在意的不是你能不能背出某个结论而是你能不能讲清楚结论背后的原理、适用条件和边界。花3天速刷高频题核心目标不是“背完所有答案”而是建立一条自己的答题链路遇到一个技术问题先判断它属于哪个知识域再按底层原理、实现方式、实际应用、坑点和排查顺序组织回答。这篇文章适合两类人看一类是准备校招或社招时间紧但基础还不错需要系统过一遍高频考点的人另一类是已经工作一段时间想通过面试整理自己技术体系的开发。下面按我的实际复习经验拆一遍“速刷八股文”到底该怎么刷。1. 先想清楚八股文后端面试到底在考什么很多人的误区是一上来就找题单背完 Spring 背 MySQL背完 Redis 背消息队列。结果遇到一个稍微追问的场景题比如“缓存穿透、缓存击穿、缓存雪崩分别怎么处理如果 Redis 挂了怎么办”立刻就乱了。原因不是背得不够而是没有建立知识点之间的关联。1.1 后端面试的高频结构其实是固定的Java 后端面试题看上去很多但按知识域拆开基本逃不出这几个方向Java 基础集合、String、异常、泛型、反射、序列化。并发编程synchronized、volatile、Lock、AQS、线程池、CAS、ThreadLocal。JVM内存区域、垃圾回收、类加载、OOM 排查、JVM 调优参数。Spring 家族IOC、AOP、Bean 生命周期、事务传播机制、Spring Boot 自动装配。MySQL索引、事务隔离级别、MVCC、锁、主从复制、慢查询优化。Redis数据结构、过期策略、持久化、缓存三大问题、分布式锁。消息队列选型对比、可靠性、顺序性、重复消费、消息积压。分布式基础CAP、BASE、分布式事务、接口幂等、负载均衡、服务治理。注意这些方向不是平等的。从面试频率和复习性价比来看Java 基础、并发、MySQL、Redis、Spring 这五块最值得投入时间。JVM 在社招中经常被深挖校招通常问到内存区域和垃圾回收算法就够。消息队列和分布式内容很多但大多数岗位只要求你能讲清楚一种主流组件的核心机制。1.2 速刷前先做一次能力自测我建议不要直接看题先花 30 分钟做一次自测。拿一张白纸把上面几个方向写下来每个方向给自己回答三个问题这个知识域里我能不看资料讲清楚哪三个核心知识点哪些知识点我只能说出名词但解释不了原理哪些知识点我连名词都感觉很陌生自测的作用不是打击信心而是帮你确定优先级。3 天时间不可能把所有方向都刷到精通但可以做到高频题不冷场。第一天优先解决“完全陌生”和“半懂不懂”的高频方向第二天把能讲清楚的知识点整理成结构化表达第三天用模拟问答和项目串联把所有内容串起来。注意速刷的前提是你已经写过 Java 项目哪怕是个简单的 CRUD 项目。如果完全没有项目经验先把重心放在 Java 基础和 Spring Boot 实战上不要一上来就啃并发和分布式。2. Java 基础和并发编程先建立答题框架Java 基础是后端面试的第一关。这个环节看起来简单但很容易暴露出“只看过博客、没看过源码”的问题。比如问 HashMap 底层结构很多人能答出“数组加链表加红黑树”但再问一句“什么时候转红黑树为什么阈值是 8”就答不上来了。2.1 HashMap、ArrayList、String 这三类题怎么准备后端八股文里集合类题目出现频率极高。准备时要按“结构、扩容、线程安全、实际坑点”四层来答而不是只背结论。以 HashMap 为例结构数组 链表 红黑树。默认初始容量 16负载因子 0.75。扩容当元素数量超过容量乘以负载因子时触发扩容重新计算哈希并迁移数据。树化链表长度超过 8 且数组长度超过 64 时转为红黑树。阈值为 8 是因为在随机哈希情况下链表长度达到 8 的概率已经很低这个值是时间和空间的权衡结果。坑点JDK 7 和 JDK 8 的扩容实现有差异并发环境下 HashMap 的 put 操作不是线程安全的多线程扩容时可能出现循环链表导致 CPU 100%。实际项目中并发场景不要用 HashMap用 ConcurrentHashMap。再比如 ArrayList 和 LinkedList 的对比不要只说“ArrayList 查询快、增删慢LinkedList 增删快、查询慢”。更准确的说法是ArrayList 基于动态数组支持随机访问尾部插入在容量足够时是 O(1)中间插入需要移动元素LinkedList 基于双向链表头尾插入删除是 O(1)但按索引访问是 O(n)。实际开发中绝大多数列表场景用 ArrayList 就够LinkedList 的优势场景很有限。String 相关的高频题包括 String 不可变性、StringBuilder 和 StringBuffer 区别、字符串常量池。答题时要能说清楚“String 为什么设计成不可变”缓存 hash、安全、线程安全、常量池复用但这些都要结合场景说明不要一上来就背四个优点。2.2 并发编程的复习重点不是背 API是拆解三个核心问题并发编程是 Java 后端面试的难点也是最容易拉开差距的部分。我的复习建议是围绕三个核心问题展开原子性、可见性、有序性。所有并发问题最终都会落到这三个问题上。可见性volatile 可以保证变量修改对线程可见但它不保证原子性。原子性synchronized、Lock、Atomic 类解决复合操作的原子性问题。有序性指令重排问题volatile 通过内存屏障禁止重排synchronized 通过加锁串行化执行。线程池是另一个高频考点。不要只背 ThreadPoolExecutor 的七个参数要能回答这几个问题核心线程数怎么设置CPU 密集型任务通常设置为 CPU 核数加一IO 密集型任务可以设置得更大因为线程在等待 IO 时不会占用 CPU。队列满了怎么办四种拒绝策略分别是 AbortPolicy、CallerRunsPolicy、DiscardPolicy、DiscardOldestPolicy。实际项目中更常见的是自定义拒绝策略比如把任务写入 MQ 或本地表后续补偿处理。为什么不允许使用 Executors 创建线程池因为 FixedThreadPool 和 SingleThreadExecutor 的队列是无界队列任务堆积时可能导致 OOMCachedThreadPool 最大线程数接近无限可能创建大量线程耗尽资源。ThreadLocal 也是一个容易被追问的点。除了“每个线程有自己的副本”这个表面解释还要能说清楚 ThreadLocalMap 的 key 是弱引用、value 是强引用在线程池场景下如果使用后不调用 remove可能造成内存泄漏。这个点结合 OOM 排查来答会显得更有实战感。3. JVM 和线上问题排查从背结论到看排查过程JVM 相关内容在面试中占的比例不一定最高但一旦被问到通常都是深入追问。很多候选人能背出堆内存分为新生代和老年代能说出垃圾回收算法有标记复制、标记清除、标记整理但被问到“线上服务频繁 Full GC 怎么排查”时就只会说“加内存”或“换垃圾回收器”。3.1 JVM 内存区域和垃圾回收按“为什么这样划分”来记JVM 内存区域不是八个名词的列表它反映的是 JVM 在管理 Java 对象生命周期时的策略。堆所有线程共享存放对象实例是垃圾回收的主要区域。堆内部又分为新生代和老年代新生代再分为 Eden 区、From Survivor、To Survivor。为什么要分代因为绝大多数对象生命周期很短分代之后可以用不同的回收算法处理不同生命周期对象提高回收效率。虚拟机栈线程私有每个方法调用对应一个栈帧栈帧里有局部变量表、操作数栈、动态链接、方法出口。栈溢出常见原因是递归调用过深或方法栈帧过大。方法区存储类信息、常量、静态变量。JDK 8 之后改为元空间使用本地内存避免永久代 OOM。程序计数器线程私有记录当前线程执行的字节码行号。垃圾回收部分要能讲清楚新生代使用复制算法因为新对象存活率低复制成本小老年代使用标记整理或标记清除因为老年代对象存活率高复制代价大。CMS、G1、ZGC 的区别也要有个基本认知尤其是 G1 在 JDK 8 和 JDK 11 之后都可能是默认收集器要能说明它把堆分成多个 Region可以设置目标停顿时间。3.2 OOM 和 Full GC 排查思路要背一套标准流程热点词里有“java: outofmemoryerror: insufficient memory”说明网上一搜就能看到大量这类报错。面试官问 OOM 时真正想听的是你遇到类似现象时会怎么处理。我建议把排查流程固定成五步先确认现象服务是启动时直接报错还是运行一段时间后报错是频繁 Full GC还是直接 OOM 崩溃拿到堆转储文件在启动参数中加上-XX:HeapDumpOnOutOfMemoryError让 JVM 在 OOM 时自动导出 dump 文件。如果没有这个参数重启前先再触发一次或通过 jmap 手动导。用 MAT 或 JVisualVM 分析 dump看哪个对象占用了大量堆内存是业务对象、缓存对象、还是线程内部塞了超大集合。结合线程栈定位代码位置线程栈能看到当前线程执行到哪一行代码如果大量线程卡在同一个方法里优先看那个方法是不是在循环创建对象、读取大文件、或往集合里无限添加数据。修复并验证常见的修复方式包括限制集合大小、改用分批处理、优化 SQL 避免一次性加载过多数据、使用合适的缓存过期策略、排查 ThreadLocal 是否未清理。Full GC 频繁的情况也一样不能一上来就调大堆内存。堆内存调大可能让单次 GC 时间更长。正确顺序是先看 GC 日志用 jstat 观察 Eden 区、老年代、GC 次数的变化趋势再判断是内存泄漏导致老年代持续增长还是对象分配速率过高导致频繁晋升。注意JVM 调优不是面试重点的背诵项而是排查链路的辅助手段。不要提-Xmx和-Xms就停住要能说出为什么会设置相等原因是可以避免运行期堆大小动态调整带来的性能抖动。4. Spring 和 Spring Boot 核心原理用一条 Bean 生命周期线串起来Spring 相关问题在 Java 后端面试里几乎必考。高频题集中在 IOC、AOP、Bean 生命周期、事务传播机制、自动装配。这些内容如果分开背会觉得很碎如果串起来可以形成一条线Bean 是怎么创建出来的创建过程中有哪些扩展点Spring 如何把 AOP 能力织入对象事务如何通过 AOP 生效。4.1 IOC 和 Bean 生命周期要能画成时间线先回答最基础的问题IOC 是什么IOC 控制反转核心思想是把对象的创建和依赖注入交给容器管理而不是在代码里自己 new。这样做的意义是解耦同时让对象之间的依赖关系集中配置。Bean 生命周期可以按阶段记实例化前BeanPostProcessor 的 postProcessBeforeInstantiation 有机会返回代理对象。实例化通过构造器创建对象。属性填充Autowired 和 Resource 在这个阶段完成依赖注入。初始化前BeanPostProcessor 的 postProcessBeforeInitialization。初始化执行 InitializingBean 的 afterPropertiesSet 和自定义 init-method。初始化后BeanPostProcessor 的 postProcessAfterInitializationAOP 代理通常在这个时机生成。使用中容器返回 Bean 给调用方。销毁执行 DisposableBean 的 destroy 方法和自定义 destroy-method。这个顺序不用死记每个步骤的英文名但要把“实例化、属性填充、初始化、代理生成”这四件事搞清楚。面试官问“Spring 里怎么在 Bean 初始化前后做点事”你能答出 InitializingBean、init-method、BeanPostProcessor 就已经过了基础关。如果还能补充“BeanPostProcessor 在多个 Bean 初始化时都会被调用需要判断 beanName 来避免影响所有对象”那就是加分项。4.2 AOP 和事务要能解释“代理失效”这类坑AOP 的核心概念是切面、通知、切点。Spring 默认使用动态代理如果目标类实现了接口用 JDK 动态代理如果没有实现接口用 CGLIB 生成子类代理。面试里常见的追问是“Spring 事务什么情况下会失效”。这个问题很值得反复练因为它同时考察了 AOP 原理和事务传播机制。常见的失效场景有方法不是 publicSpring 默认不代理非 public 方法。自身调用也就是同类内部调用比如一个方法调用了另一个带Transactional的方法代理对象没有参与事务不生效。异常被 catch 住事务感知不到异常自然不会回滚。抛出的是非 RuntimeException但事务默认只对 RuntimeException 回滚。数据库引擎不支持事务比如 MySQL 的 MyISAM 引擎就不支持事务。事务传播机制也是必背内容重点记 PROPAGATION_REQUIRED 和 PROPAGATION_REQUIRES_NEW。前者表示当前有事务就加入没有就新建后者表示无论如何都新建一个事务。还有一个容易混淆的 PROPAGATION_NESTED它是嵌套事务回滚时可以只回滚到保存点不会影响外部事务。Spring Boot 自动装配的考点集中在SpringBootApplication、EnableAutoConfiguration、spring.factories或AutoConfiguration.imports文件、条件注解。复习时要把“为什么平时不配置也能用 RedisTemplate”这个现象解释清楚。5. MySQL 和 Redis坚持“索引优先、隔离级别为主、缓存问题为战”数据库和缓存是后端面试的重头戏。很多候选人 MySQL 背了一大堆但面试官问一道慢 SQL 优化题就不知道从哪开始Redis 背了五种数据结构但项目里只当作缓存用一问集群和分布式锁就露怯。这一部分建议按“会用、能排查、能设计”三层来复习。5.1 MySQL 索引和 SQL 优化从执行计划开始MySQL 高频考点包括索引结构、最左前缀原则、回表、覆盖索引、索引失效场景、事务隔离级别、MVCC、锁。索引结构默认是 B 树。要能说清楚为什么选 B 树而不是 B 树、哈希表B 树非叶子节点不存储数据单节点能存更多索引项树高度更低磁盘 IO 次数更少叶子节点通过双向链表连接适合范围查询。哈希索引适合等值查询但不支持范围查询和排序。最左前缀原则要求联合索引(a, b, c)能命中a、a,b、a,b,c但直接查b或c走不了这个索引。复习时要结合一个具体例子比如查询条件里写了a和c能走索引但c的过滤效果要打折扣。索引失效场景很常见但一定要结合原因去记对索引列做函数操作或隐式类型转换导致无法使用索引。联合索引不满足最左前缀。使用like时通配符出现在最前面比如like %abc。优化器判断全表扫描比走索引更快可能选择不走索引。这种情况不是索引失效而是优化器代价评估结果。SQL 优化不要只背概念给自己固定一套排查链路先慢查询日志找到具体 SQL。用EXPLAIN看执行计划重点看 type、key、rows、Extra。type 从 system、const、eq_ref、ref、range、index、ALL 依次变差如果看到 ALL 就要想办法加索引或改写 SQL。Extra 出现 Using temporary 或 Using filesort说明需要临时表或文件排序考虑优化排序字段和索引。再看数据量和业务场景决定是加索引、改 SQL 结构、分页优化还是归档历史数据。MySQL 事务隔离级别要按事务并发问题来记脏读、不可重复读、幻读对应不同的隔离级别。MySQL 默认隔离级别是 Repeatable Read它通过 MVCC 解决普通读的不可重复读和幻读问题通过间隙锁和临键锁解决当前读的幻读和写冲突问题。把 MVCC 的 undo log、ReadView、三个隐藏列连起来讲比单纯背概念更有说服力。5.2 Redis 高频问题用“缓存三大坑 持久化 分布式锁”三块来收Redis 的数据结构题不难难的是方案设计。面试中问得最多的三个方案类问题是缓存穿透、缓存击穿、缓存雪崩。缓存穿透请求查一个不存在的数据缓存里没有每次都要打到数据库。解决办法是缓存空值并设置较短过期时间或者使用布隆过滤器拦截。缓存击穿一个热点 key 过期大量请求同时打到数据库。解决办法是热点 key 不设置过期时间或者加互斥锁只让一个请求去重建缓存。缓存雪崩大量 key 在同一时间段过期或者 Redis 实例宕机。解决办法是过期时间加随机值接口层做限流降级Redis 做高可用比如主从加哨兵或集群模式。Redis 持久化也要能讲清楚 RDB 和 AOF 的区别。RDB 是快照适合备份和恢复但可能丢失最后一次快照之后的数据AOF 追加写日志数据完整度高但文件大、恢复慢。现在常见做法是 RDB 做主文件AOF 做数据补充。面试时要能结合“数据丢失容忍度”来解释为什么生产环境需要两种配合。分布式锁也是常客。不要把“SETNX 加锁Del 释放锁”当成完整答案。一个完整的分布式锁方案至少要考虑几个问题加锁时设置过期时间防止持有锁的线程崩溃导致死锁。释放锁时先比较 value 是否是自己加的锁防止误删别的线程的锁。锁过期时间不能太短否则业务还没执行完锁就过期了另一个线程拿到锁产生并发执行问题。如果要更稳定可以引入 Redisson 的看门狗机制自动续期。6. 消息队列和分布式基础选一个主流组件做深度准备消息队列内容多且杂3 天速刷不建议同时准备 Kafka、RocketMQ、RabbitMQ。从 Java 后端面试频率来看Kafka 和 RabbitMQ 最常见如果你投的是互联网公司Kafka 优先级更高。我的建议是主攻一个另一个只做对比性了解。6.1 消息队列高频考点围绕四个问题展开无论哪个 MQ面试题基本绕不开可靠性、顺序性、重复消费、消息积压这四个问题。可靠性生产者端确认机制、Broker 持久化、消费者端手动确认。Kafka 里对应的是 acks 参数、副本机制、消费者 offset 提交方式。顺序性全局顺序很难做到通常只保证分区内顺序。Kafka 通过分区内单线程消费来保证顺序但要注意业务上如何把相关消息路由到同一个分区。重复消费消费端要做幂等处理。常见做法是消费时查重用唯一业务键判断是否处理过或者把结果写入具备唯一约束的存储。消息积压先扩容消费者数量但要注意分区数和消费者组的关系消费者数量超过分区数并不能提升消费速度。更稳妥的做法是临时新起消费者服务把消息快速转发到新的 topic再增加消费者处理。6.2 分布式知识不要贪多把 CAP、分布式事务、幂等设计讲透分布式相关的高频题包括 CAP、BASE、分布式事务、接口幂等、负载均衡策略。这些内容如果有时间可以系统看没时间就先把高频题的答题结构固定下来。CAP 不要只背“一致性、可用性、分区容错性三者不可兼得”。要能结合场景说明分布式系统必然存在网络分区P 是必须保证的所以实际是在 C 和 A 之间取舍。ZooKeeper 偏向 CPEureka 偏向 AP这就是为什么注册中心选型会有不同方案。分布式事务常见方案包括 2PC、TCC、本地消息表、事务消息。2PC 有同步阻塞和协调者单点问题TCC 需要业务方实现 Try、Confirm、Cancel 三个方法侵入性强事务消息适合最终一致性场景比如订单创建后发消息给积分服务。面试时能把“为什么不用 2PC 解决所有问题”讲清楚证明你真正理解过。接口幂等也是后端面试的高频场景题。设计时要选一个唯一键比如订单号或用户 ID 加业务类型。最简单的方式是数据库唯一索引插入前查一次唯一键或者利用数据库的 INSERT 语句在冲突时返回影响行数 0再决定是否走已处理逻辑。更复杂的场景可以引入状态机在状态流转时加版本号判断防止重复提交覆盖数据。7. 项目经验和八股文怎么串起来用“场景题”做模拟3 天速刷最容易忽略的就是八股文和项目经验的结合。面试官经常在八股文答完之后追问“你项目里怎么用的”如果你只背了理论现场很难组织出一个连贯回答。我建议在第二天晚上和第三天上午专门做“项目场景串联”练习。7.1 把每个高频知识点映射到自己的项目场景以常见的电商型或管理后台型项目为例可以做一个简单映射用户登录模块对应 Spring Security 或 JWT、Redis 存储 token、密码加密、Session 分布式问题。商品列表接口对应 MySQL 索引优化、多级缓存、缓存穿透和击穿处理。订单创建对应事务边界、分布式事务、幂等设计、消息队列异步通知。数据统计报表对应慢 SQL 优化、分页查询优化、异步任务、定时任务。文件上传或导出对应内存占用、磁盘空间、线程池异步处理、OOM 风险。服务监控对应 JVM 指标、GC 日志、接口耗时、日志链路追踪。做这种映射时不需要项目真的很复杂哪怕你做过一个简单 CRUD 项目也能把索引优化和事务传播机制挂上去。关键是把理论落到真实上下文里让面试官觉得你是真的处理过问题而不是只会复制粘贴。7.2 模拟问答时按 STAR 或“现象-原因-方案-结果”组织场景题的回答结构我建议固定成四步描述背景这个功能是什么用户量或数据量大概什么级别。说明问题遇到了什么现象比如接口慢、消息重复消费、内存上涨。分析原因怎么定位的看了什么日志、什么监控、什么执行计划。给出方案做了哪些改动改完之后怎么验证的效果如何。这里要特别注意不要编造自己没有做过的经历。如果确实没遇到过高并发承认自己处理过的是小规模请求但把排查思路完整讲清楚面试官更看重思路是否合理。7.3 第三天上午做一次“高频题口述测试”口述测试很简单找一个朋友或自己对着一张白纸随机抽 20 道题每题限制 3 分钟讲完讲的时候录音。讲完回听重点检查有没有出现以下几种情况讲着讲着卡住说明知识点没有形成链路回去重新整理这段内容。说了很多但没提到原理只回答了是什么没回答为什么。没有结合项目或场景说明停留在名词解释层面。被追问“如果”场景时反应慢说明边界知识准备不足。口述测试比看题单有用得多。因为面试时是边说边组织思路不是默写答案。如果你能在一个小时内把 20 道高频题连续讲完语速稳定每个题能给出一个核心结论和一个项目案例基本就达到速刷目标了。8. 速刷时间表和避坑清单最后留几个排查角度3 天的时间安排不需要做到分钟级但要明确每天的核心产出。第一天能力自测、收集高频题、整理 Java 基础、并发、JVM 的答题框架。重点是把“不会但背过”的知识点变成“能讲出来”的结构化表达。第二天攻克 Spring 系列、MySQL、Redis。白天整理知识点晚上按项目场景做映射把理论挂到真实功能点上。第三天模拟问答、口述测试、补漏。选取 20 道高频题进行全流程模拟并对不熟悉的方向做最后一轮查缺补漏。这个安排适合时间紧、基础中等的读者。如果你的 Java 基础还比较薄弱建议先把 Java 基础、MySQL、Spring Boot 实战跑通再考虑并发和分布式。如果你的目标是高级岗位那就不能只指望三天速刷至少要留一周来深挖 JVM 调优、消息队列架构和分布式方案。8.1 速刷时最常见的四个错误做法第一只背题目不看原理。很多题目背下来很容易比如“HashMap 是数组加链表加红黑树”但面试官只要多问一句“为什么阈值是 8”就暴露了。背题时一定要多问自己一层“为什么”。第二只看知识点不做串联。八股文的高频考点不是孤立的Java 并发和线程池会关联到 OOMRedis 缓存问题会关联到接口性能和项目方案Spring 事务会关联到 AOP。用关联关系复习比按零散题单背效率高很多。第三忽略工程化基础。除了八股文后端面试还会涉及 Git、Linux、IDEA 使用、接口联调、日志排查、前后端分离项目部署。热点词里出现的“idea 如何进行前后端开发”“如何搭建 Java 后端项目”“前后端分离项目实战”都说明工程化能力会被问到不一定作为独立题目但会在项目经验环节被反复考察。如果 3 天时间里还有空余至少要把“本地启动一个 Spring Boot 项目、连接数据库、提供 REST 接口、用 IDEA 调试”这条链路练熟练。第四标题里的“通过率 99%”不要当真。没有哪套题单能保证通过率面试是综合考察八股文只占一部分。真正起作用的是你能否在有限时间里把自己的知识结构整理清楚并且让面试官听到一个完整、自洽的回答过程。8.2 现场答题时最值得养成的三个习惯第一个习惯是“先给结论再展开”。面试官问“Redis 缓存穿透怎么解决”先答“缓存空值或布隆过滤器”再补一句“我项目里用的是缓存空值因为布隆过滤器有误判和更新成本”。两句话就把核心答案和项目细节都给出来了。第二个习惯是“主动说边界”。答完一个方案后主动补一句“这个方案的缺点是……如果并发量更大我会考虑……”。这会让面试官觉得你是有实战判断的人而不是考试机器。第三个习惯是“答不上来就拆步骤”。遇到不会的问题先不要慌把题目拆成自己知道的部分尝试回答。比如问“ZGC 的染色指针原理”如果不知道细节可以说“我对 ZGC 的并发实现没有深入研究但我了解 G1 的 Region 划分和停顿预测模型ZGC 相比 G1 的主要优势是停顿时间更短我平时主要用 G1所以先把熟悉的部分讲清楚。”这种情况比直接说“不会”好很多。8.3 后面几天如果还有时间优先补哪些方向如果 3 天速刷之后还有多余时间优先补四个方向设计模式、Linux 常用命令、网络协议、线上问题排查案例。设计模式重点准备单例、工厂、策略、模板方法、观察者因为这些在 Spring 源码和项目代码中经常出现。Linux 至少掌握日志查看、进程和端口查看、磁盘空间检查、文件权限修改。网络协议重点放在 HTTP、TCP 三次握手四次挥手、HTTPS 握手过程。线上问题排查案例可以和 JVM 部分合并准备一个“接口突然变慢怎么排查”的整体思路。这些内容不一定每天都会考到但你面试时如果能主动提一句“这个场景我线上遇到类似问题时会先看接口耗时和 GC 日志”整体印象会好很多。我个人更建议把这次速刷当成一次知识体检而不是赌题库。3 天时间能做的是把 Java 后端核心高频题的系统框架搭起来把容易卡壳的知识点变成能说出口的结构化表达再用项目场景做一次串联。真正决定面试结果的不是背了多少题而是面对一个不确定的问题时能不能稳定地给出有逻辑、有边界、有判断的答案。