“介绍一下你做的项目。”
“这是一个基于 Spring Boot 开发的微服务项目,使用了 MySQL、Redis、Kafka、Elasticsearch……”
很多项目介绍到这里就说不下去了。面试官再问一句“为什么要用 Kafka”,回答很容易卡住。Java、MySQL、Redis 的常见面试题可以提前背熟,项目追问却会一直落到真实的业务约束、代码实现和验证结果,背一段固定稿子只能应付开场。
面试官想从项目里了解什么?
面试官会从项目里确认几件事:你是否理解项目服务的业务,一条请求如何流转;你具体负责哪些代码、数据和上下游;遇到问题时怎样定位原因、比较方案并验证结果;简历里的技术和指标能不能经得起追问。
Java 基础是后续学习集合、并发、JVM、Spring 和各类中间件的前置能力。这部分内容不只是背语法,更重要的是理解 Java 的对象模型、参数传递、泛型擦除、反射调用、动态代理、序列化边界和框架扩展机制。
适合谁看
- 刚开始系统学习 Java,想把基础语法和核心机制串起来的读者。
- 准备 Java 基础面试题,希望快速查漏补缺的同学。
- 已经写过 Java 项目,但对反射、代理、泛型、SPI、序列化等机制理解不深的开发者。
- 想继续学习集合、并发、JVM、Spring 源码前,需要补齐前置知识的工程师。
Java 集合是业务开发中使用频率最高的基础库之一,也是 Java 面试最常考的模块。学习集合时,既要知道每个容器适合什么场景,也要理解扩容、哈希冲突、迭代器、线程安全和并发容器背后的设计取舍。
适合谁看
- 想系统掌握 Java 集合框架的后端开发者。
- 准备 List、Map、Queue、并发集合和源码分析相关面试题的同学。
- 平时经常使用集合,但对扩容、哈希冲突、fail-fast、线程安全等细节不熟的读者。
- 想阅读 JDK 源码,从常用集合类开始建立源码分析能力的工程师。
Java 并发编程是后端开发和面试中最重要、也最容易混淆的模块之一。学习并发不能只背 API,要把线程生命周期、锁机制、内存模型、原子操作、线程池和并发工具类放在同一条主线上理解。
适合谁看
- 想系统学习 Java 并发编程的后端开发者。
- 准备线程、锁、JMM、CAS、AQS、线程池等面试题的同学。
- 已经在项目中使用多线程,但对死锁、线程池参数、ThreadLocal 泄漏等问题不够熟的读者。
- 想理解并发容器、CompletableFuture、虚拟线程等工程实践能力的工程师。
Java IO 是理解文件读写、网络编程、Netty、RPC 框架和高性能服务端的重要基础。学习 IO 时,建议同时理解 Java API、操作系统 IO 模型和常见设计模式,这样才能把 BIO、NIO、AIO、Selector、Channel、Buffer、Reactor 串起来。
适合谁看
- 想系统学习 Java IO/NIO 的后端开发者。
- 准备 BIO、NIO、AIO、IO 多路复用、Reactor 相关面试题的同学。
- 想继续学习 Netty、RPC、消息队列、数据库驱动等网络通信框架的读者。
- 对阻塞/非阻塞、同步/异步、Selector、Channel、Buffer 等概念容易混淆的工程师。
JVM 是 Java 后端绕不开的核心基础。学习 JVM 的目标不是背概念,而是能解释对象如何创建和回收、类如何加载、GC 如何影响应用、参数如何配置,以及线上 OOM、频繁 GC、CPU 飙高等问题应该如何排查。
适合谁看
- 想系统学习 JVM 的 Java 后端开发者。
- 准备 JVM 内存、类加载、GC、参数调优和线上排查相关面试题的同学。
- 已经参与过线上服务维护,但对 GC 日志、堆转储、线程栈和 JDK 工具不熟的读者。
- 想继续深入 Spring、Netty、中间件或性能优化的工程师。
告警刚响,排查很容易被监控页面上最显眼的那条曲线带着走。看到 CPU 高就抓线程栈,看到 Full GC 就查堆,发布刚结束就准备回滚。可这些现象经常互相传导:慢 SQL 会占住数据库连接,连接池等待又会拖住业务线程,最后可能同时看到延迟、错误率和 CPU 上升。单看其中一项,很难定根因。
故障还在扩大时,先按预案控制影响。实例还有余量,确认取证不会继续压垮服务后,再保存日志、Trace、线程栈和内存信息。重启往往能暂时恢复,但也会清掉现场;为了抓取 Heap Dump 一直让异常实例承载流量,同样可能把问题拖大。现场情况决定先摘流量、回滚,还是先取证。
下面只讨论 Java 应用侧的常见问题。如果证据已经指向容器调度、内核、网络设备或云平台,需要转到相应平台的监控和操作手册继续排查,这里不展开。
Java 新特性不适合按版本机械背诵,更适合抓住“语言表达能力、标准库增强、并发模型、JVM 改进、长期支持版本”这几条主线。日常开发优先掌握 Java 8、11、17、21 等 LTS 版本中的稳定特性,再按需了解后续版本的预览和孵化特性。
时间比较紧的话,可以先看面试突击版的 Java 新特性常见面试题总结,再回到本专题查看对应版本的完整说明。
