JDK 26 新特性

共 36 题
#

1. JDK 26 与 Spring Boot 4.1.0 的兼容

A JDK 26 是 LTS,必须生产使用
B Spring Boot 4.1.0 的 Java 17 字节码可在 JDK 26 上运行,但需验证 JDK 26 行为变化 ✓ 正确答案
C JDK 26 移除了 Java 17 字节码支持
D JDK 26 与 Spring Boot 完全不兼容
#

2. AOT 缓存归档失效的触发条件、可观测信号与安全回退路径

A 缓存失效会导致应用无法启动
B AOT 缓存与类路径无关
C 缓存失效时 JVM 自动回退到 JIT 编译,保证正确性 ✓ 正确答案
D 缓存失效只能通过重启解决
#

3. JEP 516 AOT 对象缓存与不同垃圾收集器协作的启动收益验证

A AOT 对象缓存只支持 G1
B AOT 对象缓存预创建启动期高频对象,减少分配,收益可对比启动时间验证 ✓ 正确答案
C AOT 对象缓存会增加启动期分配
D AOT 对象缓存与 GC 无关
#

4. JEP 522 为什么用双 Card Table 和原子交换减少 G1 应用线程写屏障与并发 Refinement 线程之间的同步

A JEP 522 用锁来同步写屏障与 Refinement
B JEP 522 移除了 Card Table
C JEP 522 用双 Card Table 和原子交换让写屏障无等待,减少同步 ✓ 正确答案
D JEP 522 只影响 ZGC
#

5. G1 同步削减后如何区分吞吐收益与暂停时间分布变化

A 只需测量吞吐量即可
B 只需观察 GC 日志
C 暂停时间分布与吞吐完全无关
D 应同时测量吞吐(OPS)与暂停分布(P50/P95),并做对照实验 ✓ 正确答案
#

6. JDK 26 容器镜像灰度时 CDS/AOT 归档与运行时构建一致性校验

A 应校验归档指纹(JDK 版本、类路径哈希、架构),灰度时先验证归档加载 ✓ 正确答案
B 归档与运行时类路径无关
C 归档在容器中无法使用
D 归档失效会直接导致崩溃
#

7. JEP 500 对反射、框架注入和反序列化写入 final 字段的迁移影响

A JEP 500 允许随意反射修改 final 字段
B JEP 500 与反射无关
C JEP 500 只影响普通字段
D JEP 500 逐步限制反射/Unsafe/反序列化写入 final 字段,框架应迁移到 VarHandle 或构造器注入 ✓ 正确答案
#

8. JEP 522 通过减少同步提升 G1 吞吐量时应使用的对照指标

A 仅看 GC 计数
B 应用吞吐量(OPS)、GC 时间占比与写屏障/Refinement 相关统计 ✓ 正确答案
C 仅看堆大小
D 仅看线程数
#

9. final 字段完整性限制对 JNI、Unsafe 和深反射工具链的影响

A JNI 和 Unsafe 仍可自由修改 final 字段
B 这些工具链修改 final 字段的行为被限制,需迁移到 VarHandle 或构造器注入 ✓ 正确答案
C final 完整性不影响 Unsafe
D 深反射不受影响
#

10. 原始类型模式中的数值精确性检查、守卫条件和装箱差异

A 原始类型模式必须先将值装箱
B 原始类型模式不支持守卫条件
C 原始类型模式在窄类型匹配时做数值精确性检查,避免精度丢失 ✓ 正确答案
D 原始类型模式只支持 int
#

11. 结构化并发预览 API 再次演进时如何隔离业务代码与孵化接口

A 业务代码应直接依赖 StructuredTaskScope 预览 API
B 预览 API 一旦发布就不会变化
C 通过适配层封装并隔离预览 API,避免业务代码直接依赖 ✓ 正确答案
D 无法隔离预览 API
#

12. JDK 26 与 Spring AI 2.0.0(Java 17+ 基线)

A Spring AI 2.0.0 要求 Java 8 基线
B Spring AI 只支持 JDK 26
C Spring AI 2.0.0 采用 Java 17+ 基线,可在 JDK 26 上运行 ✓ 正确答案
D Spring AI 与虚拟线程无关
#

13. JDK 26 与 Spring Modulith 2.1.0 的兼容

