# 1. JDK 21 LTS 相比 17 LTS 的关键特性(虚拟线程/结构化并发/模式匹配/记录模式)如何系统性盘点? A 虚拟线程、结构化并发、模式匹配、记录模式、分代 ZGC 等是 21 的关键特性 ✓ 正确答案 B JDK 21 只新增了虚拟线程,无其他特性 C 模式匹配在 21 中仍是预览 D 分代 ZGC 在 17 已存在
# 2. Sequenced Collections(JEP 431)解决了集合的哪些一致性痛点,与 List/Deque/SortedSet 的兼容关系? A 它只为 List 新增了方法,不影响其他集合 B 它只解决 Set 的无序问题 C 它是破坏性变更,会移除现有集合方法 D 新增 SequencedCollection/Set/Map 接口,统一首尾访问与逆序,List/Deque/SortedSet 自动继承 ✓ 正确答案
# 3. 记录模式(Record Patterns)与嵌套解构在业务代码中的实际收益,与模式匹配 switch 如何组合? A 记录模式支持解构与嵌套解构,可与模式匹配 switch 组合实现穷尽性分支处理 ✓ 正确答案 B 记录模式只能解构一层,不能嵌套 C 记录模式必须手动强转 D 记录模式与 switch 无法组合
# 4. 分代 ZGC(JEP 439)相比非分代 ZGC 的停顿改进,什么场景下收益最大? A 分代 ZGC 通过年轻代/老年代分离利用弱分代假设,短命对象多、分配率高的场景收益最大 ✓ 正确答案 B 分代 ZGC 与非分代 ZGC 完全一致 C 分代 ZGC 会显著增加停顿 D 分代 ZGC 只适用于小堆
# 5. 虚拟线程在生产落地的收益评估,IO 密集服务的吞吐提升与线程池迁移策略 A 虚拟线程对 CPU 密集场景收益最大 B 迁移只需替换线程池,无需其他检查 C 虚拟线程在 IO 密集高并发场景吞吐收益显著,迁移需排查钉住与控制 ThreadLocal ✓ 正确答案 D 虚拟线程会占用与平台线程相同的内存
# 6. 从 JDK 8/11 直接升级到 21 LTS 的主要兼容性风险与治理清单? A 升级到 21 无任何兼容性风险 B 主要风险是内部 API 移除、模块化封装、行为变更与依赖兼容,需用 jdeps 扫描并分步升级 ✓ 正确答案 C 只需替换 JDK 版本号即可 D 模块化对 JDK 8 应用无影响
# 7. switch 模式匹配与 record pattern 的嵌套解构在业务代码中的实际收益? A 它们增加了样板代码量 B 它们提供类型安全、穷尽性检查与嵌套解构,减少 if/else 与强转,提升可读性 ✓ 正确答案 C 模式匹配无法处理多态对象 D 穷尽性检查无法编译期实现
# 8. Java 21 的 Key Encapsulation Mechanism API(JEP 452)在应用侧的价值与使用场景? A 它只是一个新的加密哈希算法 B KEM 只能用于对称加密 C 它与现有 TLS 密钥协商完全无关 D 它抽象密钥封装机制,为后量子密码(如 ML-KEM)提供标准 API,用于密钥协商 ✓ 正确答案
# 9. JDK 21 升级的兼容性治理,API 移除、模块化与字节码版本的影响如何? A 升级只影响字节码版本,无其他影响 B 废弃 API 无需处理 C 模块化对反射无任何限制 D 需治理 API 移除、模块化封装与字节码版本,用 jdeps 扫描并升级依赖 ✓ 正确答案
# 10. JDK 21 升级后的性能回归验证,GC 行为、JIT 与启动时间对比 A 需用 JFR 与压测对比 GC、JIT 与启动时间,以数据定位差异并调整参数 ✓ 正确答案 B 升级后性能必然提升,无需验证 C GC 行为与 JDK 版本无关 D 启动时间无法优化
# 11. 虚拟线程在 JDK 21 的使用边界,synchronized pinning 与线程池迁移如何? A 虚拟线程在 synchronized 内做阻塞 IO 无任何问题 B synchronized 内阻塞 IO 会钉住载体线程,迁移需排查钉住并谨慎使用 ThreadLocal ✓ 正确答案 C 虚拟线程适合所有负载类型 D ThreadLocal 在虚拟线程下内存开销可忽略
# 12. Java 21 中未命名模式与变量(JEP 443 预览)与字符串模板(JEP 430,预览)的定位与使用限制? A 两者都是正式特性,可放心生产使用 B 两者都是预览特性,需 --enable-preview,且 API 可能变更,不适合生产依赖 ✓ 正确答案 C 未命名模式是正式特性,字符串模板是预览 D 预览特性保证向后兼容
# 13. Project Loom 后续(Loom 2.0)与虚拟线程的已知限制(同步阻塞、线程局部变量)? A 虚拟线程没有已知限制 B ThreadLocal 在虚拟线程下开销可忽略 C 同步阻塞钉住与 ThreadLocal 内存放大是已知限制,Loom 后续持续缓解,工程上需规避 ✓ 正确答案 D 虚拟线程适合 CPU 密集任务
# 14. 从 Java 17 升级到 21 时,`Unsafe`、内部 API 与反射封装的兼容性风险点如何系统排查? A 内部 API 在 21 下可无条件访问 B 反射 setAccessible 在 21 下永远成功 C 需用 jdeps 扫描 Unsafe/内部 API、处理反射封装异常并迁移到公开 API ✓ 正确答案 D Unsafe 是正式公开 API,无风险
# 15. 记录模式与密封类的组合使用,模式匹配 switch 的表达式如何? A 记录模式不能用于 switch B 密封类与 switch 无关 C 密封类可让 switch 获得编译期穷尽性检查,记录模式提供解构 ✓ 正确答案 D 组合使用仍必须手写 default 分支
# 16. JDK 21 的字符串模板/虚拟线程的工程落地与兼容性风险? A 两者都可直接生产落地 B 虚拟线程已正式可落地但需注意钉住与 ThreadLocal,字符串模板仍预览应等待 ✓ 正确答案 C 虚拟线程仍是预览 D 字符串模板已正式,可放心使用
# 17. JDK 21 的 Foreign Function & Memory API 预览,与 JNI 的对比如何? A FFM 不如 JNI 安全 B JNI 与 FFM 在安全上完全等价 C FFM 必须写 C 代码 D FFM 类型安全、纯 Java 编写、无需 C 样板,逐步替代 JNI 与 Unsafe ✓ 正确答案
# 18. JDK 21 的 API 增强(StringBuilder.repeat、Math 等)在生产代码中的应用 A JDK 21 没有新增任何 API B Math.clamp 与 Math.max/min 无区别 C 这些增强只影响性能,不影响代码 D StringBuilder.repeat、Math.clamp、divCeil 等增强可减少样板代码、提升正确性 ✓ 正确答案