
8月11日这个时间节点并不重要重要的是你只剩一周而 Java 后端面试的考察范围又宽又深。很多人在这种时候容易陷入“什么都想抓什么都没抓住”的状态。这篇文章不打算给你灌鸡汤而是直接给一套可执行的一周冲刺方案把时间花在最高频、最容易被问到的考点上。这套方案的核心思路有 4 点按大厂后端面试的真实考察频率给知识点排序先背高频再补低频每天只做两件事背八股 刷场景题晚上用 30 分钟做复盘项目经验不要临时编而是从你已有的项目里提炼出 3 个可以深挖的亮点第 7 天留出完整时间做全真模拟目的是暴露问题而不是继续学新知识。适合的读者很明确准备 Java 后端实习或校招、社招初级/中级岗位、近期有面试安排、想用一周时间系统过一遍核心考点的人。如果你连 Java 基础语法都没掌握这一周救不了你建议先回去补基础再来用这套方案。1. 一周冲刺核心能力速览先把这一周要覆盖的内容拆成一张表。这张表不是随便列的它的依据是大厂后端面试中出现频率最高的几个知识模块。你可以把它当作一周复习的导航图。模块优先级建议时间核心产出Java 基础与集合高1 天能口头说清 HashMap、ArrayList、String 的底层实现并发编程高1 天能解释 synchronized、volatile、锁升级、线程池参数JVM高0.5 天能画出内存分区说清类加载、GC 和 OOM 排查思路Spring / SpringBoot高1 天能讲清 Bean 生命周期、IOC/AOP、事务失效场景MySQL高1 天能分析一条 SQL 走没走索引解释事务隔离级别Redis中高0.5 天能说明缓存穿透/击穿/雪崩的解决方案消息队列与微服务中0.5 天能讲清 Kafka/RabbitMQ 的基本模型和分布式事务方案项目经验深挖高1 天准备 3 个 STAR 结构的项目故事算法手撕中0.5 天覆盖链表、二叉树、动态规划、TopK 高频题全真模拟面试高0.5 天完成 2 次模拟问答复盘答题逻辑这里有一个关键认知所谓的“大厂必考 100 题”其实不是一份固定的题单。它更像是把上述 10 个模块里的高频考察点拆开按出现频率排序后得到的 100 个知识点。你不需要背到一字不差但每个点都要能用自己的话讲 2 到 3 分钟。2. 先搞清楚后端面试在考察什么很多人准备面试的方式是拿到题就背背完就忘忘了就慌。问题出在没搞懂面试官到底在考察什么。大厂后端面试尤其是 Java 方向核心考察 4 件事2.1 基础扎实程度Java 基础、集合、并发、JVM 这些属于“八股文”范畴。面试官问这些不是为了刁难你而是想快速判断你的技术下限。一个连 HashMap 的 put 流程都说不清的人很难让人相信他能独立完成稍微复杂一点的业务开发。2.2 数据库与中间件实战能力MySQL 和 Redis 是后端开发绕不开的两个组件。MySQL 考察重点在索引、事务、锁、SQL 优化Redis 考察重点在数据结构、缓存一致性、分布式场景下的问题。这部分不是纯背诵面试官喜欢让你结合实际场景分析。2.3 工程落地与项目叙事能力项目经验是面试的重头戏。面试官通常会让你先自我介绍项目然后追问某一个技术细节。追问的深度往往取决于你项目里写到的技术栈。如果项目里写了“用 Redis 做缓存”那你就得准备好回答缓存和数据库一致性怎么保证穿透了怎么办2.4 算法与逻辑思维算法题在面试中被越来越重视但难度通常集中在 LeetCode 中等题。重点不是刷题数量而是能不能在 20 分钟内分析出题目类型、给出合理解法、写对代码、完成边界条件讨论。把这 4 件事放在一周的框架里你会发现时间分配非常清晰前 5 天补基础第 6 天整理项目第 7 天做模拟。3. 7 天具体执行计划3.1 Day 1Java 基础与集合上午复习 Java 基础语法重点看 String、equals/hashCode、异常体系、泛型、反射。下午集中攻克集合。HashMap 是必考中的必考需要掌握HashMap 底层数据结构数组 链表 红黑树put 方法的完整流程扩容机制与阈值计算为什么线程不安全1.7 和 1.8 的差异// 手写一个简单的 HashMap put 流程伪代码帮助理解 public V put(K key, V value) { // 1. 计算 key 的 hash 值 int hash hash(key); // 2. 根据 hash 定位桶位置 int index (n - 1) hash; // 3. 如果桶为空直接插入 // 4. 如果桶不为空遍历链表/红黑树查找 key // 存在则覆盖 value不存在则新增节点 // 5. 插入后检查 size 是否超过 threshold超过则 resize() }晚上复盘打开 LeetCode把“两数之和”“有效的括号”这两道热身题做一遍找回写代码的手感。3.2 Day 2并发编程并发是区分初级和中高级的重要分水岭。一天时间不要贪多重点抓 5 个点synchronized 的底层原理与锁升级volatile 的可见性与禁止重排AQS 的基本原理线程池的核心参数与执行流程ThreadLocal 的原理与内存泄漏问题线程池的执行流程是高频八股建议结合自己的理解画一遍ThreadPoolExecutor executor new ThreadPoolExecutor( 2, // corePoolSize 核心线程数 5, // maximumPoolSize 最大线程数 60, TimeUnit.SECONDS, // 空闲线程存活时间 new LinkedBlockingQueue(10), // 任务队列 Executors.defaultThreadFactory(), new ThreadPoolExecutor.AbortPolicy() // 拒绝策略 );执行流程提交任务时先判断核心线程是否已满未满则创建核心线程执行已满则尝试放入队列队列也满了再判断是否达到最大线程数达到最大线程数则执行拒绝策略。3.3 Day 3JVM 与 Spring上午给 JVM下午给 Spring晚上整理笔记。JVM 的重点是内存分区、类加载、垃圾回收和 OOM 排查。面试官常问“Java 内存溢出你是怎么排查的”这一题回答得好非常加分。可以准备一套回答模板# 1. 先通过 jps 找到进程 PID jps -l # 2. 查看堆内存使用情况 jmap -heap pid # 3. 导出堆转储文件 jmap -dump:formatb,fileheap.hprof pid # 4. 用 MAT 或 JVisualVM 分析大对象Spring 部分重点准备 Bean 生命周期、IOC/AOP 原理、SpringBoot 自动装配、事务传播机制和事务失效场景。3.4 Day 4MySQLMySQL 是后端面试的重头戏值得单独花一整天。索引部分是绝对重点-- 创建一个联合索引 CREATE INDEX idx_user_name_age ON user (name, age); -- 分析一条 SQL 是否走索引 EXPLAIN SELECT * FROM user WHERE name zhangsan AND age 20;要清楚最左前缀原则、覆盖索引、回表、索引下推这些概念。接着是事务隔离级别READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ、SERIALIZABLEMySQL 默认是 REPEATABLE READ。需要能解释 MVCC 如何在 RR 级别下解决幻读。SQL 优化也是高频场景题。常见套路先 EXPLAIN 分析执行计划看 type、key、rows然后考虑加索引、优化 SQL 写法、避免隐式类型转换、避免在索引列上使用函数。3.5 Day 5Redis 与消息队列上午给 Redis下午给消息队列。Redis 的高频考点包括数据类型、持久化机制RDB/AOF、过期策略、缓存三大问题穿透、击穿、雪崩和分布式锁。缓存穿透的解决方案是布隆过滤器缓存击穿可以用互斥锁或逻辑过期缓存雪崩可以通过设置随机过期时间、热点数据永不过期、多级缓存解决。消息队列部分不需要深入太多把 Kafka 或 RabbitMQ 的模型说清楚即可。重点是为什么用 MQ、如何保证消息不丢失、如何保证消息不重复消费、如何保证消息顺序。// 一个简单的消息消费幂等方案 public void handleMessage(Message message) { String msgId message.getMsgId(); // 基于 Redis setnx 判断是否已消费 Boolean success redisTemplate.opsForValue() .setIfAbsent(msg:consumed: msgId, 1, Duration.ofMinutes(5)); if (Boolean.TRUE.equals(success)) { // 执行真正的业务逻辑 doHandle(message); } }3.6 Day 6项目经验深挖项目经验准备的核心原则是不编造、不堆砌技术名词、有真实细节。把你自己做过的一个项目按照下面这个模板整理一遍项目背景为什么做这个项目解决什么问题项目规模几个人你负责什么模块技术选型为什么选这个技术考虑过哪些替代方案核心难点你遇到的最难的问题是什么怎么解决的量化成果性能提升了多少响应时间降低了多少准备一个回答示例项目名称XXX 电商后台管理系统 我的职责负责订单模块和商品模块的后端开发 核心难点订单列表查询速度慢500 万条数据下查询耗时 3 秒 解决方案通过 EXPLAIN 分析发现查询未走索引建立联合索引后 响应时间降到 200ms进一步引入了 Redis 缓存热点数据 接口 QPS 从 500 提升到 2000这个结构的好处是既有技术含量又有数据支撑面试官也方便顺着往下追问。3.7 Day 7算法手撕与全真模拟上午做算法题。时间有限不需要追求刷题数量但下面这几类题目必须会链表反转链表、合并两个有序链表、判断链表是否有环二叉树前中后序遍历、层序遍历、二叉树的最大深度动态规划爬楼梯、最大子数组和、打家劫舍其他高频二分查找、手写单例、TopK 问题下午做全真模拟。可以找同学或者自己用录音功能模拟每道题的回答控制在 3 分钟以内回答结构是先给结论再展开细节最后补充场景。4. Java 基础与并发必背清单这一节把前面提到的知识细化成可背诵的清单。如果是冲刺阶段优先背关键词和逻辑链路不要逐字背。4.1 HashMap 高频问法面试官不会只问“HashMap 的原理是什么”常见的追问路径是HashMap 和 Hashtable 的区别HashMap 为什么线程不安全ConcurrentHashMap 是怎么保证线程安全的为什么 HashMap 的容量是 2 的幂次红黑树为什么能优化链表其中“为什么容量是 2 的幂次”是一个容易忽略但高频的考点。核心原因是计算桶位置时使用(n - 1) hash替代取模运算只有当 n 是 2 的幂次时n - 1的二进制才是全 1才能保证 hash 值均匀分布同时提高性能。4.2 线程池参数背诵口诀线程池 7 大参数核心线程数、最大线程数、空闲存活时间、时间单位、任务队列、线程工厂、拒绝策略。一个重要的点是核心线程数该怎么设。常规说法是 CPU 密集任务设为核心数 1IO 密集任务设为 CPU 核心数 * 2 左右但实际要结合压测结果调整。面试这样回答比单纯背公式更显水平。4.3 synchronized 与 ReentrantLock 对比对比项synchronizedReentrantLock锁类型关键字隐式获取/释放API需要手动加锁/解锁锁特性非公平锁JDK 1.6 后可升级可公平可非公平可中断可超时条件变量通过 wait/notifyCondition 支持多条件性能优化后和 ReentrantLock 接近稳定5. Spring / SpringBoot 高频面试点Spring 是 Java 后端面试的必考模块。以下 5 个问题出现频率最高必须要能脱稿回答。5.1 Bean 生命周期完整链路是实例化 - 属性填充 - BeanNameAware - BeanFactoryAware - BeanPostProcessor 前置处理 - InitializingBean - init-method - BeanPostProcessor 后置处理 - 销毁。不需要背全但至少要说清楚实例化、初始化、销毁三个阶段以及 BeanPostProcessor 在 Spring AOP 中的应用。5.2 Spring 事务失效场景这个题很经典非常容易答不全。常见的失效场景包括方法名不是 public或者方法被 final 修饰类内部方法调用this 调用没有经过代理对象异常被 catch 了事务感知不到抛出的不是 RuntimeException 或 Error而是受检异常数据源没有配置事务管理器传播行为设置成了 NOT_SUPPORTED// 事务失效场景示例同类内部调用 Service public class OrderService { Transactional public void createOrder(Order order) { saveOrder(order); deductStock(); } private void deductStock() { // 这里的 Transactional 不生效因为这是内部调用 } }5.3 SpringBoot 自动装配原理高频回答路径EnableAutoConfiguration- 通过Import导入AutoConfigurationImportSelector- 加载META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports中配置的自动配置类 - 根据条件注解ConditionalOnClass、ConditionalOnMissingBean等判断是否生效。5.4 IOC 和 AOP 的底层实现IOC 核心是 BeanFactory 和 ApplicationContextAOP 底层是动态代理JDK 动态代理基于接口CGLIB 基于继承。Spring Boot 2.x 之后默认使用 CGLIB 代理。5.5 SpringMVC 执行流程从请求进入 DispatcherServlet 开始依次经过 HandlerMapping、HandlerAdapter、Controller、ModelAndView、ViewResolver最终返回响应。这道题很容易被问回答时要强调前后端分离后返回的通常是 JSONViewResolver 这一步基本不会走。6. MySQL 必背与 SQL 优化实战MySQL 的面试题量很大但知识点集中。这里只挑最重要、最常考的展开。6.1 索引数据结构为什么用 B TreeB Tree 相对于 B Tree 有两个关键优势非叶子节点只存索引键不存数据单节点能存储更多索引降低树的高度减少磁盘 IO叶子节点通过双向链表连接适合范围查询和排序这题要能画结构要能解释为什么不用哈希索引、二叉树、红黑树。6.2 联合索引的最左前缀原则CREATE INDEX idx_name_age ON user (name, age); -- 走索引 SELECT * FROM user WHERE name zhangsan; SELECT * FROM user WHERE name zhangsan AND age 20; -- 不走索引跳过了左边的 name 列 SELECT * FROM user WHERE age 20;最左前缀原则的本质是 B Tree 联合索引的节点排序规则先按第一列排序再按第二列排序。6.3 事务隔离级别与 MVCCMVCC 是 MySQL 实现隔离级别的核心机制通过隐藏字段、undo log 和 ReadView 实现。在 REPEATABLE READ 下MVCC 通过生成读视图解决了快照读的幻读问题但当前读SELECT ... FOR UPDATE仍然可能产生幻读需要引入间隙锁解决。这个点面试官很可能追问建议这样组织回答先讲 MVCC 解决了什么问题再讲快照读和当前读的区别最后讲间隙锁。6.4 一条慢 SQL 的排查步骤# 开启慢查询日志 SET GLOBAL slow_query_log ON; SET GLOBAL long_query_time 1; # 使用 EXPLAIN 分析执行计划 EXPLAIN SELECT * FROM order_info WHERE user_id 100 ORDER BY create_time DESC;分析执行计划时关注 4 列type、key、rows、Extra。type从好到差依次是 system - const - eq_ref - ref - range - index - ALL看到 ALL 就要警觉。Extra里出现 Using filesort、Using temporary 也要重点优化。7. Redis 核心问题与分布式场景Redis 的面试题重复率很高把下面几个问题背熟能覆盖大部分场景。7.1 缓存穿透、击穿、雪崩这三个概念很多人混淆用一句话区分穿透查询一个不存在的数据缓存和数据库都没有击穿某个热点 key 过期同时大量请求打到数据库雪崩大量 key 在同一时间过期或 Redis 宕机导致流量全部打到数据库解决方案要能对应上穿透用布隆过滤器或缓存空值击穿用互斥锁或逻辑过期雪崩用随机过期时间、多级缓存、限流降级。7.2 缓存与数据库一致性这是一个开放性问题没有标准答案。最稳妥的通用回答先更新数据库再删除缓存。这是目前实际项目中最常用的方案。要配合延迟双删或者订阅 binlog 异步删除缓存来降低不一致概率。如果要求强一致性就只能牺牲性能使用分布式锁串行化读写。7.3 Redis 分布式锁核心命令是SET key value EX seconds NX释放锁要使用 Lua 脚本保证原子性。高版本 Redis 还可以使用 Redisson 框架它内部封装了看门狗机制做锁续期。// Redisson 分布式锁示例 RLock lock redissonClient.getLock(order:payment:1001); boolean locked lock.tryLock(3, 30, TimeUnit.SECONDS); try { if (locked) { // 业务逻辑 } } finally { if (locked lock.isHeldByCurrentThread()) { lock.unlock(); } }8. 算法手撕与代码题准备策略一周时间刷算法核心策略是“分类刷 高频优先”不要按题号刷。推荐优先级第一梯队数组、链表、二叉树、字符串第二梯队动态规划、堆、栈第三梯队图、回溯、贪心面试手撕代码时先不要急着写先和面试官确认输入输出和边界条件。比如“这个数组是否能保证非空”“数据范围多大”。这个过程本身就能体现工程思维。// 高频题目示例反转链表 public ListNode reverseList(ListNode head) { ListNode prev null; ListNode curr head; while (curr ! null) { ListNode next curr.next; curr.next prev; prev curr; curr next; } return prev; }写完之后主动做两件事说时间复杂度和空间复杂度举一个边界测试用例。这是一个非常加分的细节。9. 面试回答方法论从背八股到会答题很多人背了很多东西一到面试就说不出话原因是没有组织回答结构。这里给一套适用于绝大多数技术问题的回答框架结论先行 - 展开细节 - 对比补充 - 场景收尾用“进程和线程的区别”举例结论先行进程是操作系统资源分配的最小单位线程是 CPU 调度的最小单位一个进程可以包含多个线程。展开细节进程拥有独立的地址空间线程共享所属进程的地址空间。所以线程间通信比进程间通信更高效但也更容易出现并发问题。对比补充从资源开销角度进程创建和切换的开销远大于线程从健壮性角度一个进程崩溃不影响其他进程但一个线程崩溃可能导致整个进程退出。场景收尾在 Java 中我们通过线程池创建多线程处理并发请求进程层面则由 JVM 启动一个进程来承载。这套结构的好处是即使对某个点记得不够清楚也能通过框架维持回答的逻辑完整性。10. 一周冲刺中最容易踩的坑以下 5 个坑是我见过最多人踩的。10.1 只看不写动手能力为零八股文背得再熟手撕代码写不出来面试直接挂。每天至少要写 2 道代码题题目不用难但要完整写出来并调试通过。10.2 项目经验堆技术名词不落细节项目里写了“使用 Redis 缓存 消息队列削峰”面试官问“消息队列怎么保证消息不丢失”直接答不上来。宁可少写技术栈也不能写一个自己讲不透的。10.3 八股只背结论不问为什么HashMap 为什么线程不安全背了结论“因为 put 的时候会导致数据覆盖”。面试官追问“为什么 1.7 头插法会成环”如果你没有理解扩容的完整流程就会卡住。所有八股都要准备一个“为什么”的回答。10.4 忽视软技能和自我介绍自我介绍不是念简历而是用 1 分钟讲清楚“我是谁 我做过什么 我擅长什么”。很多人简历写得好一开口就紧张这种损耗完全没有必要。10.5 不做模拟面试直接上考场面试对表达能力和临场反应的要求很高。建议第 7 天一定要做至少一次模拟问答重点练习听题后 10 秒内组织回答框架的能力。11. 结尾这一周最值得先做的事如果你看完这篇长文不知道从哪里开始那就先从 Day 1 的 HashMap 开始。因为这题几乎是所有 Java 后端面试的开场题一旦答好自信心立刻上来后面的发挥也会稳定很多。最容易踩的坑也已经说过不要贪多。一周时间有限与其把每科都复习到 60 分不如把高频考点复习到 90 分。这篇文章只是一个起点。真正的提升来自你每天的实际输出写代码、写笔记、开口讲题。建议收藏备用按 7 天计划执行每一类考点刷透之后再进入下一天。到时候你会发现面试考的不是你背了多少题而是你能不能把一个知识点用清晰、有逻辑的方式讲给面试官听。