JDK JDK 学习手册8 → 27 · JDK 专用学习站
INTERVIEW · JDK 21

面试模块:42 道题,接住下一问

先自己回答,再展开对照。答案里带追问与版本陷阱,比结论更重要。
使用方式按主题筛选,先答后看。能回答「为什么」和「版本边界」才算过关;只背结论会在追问处露馅。
Q01

record 和普通类、Lombok 生成的类有什么本质区别?

语言与模式匹配高频JEP 395
Q02

sealed 接口的 permits 有什么约束?它和枚举、final 的关系是什么?

语言与模式匹配高频JEP 409JEP 441
Q03

if (o instanceof String s && s.length() > 0) 中 s 为什么能用?换成 || 为什么不行?

语言与模式匹配进阶JEP 394
Q04

模式 switch 的穷尽性和分支顺序是怎么判定的?

语言与模式匹配高频JEP 441
Q05

record pattern 如何解构嵌套结构?匹配失败时会发生什么?

语言与模式匹配进阶JEP 440
Q06

文本块(text block)的缩进和转义规则是什么?

语言与模式匹配进阶JEP 378
Q07

var 是动态类型吗?哪些地方不能用?

语言与模式匹配进阶JEP 286
Q08

ArrayList 和 LinkedList 怎么选?为什么很少用 LinkedList 做队列?

集合与数据结构高频
Q09

HashMap 的底层结构、哈希扰动和树化条件是什么?

集合与数据结构高频
Q10

HashMap 为什么线程不安全?ConcurrentHashMap 怎么解决?

集合与数据结构高频
Q11

ConcurrentHashMap 的 computeIfAbsent 是原子的吗?有什么坑?

集合与数据结构进阶
Q12

JDK 21 的 SequencedCollection 解决了什么问题?reversed 是视图吗?

集合与数据结构高频JEP 431
Q13

如何用 LinkedHashMap 实现一个简单的 LRU 缓存?

集合与数据结构进阶
Q14

平台线程和虚拟线程的本质区别是什么?

并发与虚拟线程高频JEP 444
Q15

JDK 21 中哪些操作会导致虚拟线程 pinning?如何排查?

并发与虚拟线程高频JEP 444JEP 491
Q16

为什么不应该池化虚拟线程?并发上限怎么控制?

并发与虚拟线程高频JEP 444
Q17

线程池的核心参数怎么设置?为什么推荐有界队列?

并发与虚拟线程高频
Q18

thenApply 和 thenCompose 有什么区别?CompletableFuture 的异常怎么处理?

并发与虚拟线程高频
Q19

synchronized 和 ReentrantLock 怎么选?AQS 是什么?

并发与虚拟线程进阶
Q20

ThreadLocal 为什么会内存泄漏?虚拟线程下要注意什么?

并发与虚拟线程进阶
Q21

结构化并发解决了 invokeAll 的什么问题?

并发与虚拟线程高频JEP 453
Q22

G1 和 ZGC 怎么选?

GC 与运行时高频JEP 439
Q23

G1 的 region、Humongous 对象和 SATB 分别是什么?

GC 与运行时进阶
Q24

分代 ZGC 相比非分代 ZGC 改进了什么?

GC 与运行时高频JEP 439JEP 474
Q25

JDK 21 编译的 class 文件版本号是多少?如何排查 UnsupportedClassVersionError?

GC 与运行时进阶
Q26

常见 OOM 有哪些类型?分别怎么排查?

GC 与运行时进阶
Q27

从 JDK 8 到 21,默认 GC 和 GC 家族有哪些变化?

GC 与运行时进阶
Q28

String 为什么设计成不可变?字符串常量池和 intern 是什么关系?

核心 API高频
Q29

Java 中 + 拼接字符串在底层是怎么实现的?

核心 API进阶
Q30

Optional 的 orElse 和 orElseGet 有什么区别?Optional 应该怎么用?

核心 API进阶
Q31

Stream 的惰性求值体现在哪里?中间操作和终端操作如何区分?

核心 API高频
Q32

Collectors.toMap 遇到重复 key 会怎样?怎么处理 null 值?

核心 API进阶
Q33

java.time 如何处理夏令时?yyyy 和 uuuu 有什么区别?

核心 API高频
Q34

JDK 11 的 HttpClient 怎么用?和 HttpURLConnection 比有什么优势?

核心 API进阶
Q35

preview、incubator、experimental 三种状态有什么区别?

预览特性进阶JEP 12
Q36

为什么预览特性编译和运行都要加 --enable-preview?class 文件有什么标记?

预览特性高频JEP 12
Q37

JDK 21 中哪些重要特性是正式的,哪些还是预览?

预览特性进阶JEP 430JEP 431JEP 439JEP 440JEP 441JEP 442JEP 443JEP 444JEP 445JEP 446JEP 448JEP 453
Q38

从 JDK 8 升级到 21,主要风险点有哪些?

版本迁移高频
Q39

什么是强封装?--add-opens 应该怎么用?

版本迁移高频JEP 403
Q40

JDK 21 动态加载 Java Agent 的警告是什么意思?

版本迁移进阶JEP 451
Q41

JDK 8 之后有哪些常用的东西被移除或弃用?

版本迁移进阶
Q42

--release 和 -source/-target 有什么区别?跨版本编译要注意什么?

版本迁移高频

怎么刷这套题HOWTO

  1. 先按主题筛:一次只攻一个主题,避免题目切换导致理解断裂。
  2. 先自答再展开:用 30 秒说出结论 + 一条原因 + 一个例子。
  3. 重点看追问:追问模拟面试官的第二层问题,能接住才算真会。
  4. 最后看版本陷阱:同一 API 在不同 JDK 的状态差异,是最容易答错的点。
  5. 标记掌握:不确定的不要标记;隔天再复习一遍。

难度说明LEVELS

  • 高频:面试中出现频率高,或属于 JDK 21 的核心卖点。
  • 进阶:需要理解机制、版本边界或实现取舍,答好能拉开差距。

JDK 学习手册 · JDK / Java 专用学习站 · 纯静态 · 双击 index.html 即可使用

本站专注 JDK 版本演进与 Java 教学,非 Oracle / OpenJDK 官方站点。版本数据来自 OpenJDK 官方 Features 表;课程示例已在对应本机 JDK 实测。构建日期 2026-11-12。