Java 校招复习范围
本文面向已经学过 Java、准备后端校招的读者,提供核心范围、前置关系、停止条件与深入入口。两周和一个月是选择资料的参考情境,实际学习量取决于基础和可用时间,日程由你自行安排。
1. 两周:选择核心范围
先核对目标岗位,再从下面的核心目录选择尚不熟悉的主题。每个主题只读指定章节,先解释代表问题,再用最小示例或练习检查。熟悉的内容可以直接从题目开始;遇到前置缺口沿链接补读。
每天可用时间很少时,优先覆盖目标岗位要求的语言与集合、编码、SQL、网络和并发基础,同时整理自己项目的关键请求链。框架内容跟随实际使用的技术栈;具体收集器、AQS 源码、Netty 内部实现和复杂架构不必自动加入这一轮。
两周范围不代表只背结论。停止条件要求能说明机制和边界,暂时无法完成全部主题时,在自己的记录中明确遗漏,并继续按目标岗位取舍。
2. 一个月:补机制与迁移练习
用核心题检查哪些部分需要回读,再进入 Java 后端开发面试路线中的常考与追问。每读一个深入主题,尝试改变原题的一个条件,解释结果为什么变化。
- 算法:从代表练习换到一个同模式、条件不同的题目,并检查复杂度与边界。
- 数据库与并发:画两次请求或两个事务的执行时序,指出保证依赖哪些条件。
- 项目:加入重复、超时、资源耗尽等约束,说明选择与验证办法。
- 按岗选学:根据 JD 或简历中的实际内容阅读消息、搜索、安全、AI 应用或系统设计。
简历准备和项目准备可与技术复习同时进行。不要等读完全部文章才开始整理自己的经历。
3. 核心主题、前置与停止条件
以下按前置关系安排阅读顺序。每篇的剩余章节、常见问题和参考资料可以在需要时继续阅读;题目答案默认收起,先独立作答再核对。
1. 类型系统与对象模型
前置:能读懂简单 Java 代码;遇到术语可先查通用基础。
- Java 值传递:核心先读第 1、2、3 节;其余机制和案例按需要深入。
- 面向对象编程(Object-Oriented Programming):核心先读第 1、2、3 节;其余机制和案例按需要深入。
- 对象相等性:核心先读第 1、2、3、4 节;其余机制和案例按需要深入。
停止条件:解释值传递、对象身份和相等性的区别。 根据调用链解释重载、重写与动态绑定。
2. 字符串、数值与异常
前置:类型系统与对象模型
- String:核心先读第 1、2、3、4 节;其余机制和案例按需要深入。
- Java 异常:核心先读第 1、2、3、4 节;其余机制和案例按需要深入。
- BigDecimal:核心先读第 1、2、3、4、5 节;其余机制和案例按需要深入。
- 包装类型:核心先读第 1、2、3 节;其余机制和案例按需要深入。
停止条件:解释字符串不可变、装箱与数值精度的使用边界。 说明异常传播、异常分类与资源关闭路径。
3. Java 集合
前置:类型系统与对象模型
- Java 集合框架:核心先读第 1、2、3、4、5、6 节;其余机制和案例按需要深入。
- ArrayList:核心先读第 1、2、3、4、5、7 节;其余机制和案例按需要深入。
- HashMap:先读第 1—5 节的查找、键相等、冲突、扩容与共享修改边界;树化阈值和位运算推导按需深入。
停止条件:根据顺序、去重、键值查找和取出规则选择容器,并说明依据。 解释随机访问、追加、扩容和中间插入的成本,区分单次操作与摊销复杂度。 沿 put/get 解释定位与比较,说明键的相等性、扩容原因和共享修改限制。
4. 算法实现与复杂度
前置:Java 集合
- 算法复杂度:核心先读第 1、2、3、4、5、7 节;其余机制和案例按需要深入。
- 数据结构:按目录补所需的数据结构与算法模式,不要求把所有链接全文读完。
- 算法:按目录补所需的数据结构与算法模式,不要求把所有链接全文读完。
- 滑动窗口:核心先读第 1、2、3、4、7 节;其余机制和案例按需要深入。
- 树与图搜索:核心先读第 1、2、3、4 节;其余机制和案例按需要深入。
- 算法正确性:核心先读第 1、2、3、4、6 节;其余机制和案例按需要深入。
停止条件:用输入规模说明时间、空间复杂度,并覆盖边界输入。 用滑动窗口或树与图搜索说明状态、不变量和终止条件。
5. 进程、内存与 I/O
前置:能读懂简单 Java 代码;遇到术语可先查通用基础。
- 进程与线程:核心先读第 1、2、3、4 节;其余机制和案例按需要深入。
- 线程同步:核心先读第 1、2、3、4 节;其余机制和案例按需要深入。
- 死锁:核心先读第 1、2、3、4 节;其余机制和案例按需要深入。
- 虚拟内存:核心先读第 1、2、3、4 节;其余机制和案例按需要深入。
停止条件:解释进程与线程的共享边界、同步和死锁。 区分虚拟地址、TLB 未命中与缺页。
6. SQL 与数据约束
前置:能读懂简单 Java 代码;遇到术语可先查通用基础。
- SQL 查询:核心先读第 1、2、3、4 节;其余机制和案例按需要深入。
- SQL 连接:核心先读第 1、2、3、4 节;其余机制和案例按需要深入。
- SQL 聚合:核心先读第 1、2、3、4 节;其余机制和案例按需要深入。
- 数据约束:核心先读第 1、2、3、4 节;其余机制和案例按需要深入。
停止条件:在小表上完成过滤、连接和聚合,解释 NULL 与重复行。 说明唯一约束怎样处理并发写入冲突。
7. 运行时内存与对象布局
- JVM 运行时数据区域:核心先读第 1、2、3、4、5 节;其余机制和案例按需要深入。
- OutOfMemoryError 与 StackOverflowError:核心先读第 1、6、7 节;其余机制和案例按需要深入。
停止条件:区分线程栈、堆、类元数据与直接内存,说明各自保存什么。 从异常类型判断先检查哪类内存和运行证据。
8. 垃圾回收与收集器
前置:运行时内存与对象布局
停止条件:从 GC Roots 解释可达性,判断循环引用能否被回收。 说明分代假设与对象分配、存活和回收之间的关系。
9. 线程、竞态与 JMM
- 线程安全:核心先读第 1、2、3、4、5 节;其余机制和案例按需要深入。
- Java 线程:核心先读第 1、2、3、4 节;其余机制和案例按需要深入。
- Java 内存模型:核心先读第 1、2、3、4 节;其余机制和案例按需要深入。
停止条件:区分原子性、可见性和有序性,识别共享状态上的竞态。 根据线程状态和 happens-before 解释跨线程结果。
10. 同步与原子性
前置:线程、竞态与 JMM
- synchronized:核心先读第 1、2、3 节;其余机制和案例按需要深入。
- volatile:核心先读第 1、2、3、5 节;其余机制和案例按需要深入。
停止条件:说明 synchronized 保护的临界区和锁对象。 解释 volatile 的可见性保证,识别需要原子性的复合操作。
11. 线程池与异步编排
- Java 线程池:核心先读第 1、2、3、4 节;其余机制和案例按需要深入。
- CompletableFuture:核心先读第 1、3、4、5 节;其余机制和案例按需要深入。
停止条件:解释线程数、队列和拒绝策略怎样共同处理任务。 说明异步任务的异常、超时与取消需要在哪里处理。
12. Spring IoC 与 Bean 生命周期
前置:类型系统与对象模型
- IoC 容器:核心先读第 1、2、3、4 节;其余机制和案例按需要深入。
- Bean 生命周期:核心先读第 1、2、3、5 节;其余机制和案例按需要深入。
- 依赖注入:核心先读第 1、2、3、4 节;其余机制和案例按需要深入。
停止条件:沿实例化、依赖注入、初始化和销毁解释 Bean 生命周期。 说明构造器注入、作用域与对象依赖关系。
13. 事务、锁与 MVCC
前置:SQL 与数据约束
- 数据库事务:核心先读第 1、2、3、4、5、6 节;其余机制和案例按需要深入。
- InnoDB 锁:核心先读第 1、2、3、6、7 节;其余机制和案例按需要深入。
- MVCC:核心先读第 1、2、3、4、5、6 节;其余机制和案例按需要深入。
停止条件:说明事务隔离级别如何约束并发读写。 区分快照读与当前读,解释 MVCC 与锁各自的作用。
14. AOP、代理与声明式事务
前置:Spring IoC 与 Bean 生命周期、事务、锁与 MVCC
- Spring AOP:核心先读第 1、2、3、6 节;其余机制和案例按需要深入。
- Spring 事务:核心先读第 1、2、3、5、7 节;其余机制和案例按需要深入。
- JDK 动态代理与 CGLIB:核心先读第 1、2、3、4 节;其余机制和案例按需要深入。
停止条件:沿代理调用链解释切面怎样生效,区分两类代理。 判断事务传播、回滚规则和自调用的生效边界。
15. TCP、HTTP 与 RPC
前置:进程、内存与 I/O
- TCP 连接:核心先读第 1、2、3、4、5 节;其余机制和案例按需要深入。
- DNS:核心先读第 1、2、3、4 节;其余机制和案例按需要深入。
- TLS:核心先读第 1、2、3、4 节;其余机制和案例按需要深入。
- HTTP:核心先读第 1、2、3、5、6 节;其余机制和案例按需要深入。
- RPC:核心先读第 1、2、3、7 节;其余机制和案例按需要深入。
停止条件:沿 TCP、HTTP 和 RPC 解释一次远程调用的主要过程。 说明连接、序列化、超时和调用失败的边界。
16. Spring MVC 与 Web 请求链
前置:TCP、HTTP 与 RPC、Spring IoC 与 Bean 生命周期
- Spring MVC 请求生命周期:核心先读第 1、2、3、4 节;其余机制和案例按需要深入。
- DispatcherServlet:核心先读第 1、2、3、4 节;其余机制和案例按需要深入。
- Spring 拦截机制:核心先读第 1、2、3、5 节;其余机制和案例按需要深入。
停止条件:沿 Filter、DispatcherServlet、Interceptor 和 Controller 解释请求路径。 区分过滤器与拦截器的适用位置。
17. Spring Boot 自动配置与启动
- Spring Boot 启动:核心先读第 1、2、3、4、5、6 节;其余机制和案例按需要深入。
- Spring Boot 自动配置:核心先读第 1、2、3、5 节;其余机制和案例按需要深入。
- Spring Boot 外部化配置:核心先读第 1、2、3、6 节;其余机制和案例按需要深入。
停止条件:解释自动配置导入、条件判断与用户配置的关系。 根据启动流程和配置来源定位配置未生效的问题。
18. MyBatis 与数据库连接池
前置:SQL 与数据约束、事务、锁与 MVCC、Spring IoC 与 Bean 生命周期
停止条件:解释数据库连接的借还、事务参与和连接池耗尽。 沿 MyBatis 调用链说明参数绑定与查询执行。
19. MySQL 索引与查询优化
- 数据库索引:核心先读第 1、2、3、4、5、6、7 节;其余机制和案例按需要深入。
- 执行计划:核心先读第 1、2、3、4 节;其余机制和案例按需要深入。
- B+ 树:核心先读第 1、2、3、4 节;其余机制和案例按需要深入。
- 聚簇索引:核心先读第 1、3、4、5 节;其余机制和案例按需要深入。
- 联合索引与覆盖索引:核心先读第 1、2、3、4、6 节;其余机制和案例按需要深入。
停止条件:解释 B+ 树、聚簇与二级索引、回表和覆盖索引。 根据联合索引列顺序判断哪些查询条件能缩小扫描范围。
20. Redis 与缓存一致性
- Redis:核心先读第 1、2、3、4、5 节;其余机制和案例按需要深入。
- Redis 过期:核心先读第 1、2、3、4 节;其余机制和案例按需要深入。
- Redis 内存淘汰:核心先读第 1、2、3、4 节;其余机制和案例按需要深入。
- 缓存一致性:核心先读第 1、2、3、4、7 节;其余机制和案例按需要深入。
- 缓存穿透、击穿、雪崩与热点 Key:核心先读第 1、2、3、4、6 节;其余机制和案例按需要深入。
停止条件:根据访问方式选择 Redis 数据结构,并解释缓存与数据库的更新顺序。 区分缓存穿透、击穿、雪崩与热点问题,说明处理条件。
4. 复习结果怎么检查
先口述,再编码或画时序;对照参考回答后,回到自己解释不清的章节。本站提供问题、依据和练习,不维护个人掌握状态。
具体入口见代表题与练习。直接从搜索或收藏进入文章时,也可以使用文内“相关内容”链接回查原理,无需从路线起点重新开始。