A Spring Modulith 只支持 Java 8
B Spring Modulith 与模块化无关
C Spring Modulith 无法在 JDK 26 使用
D Spring Modulith 2.1.0 支持 Java 17+,可在 JDK 26 运行,需验证反射与模块扫描 ✓ 正确答案
#

14. JEP 486(JDK 24)永久禁用 Security Manager 后,JDK 26 中依赖 SecurityManager 权限模型的存量代码如何迁移

A JDK 26 中调用 SecurityManager API 会报错,需迁移到模块化/语言级约束 ✓ 正确答案
B JDK 26 中 SecurityManager 仍可正常使用
C 只需升级 JDK 版本即可保留 SecurityManager
D Security Manager 只影响 Applet
#

15. Lazy Constants 与类初始化锁、holder idiom 和 Stable Values 的取舍

A Lazy Constants 依赖类初始化锁
B holder idiom 比 Lazy Constants 更简单
C Lazy Constants 是 Stable Values 的替代,两者无关
D Lazy Constants 在 JVM 层面支持惰性单次初始化,避免 holder idiom 的类初始化成本 ✓ 正确答案
#

16. HTTP/3 的 QUIC 握手、证书验证与企业代理不兼容时如何诊断

A HTTP/3 使用 TCP,不受代理影响
B HTTP/3 无证书验证
C 企业代理可能阻断 UDP 导致 QUIC 握手失败,诊断需区分网络层与协议层失败 ✓ 正确答案
D HTTP/3 无法回退到 HTTP/2
#

17. JDK 26 的 GC 演进(JEP 522,G1 降低同步开销)

A JDK 26 将默认 GC 更换为分代 Shenandoah
B JEP 522 改变了所有默认 GC 参数
C JEP 522 通过减少同步开销提升 G1 吞吐,G1 仍是默认 GC,对应用透明 ✓ 正确答案
D JEP 522 引入了新的默认 GC
#

18. JDK 26 的编译器优化(C2 改进)

A C2 只优化 GC
B C2 在 JDK 26 被移除
C C2 改进内联、向量化与逃逸分析,并与 AOT 缓存配合 ✓ 正确答案
D C2 无法向量化
#

19. JEP 500 Prepare to Make Final Mean Final 的语义变化

A JEP 500 立即禁止所有 final 字段修改
B JEP 500 与 final 无关
C JEP 500 允许反射修改 final 字段
D JEP 500 逐步限制绕过 final 的写入,JDK 26 先警告,未来禁止 ✓ 正确答案
#

20. JEP 517 HTTP/3 for the HTTP Client API 的协议升级

A HTTP/3 基于 TCP
B HTTP/3 无法回退到 HTTP/2
C HTTP/3 与 HTTP/2 完全相同
D JEP 517 为 HttpClient 提供基于 QUIC(UDP)的 HTTP/3 支持 ✓ 正确答案
#

21. JEP 517 HTTP/3 客户端在连接迁移、0-RTT 与回退 HTTP/2 时的语义

A 连接迁移会中断现有连接
B HTTP/3 无法回退
C 0-RTT 永不失败
D 0-RTT 有重放风险,回退 HTTP/2 在 UDP 不可达时保证可用性 ✓ 正确答案
#

22. JEP 525 第六次预览结构化并发的 API 变化与预览依赖治理

A JEP 525 已转正
B JEP 525 第六次预览结构化并发,API 仍可能变化,需隔离预览依赖 ✓ 正确答案
C 第六次预览意味着 API 冻结
D 结构化并发无法预览
#

23. JDK 26 的 -Xlog 与 JFR 增强

A JDK 26 新增 HTTP/3、AOT 缓存、final 字段等日志与 JFR 事件 ✓ 正确答案
B JDK 26 移除了 JFR
C -Xlog 无法新增标签
D JFR 事件无法扩展
#

24. JEP 524 PEM Encodings of Cryptographic Objects(2nd Preview,JDK 26)的 API 变化与安全编码场景

A JEP 524 在 JDK 26 已转正
B JEP 524 第二次预览 PEM 编码,改进 API 并支持安全编码场景 ✓ 正确答案
C PEM 编码只支持证书
D JEP 524 与 JEP 470 无关
#

25. JDK 26 的网络 API 改进

A JDK 26 的网络 API 移除了 HTTP/2
B JDK 26 的核心网络改进是 HTTP/3 支持及与虚拟线程的配合 ✓ 正确答案
C JDK 26 无法使用 UDP
D JDK 26 的网络 API 无变化
#

