Java 校招复习范围
本文面向已经学过 Java、准备后端校招的读者,提供核心范围、前置关系、停止条件与深入入口。两周和一个月是选择资料的参考情境,实际学习量取决于基础和可用时间,日程由你自行安排。
1. 两周:选择核心范围
先核对目标岗位,再从下面的核心目录选择尚不熟悉的主题。每个主题只读指定章节,先解释代表问题,再用最小示例或练习检查。熟悉的内容可以直接从题目开始;遇到前置缺口沿链接补读。
每天可用时间很少时,优先覆盖目标岗位要求的语言与集合、编码、SQL、网络和并发基础,同时整理自己项目的关键请求链。框架内容跟随实际使用的技术栈;具体收集器、AQS 源码、Netty 内部实现和复杂架构不必自动加入这一轮。
两周范围不代表只背结论。停止条件要求能说明机制和边界,暂时无法完成全部主题时,在自己的记录中明确遗漏,并继续按目标岗位取舍。
2. 一个月:补机制与迁移练习
用核心题检查哪些部分需要回读,再进入 Java 后端开发面试路线中的常考与追问。每读一个深入主题,尝试改变原题的一个条件,解释结果为什么变化。
- 算法:从代表练习换到一个同模式、条件不同的题目,并检查复杂度与边界。
- 数据库与并发:画两次请求或两个事务的执行时序,指出保证依赖哪些条件。
- 项目:加入重复、超时、资源耗尽等约束,说明选择与验证办法。
- 按岗选学:根据 JD 或简历中的实际内容阅读消息、搜索、安全、AI 应用或系统设计。
简历准备和项目准备可与技术复习同时进行。不要等读完全部文章才开始整理自己的经历。
3. 核心主题、前置与停止条件
以下按前置关系安排阅读顺序。每篇的剩余章节、常见问题和参考资料可以在需要时继续阅读;题目答案默认收起,先独立作答再核对。
1. 类型系统与对象模型
前置:能读懂简单 Java 代码;遇到术语可先查通用基础。
- Java 值传递:核心先读“变量保存的值”“赋值与传参”“数组与 String”三节;其余机制和案例按需深入。
- 面向对象编程(Object-Oriented Programming):核心先读“封装”“继承与多态”“接口、抽象类与组合”三节;其余机制和案例按需深入。
- 对象相等性:核心先读“对象身份与逻辑相等”“`equals` 契约”“`hashCode` 契约”“可变哈希键”四节;其余机制和案例按需深入。
停止条件:解释值传递、对象身份和相等性的区别。 根据调用链解释重载、重写与动态绑定。
2. 字符串、数值与异常
前置:类型系统与对象模型
- String:核心先读“String 的不可变性”“字符串常量池”“StringBuilder 与 StringBuffer”“字符串拼接的选择”四节;其余机制和案例按需深入。
- Java 异常:核心先读“异常体系”“抛出、声明与捕获”“常见处理规则”“try-with-resources 与资源关闭”四节;其余机制和案例按需深入。
- BigDecimal:核心先读“double 的十进制误差”“BigDecimal 的表示”“BigDecimal 构造”“运算与舍入”“`equals` 与 `compareTo`”五节;其余机制和案例按需深入。
- 包装类型:核心先读“基本类型与包装类型”“自动装箱与拆箱”“包装对象缓存”三节;其余机制和案例按需深入。
停止条件:解释字符串不可变、装箱与数值精度的使用边界。 说明异常传播、异常分类与资源关闭路径。
3. Java 集合
前置:类型系统与对象模型
- Java 集合框架:核心先读“Collection 与 Map”“List”“Set”“Map”“Queue 与 Deque”“选型步骤”6节;其余机制和案例按需深入。
- ArrayList:核心先读“size 与 capacity”“随机访问”“尾部追加与扩容”“初始容量”“中间插入与删除”“线程安全”6节;其余机制和案例按需深入。
- HashMap:先读第 1—5 节的查找、键相等、冲突、扩容与共享修改边界;树化阈值和位运算推导按需深入。
停止条件:根据顺序、去重、键值查找和取出规则选择容器,并说明依据。 解释随机访问、追加、扩容和中间插入的成本,区分单次操作与摊销复杂度。 沿 put/get 解释定位与比较,说明键的相等性、扩容原因和共享修改限制。
4. 算法实现与复杂度
前置:Java 集合
- 算法复杂度:核心先读“输入规模”“由约束估算数量级”“最坏、平均与摊销复杂度”“时间复杂度推导”“空间复杂度”“数值范围”6节;其余机制和案例按需深入。
- 数据结构:按目录补所需的数据结构与算法模式,不要求把所有链接全文读完。
- 算法:按目录补所需的数据结构与算法模式,不要求把所有链接全文读完。
- 滑动窗口:核心先读“连续区间”“半开区间与不变量”“固定窗口”“可变窗口”“正确性证明”五节;其余机制和案例按需深入。
- 树与图搜索:核心先读“图的建模”“DFS”“BFS”“visited 标记时机”四节;其余机制和案例按需深入。
- 算法正确性:核心先读“输入输出契约”“不变量与复杂度”“类型选择”“构造测试用例”“手动执行”五节;其余机制和案例按需深入。
停止条件:用输入规模说明时间、空间复杂度,并覆盖边界输入。 用滑动窗口或树与图搜索说明状态、不变量和终止条件。
5. 进程、内存与 I/O
前置:能读懂简单 Java 代码;遇到术语可先查通用基础。
- 进程与线程:核心先读“面试核心”“资源与执行状态”“调度与上下文切换”“使用边界”四节;其余机制和案例按需深入。
- 线程同步:核心先读“面试核心”“临界区与共享不变量”“条件变量”“使用边界”四节;其余机制和案例按需深入。
- 死锁:核心先读“面试核心”“等待环”“预防与恢复”“使用边界”四节;其余机制和案例按需深入。
- 虚拟内存:核心先读“面试核心”“地址转换路径”“缺页与按需分配”“使用边界”四节;其余机制和案例按需深入。
停止条件:解释进程与线程的共享边界、同步和死锁。 区分虚拟地址、TLB 未命中与缺页。
6. SQL 与数据约束
前置:能读懂简单 Java 代码;遇到术语可先查通用基础。
- SQL 查询:核心先读“面试核心”“最小表与过滤”“去重与分页”“使用边界”四节;其余机制和案例按需深入。
- SQL 连接:核心先读“面试核心”“匹配与补空”“ON 与 WHERE”“使用边界”四节;其余机制和案例按需深入。
- SQL 聚合:核心先读“面试核心”“分组与 NULL”“分组前后过滤”“使用边界”四节;其余机制和案例按需深入。
- 数据约束:核心先读“面试核心”“表级规则”“并发与引用完整性”“使用边界”四节;其余机制和案例按需深入。
停止条件:在小表上完成过滤、连接和聚合,解释 NULL 与重复行。 说明唯一约束怎样处理并发写入冲突。
7. 运行时内存与对象布局
- JVM 运行时数据区域:核心先读“程序计数器”“虚拟机栈”“堆”“方法区”“运行时常量池”五节;其余机制和案例按需深入。
- OutOfMemoryError 与 StackOverflowError:核心先读“Java heap space”“StackOverflowError”“按错误类型选择证据”三节;其余机制和案例按需深入。
停止条件:区分线程栈、堆、类元数据与直接内存,说明各自保存什么。 从异常类型判断先检查哪类内存和运行证据。
8. 垃圾回收与收集器
前置:运行时内存与对象布局
- GC Roots:核心先读“引用计数与循环引用”“GC Roots 的来源”“可达对象与内存泄漏”“强、软、弱、虚引用”四节;其余机制和案例按需深入。
- 分代回收:核心先读“分代假设”“跨代引用与写屏障”“安全点”“Stop-The-World 阶段”四节,解释分代、跨代引用与停顿;屏障实现和并发标记算法按需深入。
停止条件:从 GC Roots 解释可达性,判断循环引用能否被回收。 说明分代假设与对象分配、存活和回收之间的关系。
9. 线程、竞态与 JMM
- 线程安全:核心先读“竞态条件”“原子性、可见性与有序性”“不变量与临界区”“同步策略”“synchronized 状态转换”五节;其余机制和案例按需深入。
- Java 线程:核心先读“`start()` 与 `run()`”“线程的六种状态”“协作式中断”“InterruptedException 的传播”四节;其余机制和案例按需深入。
- Java 内存模型:核心先读“跨线程可见性问题”“happens-before 规则”“volatile 发布链”“JUC 组件的交接语义”四节;其余机制和案例按需深入。
停止条件:区分原子性、可见性和有序性,识别共享状态上的竞态。 根据线程状态和 happens-before 解释跨线程结果。
10. 同步与原子性
前置:线程、竞态与 JMM
- synchronized:核心先读“对象 monitor 与可重入”“同步方法与同步代码块”“可见性保证”三节;其余机制和案例按需深入。
- volatile:核心先读“volatile 读写的顺序保证”“复合更新”“volatile 标志发布”“使用场景”四节;其余机制和案例按需深入。
停止条件:说明 synchronized 保护的临界区和锁对象。 解释 volatile 的可见性保证,识别需要原子性的复合操作。
11. 线程池与异步编排
- Java 线程池:核心先读“构造参数”“execute 接收流程”“线程池容量”“过载保护”四节;其余机制和案例按需深入。
- CompletableFuture:核心先读“Future 的结果与异常”“回调的执行线程”“异常恢复与观察”“超时与取消的作用范围”四节;其余机制和案例按需深入。
停止条件:解释线程数、队列和拒绝策略怎样共同处理任务。 说明异步任务的异常、超时与取消需要在哪里处理。
12. Spring IoC 与 Bean 生命周期
前置:类型系统与对象模型
- IoC 容器:核心先读“依赖创建与外部装配”“IoC 与 DI”“BeanDefinition 与实例”“替换与测试”四节;其余机制和案例按需深入。
- Bean 生命周期:核心先读“实例化与依赖注入”“初始化回调”“BeanPostProcessor”“销毁回调”四节;其余机制和案例按需深入。
- 依赖注入:核心先读“构造器注入”“Setter 注入”“字段注入”“多个候选 Bean”四节;其余机制和案例按需深入。
停止条件:沿实例化、依赖注入、初始化和销毁解释 Bean 生命周期。 说明构造器注入、作用域与对象依赖关系。
13. 事务、锁与 MVCC
前置:SQL 与数据约束
- 数据库事务:先掌握 ACID、隔离级别与事务边界;再练习并发更新、失败回滚与提交结果确认。
- InnoDB 锁:先掌握记录锁、间隙锁与唯一键边界;再练习锁等待、死锁与跳过锁定记录。
- MVCC:先掌握版本链、Read View 和 RC/RR 快照时机;再推演混合读写与长快照成本。
停止条件:说明事务隔离级别如何约束并发读写。 区分快照读与当前读,解释 MVCC 与锁各自的作用。
14. AOP、代理与声明式事务
前置:Spring IoC 与 Bean 生命周期、事务、锁与 MVCC
- Spring AOP:核心先读“连接点与方法执行”“常用概念”“拦截链”“代理边界”四节;其余机制和案例按需深入。
- Spring 事务:核心先读“事务注解与代理”“事务拦截器”“连接与事务上下文”“事务边界”“传播、隔离与回滚”五节;其余机制和案例按需深入。
- JDK 动态代理与 CGLIB:核心先读“JDK 动态代理”“CGLIB”“Spring 的默认选择”“自调用”四节;其余机制和案例按需深入。
停止条件:沿代理调用链解释切面怎样生效,区分两类代理。 判断事务传播、回滚规则和自调用的生效边界。
15. TCP、HTTP 与 RPC
前置:进程、内存与 I/O
- TCP 连接:先掌握握手、关闭与状态变化;再练习丢包恢复、半关闭和连接堆积排查。
- DNS:核心先读“面试核心”“递归与迭代查询”“缓存与服务切换”“使用边界”四节;其余机制和案例按需深入。
- TLS:核心先读“面试核心”“证书与握手”“记录加密与会话恢复”“使用边界”四节;其余机制和案例按需深入。
- HTTP:核心先读“HTTP/1.1 持久连接”“HTTP/2 多路复用”“HTTP/3 与 QUIC”“超时设置”“重试”五节;其余机制和案例按需深入。
- RPC:核心先读“RPC 调用链”“序列化协议”“半包与粘包”“deadline 传递”四节;其余机制和案例按需深入。
停止条件:沿 TCP、HTTP 和 RPC 解释一次远程调用的主要过程。 说明连接、序列化、超时和调用失败的边界。
16. Spring MVC 与 Web 请求链
前置:TCP、HTTP 与 RPC、Spring IoC 与 Bean 生命周期
- Spring MVC 请求生命周期:核心先读“Servlet 容器”“Filter 链”“DispatcherServlet”“返回值处理”四节;其余机制和案例按需深入。
- DispatcherServlet:核心先读“HandlerMapping”“映射条件”“HandlerAdapter”“Interceptor 回调”四节;其余机制和案例按需深入。
- Spring 拦截机制:核心先读“Filter”“HandlerInterceptor”“AOP”“异常处理范围”四节;其余机制和案例按需深入。
停止条件:沿 Filter、DispatcherServlet、Interceptor 和 Controller 解释请求路径。 区分过滤器与拦截器的适用位置。
17. Spring Boot 自动配置与启动
- Spring Boot 启动:核心先读“启动类与 `@SpringBootApplication`”“运行环境准备”“容器刷新”“嵌入式 Web 服务器”“Runner 与就绪”“启动、存活与就绪”6节;其余机制和案例按需深入。
- Spring Boot 自动配置:核心先读“候选自动配置类”“条件注解”“用户配置优先”“条件评估报告”四节;其余机制和案例按需深入。
- Spring Boot 外部化配置:核心先读“Environment 与 PropertySource”“配置来源的优先级”“配置文件的加载顺序”“启动配置校验”四节;其余机制和案例按需深入。
停止条件:解释自动配置导入、条件判断与用户配置的关系。 根据启动流程和配置来源定位配置未生效的问题。
18. MyBatis 与数据库连接池
前置:SQL 与数据约束、事务、锁与 MVCC、Spring IoC 与 Bean 生命周期
停止条件:解释数据库连接的借还、事务参与和连接池耗尽。 沿 MyBatis 调用链说明参数绑定与查询执行。
19. MySQL 索引与查询优化
- 数据库索引:先掌握 B+ 树、聚簇与二级索引;再用扫描量、回表和排序判断计划成本。
- 执行计划:核心先读“面试核心”“查询条件与访问路径”“执行计划字段”“使用边界”四节;其余机制和案例按需深入。
- B+ 树:核心先读“B+ 树的结构”“分支数与树高”“等值查询”“范围查询”四节;其余机制和案例按需深入。
- 聚簇索引:核心先读“聚簇索引”“二级索引与回表”“覆盖索引”“主键宽度”四节;其余机制和案例按需深入。
- 联合索引与覆盖索引:先掌握最左前缀、回表与覆盖;再推演 ICP、排序与 LIMIT 的访问成本。
停止条件:解释 B+ 树、聚簇与二级索引、回表和覆盖索引。 根据联合索引列顺序判断哪些查询条件能缩小扫描范围。
20. Redis 与缓存一致性
- Redis:核心先读“适用场景”“数据类型”“低延迟的原因”“过期与淘汰”“原子命令与事务”五节;其余机制和案例按需深入。
- Redis 过期:核心先读“面试核心”“写入值与 TTL”“更新与清理”“使用边界”四节;其余机制和案例按需深入。
- Redis 内存淘汰:核心先读“面试核心”“策略与候选范围”“内存用量与观测”“使用边界”四节;其余机制和案例按需深入。
- 缓存一致性:核心先读“适合缓存的数据”“Cache-aside”“更新顺序”“并发竞态”“强一致读取”五节;其余机制和案例按需深入。
- 缓存穿透、击穿、雪崩与热点 Key:核心先读“缓存穿透”“缓存击穿”“缓存雪崩”“热点 key”“防护链路”五节;其余机制和案例按需深入。
停止条件:根据访问方式选择 Redis 数据结构,并解释缓存与数据库的更新顺序。 区分缓存穿透、击穿、雪崩与热点问题,说明处理条件。
4. 复习结果怎么检查
先口述,再编码或画时序;对照参考回答后,回到自己解释不清的章节。本站提供问题、依据和练习,不维护个人掌握状态。
具体入口见代表题与练习。直接从搜索或收藏进入文章时,也可以使用文内“相关内容”链接回查原理,无需从路线起点重新开始。