26. JDK 26 预览特性编译、运行、测试与制品发布的 --enable-preview 管理

A 只需编译时指定 --enable-preview
B 预览特性在发布后不再变化
C 编译与运行都要指定 --enable-preview,且运行版本需匹配 ✓ 正确答案
D 无需 --enable-preview 即可使用预览特性
#

27. JEP 485 Stream Gatherers(JDK 24 Final)

A Stream Gatherers 只能用于串行流
B Stream Gatherers 只能操作 List
C Stream Gatherers 是预览特性
D Stream Gatherers 允许自定义 Stream 中间操作,JDK 24 定稿后默认可用 ✓ 正确答案
#

28. JEP 517 为 JDK 26 HttpClient 增加 HTTP/3 时,HTTP/3-first、竞速连接、Alt-Svc 升级和仅 HTTP/3 URI 四种发现策略各有什么失败与回退语义?生产可观测性如何关联 QUIC 连接 ID 与连接迁移,并区分 UDP 被阻断、握手失败、0-RTT 被拒和回退 HTTP/2 造成的延迟

A HTTP/3-first 失败回退 HTTP/2,仅 HTTP/3 URI 失败直接报错 ✓ 正确答案
B 仅 HTTP/3 URI 在失败时会回退 HTTP/2
C Alt-Svc 升级不依赖 HTTP/2 通告
D 竞速连接只尝试 HTTP/3
#

29. JEP 526 Lazy Constants(2nd Preview,由 JEP 502 重命名)

A JEP 526 是 JEP 502 的转正版
B JEP 526 将 Stable Values 重命名为 Lazy Constants,第二次预览 ✓ 正确答案
C JEP 526 与 JEP 502 无关
D Lazy Constants 每次访问都初始化
#

30. JEP 526 第二次预览 Lazy Constants 的初始化、失败重试与可见性保证

A 初始化失败后无法重试
B 结果只在单线程可见
C 初始化是惰性的,失败后后续访问会重试,结果对所有线程可见 ✓ 正确答案
D 每次访问都重新初始化
#

31. JEP 529 Vector API(11th Incubator)

A JEP 529 在 JDK 26 已转正
B Vector API 无掩码操作
C Vector API 只能用于浮点
D JEP 529 第 11 次孵化 Vector API,支持 SIMD 运算并自动回退标量 ✓ 正确答案
#

32. JEP 504 Remove the Applet API 的清理

A JEP 504 在 JDK 26 移除 Applet API,对现代应用影响极小 ✓ 正确答案
B JDK 26 中 Applet 仍可正常使用
C Applet 仅在 JDK 9 弃用,从未移除
D Applet 在 JDK 26 转正
#

33. JEP 529 第十一次孵化 Vector API 的平台可移植性和标量回退

A Vector API 只在 x86 上可用
B 标量回退会导致编译错误
C 平台不支持向量指令时自动回退标量,保证正确性 ✓ 正确答案
D Vector API 无法跨平台
#

34. JEP 530 第四次预览原始类型模式在 instanceof 与 switch 中的穷尽性

A 原始类型模式不要求穷尽
B JEP 530 已转正
C 原始类型模式只用于 instanceof
D JEP 530 第四次预览原始类型模式,switch 需穷尽覆盖模式 ✓ 正确答案
#

35. 从 JDK 25 升级到 26 时如何建立已删除、弃用和行为变化清单

A 只依赖编译错误
B 只检查 GC 参数
C 无需清单直接升级
D 查阅 Release Notes/JEP 列表,并用 jdeprscan/jdeps 扫描弃用与内部 API 使用 ✓ 正确答案
#

36. 从 JEP 472 对 JNI 受限方法的预警、JEP 498 对 sun.misc.Unsafe 内存访问的告警,到 JEP 500 在 JDK 26 警告深反射修改 final 字段,这条 integrity-by-default 路线分别影响 JNI、Unsafe、反射和序列化框架的哪些调用?如何借助 native-access、Unsafe/final-field 诊断选项和 JFR 事件盘点依赖,并迁移到 FFM、VarHandle 或构造器注入

A JEP 472/498/500 分别收紧 JNI、Unsafe、final 字段反射,可迁移到 FFM、VarHandle 或构造器注入 ✓ 正确答案
B 该路线鼓励使用 Unsafe 访问内存
C JNI 无法迁移到 FFM
D 该路线不影响反射