JDK 26(短期版)与下一代演进

共 20 题
#

1. JDK 25 LTS 与 JDK 26 的定位差异(26 为短期版),升级策略应如何规划?

A JDK 26 与 JDK 25 一样都提供长期维护,可放心部署到生产
B 短期版本特性比 LTS 更稳定,适合直接生产落地
C JDK 25 是短期版,JDK 26 才是 LTS 版本
D 短期版本维护期短,生产环境应优先以 LTS 为基线,短期版用于预研新特性 ✓ 正确答案
#

2. JDK 25/26 中虚拟线程(JEP 444)与 synchronized 的协同,JEP 491 修复钉住后的新 API 与工程边界如何?

A JEP 491 彻底消除所有钉住场景,生产无需再关注载体线程占用
B JEP 491 通过移除偏向锁、限制调用深度等机制大幅减少钉住,但 JNI 临界区等场景仍可能钉住 ✓ 正确答案
C JEP 491 只影响平台线程,与虚拟线程无关
D 钉住只发生在 IO 线程,与 synchronized 无关
#

3. HTTP/3 与 QUIC 的协议特性,0-RTT 握手、连接迁移与流多路复用,在 Java HttpClient(JEP 517)下的工程价值

A HTTP/3 基于 TCP,靠 TCP 的可靠传输保证多路复用无队头阻塞
B HTTP/3 不支持多路复用,流之间必须串行传输
C QUIC 基于 UDP,通过连接 ID 支持连接迁移,0-RTT 可减少握手延迟 ✓ 正确答案
D 0-RTT 握手意味着无需任何加密即可完成首次连接
#

4. JDK 26(短期版)相对 JDK 25 的关键新特性,JEP 500 Final Mean Final 告警、JEP 517 HTTP/3、JEP 525 结构化并发第六次预览、JEP 529 Vector API 第十一次孵化的工程价值如何?

A JEP 529 Vector API 已定稿,可放心用于生产
B JEP 525 结构化并发已从预览转为正式特性
C JEP 517 为 Java HttpClient 加入 HTTP/3(QUIC)支持 ✓ 正确答案
D JEP 500 是对 HTTP 协议的告警增强
#

5. Structured Concurrency(结构化并发,JEP 505 第五预览 → JEP 525 第六预览)的 API 演进与 Spring Boot 4 的集成

A 作用域关闭时统一等待所有子任务结束,失败时可取消其余任务 ✓ 正确答案
B 子任务派生后可在作用域外继续运行,无需等待
C StructuredTaskScope 与 CompletableFuture 完全等价,无差异
D 结构化并发只适用于单线程模型
#

6. 结构化并发(JEP 453 等)进入预览/孵化后,与虚拟线程配合的编程模型变化?

A 必须使用 CompletableFuture 回调才能实现并发
B 每个任务必须手动创建并管理平台线程
C 并发代码可写成同步顺序风格,且任务生命周期由作用域自动约束、可取消 ✓ 正确答案
D 错误处理必须通过全局异常处理器完成
#

7. JEP 516 AOT 对象缓存,与提前类加载/链接配合,哪些对象可被缓存、失效条件与容器内存收益

A 可缓存对象一般是不可变、无外部依赖的类元数据与常量,依赖外部状态的对象会失效 ✓ 正确答案
B 任何对象都可以在构建期缓存,无需考虑依赖
C AOT 缓存只提升运行时 CPU 性能,与启动时间无关
D AOT 缓存会显著增加每次启动的内存占用
#

8. JEP 522 G1 通过减少同步提升吞吐,并发标记与回收阶段的同步开销削减,对大堆应用的影响

A JEP 522 将 G1 改为串行收集,因此吞吐更高
B JEP 522 通过削减并发标记与回收阶段的同步开销来提升吞吐,对大堆应用收益更明显 ✓ 正确答案
C JEP 522 只优化小堆场景,对大堆无效
D JEP 522 移除了 G1 的并发标记阶段
#

9. Project Valhalla 的 Value Classes and Objects(JEP 401 方向,尚未交付预览)与普通类的本质区别是什么,为何 value object 不允许身份(identity)与同步,对内存布局有何影响?

A 值对象无身份、通常不可变、不可同步,因此可扁平化存储以节省内存 ✓ 正确答案
B 值对象有身份,可被同步,与普通类完全一致
C 值对象必须经过堆外 Memory 才能使用
D 值对象与普通类在内存布局上完全相同
#

10. Valhalla 值对象如何通过扁平化(flattened)布局消除对象头与指针间接寻址,相比普通装箱对象能带来多大的内存与缓存收益?

A 扁平化布局只是减少代码量,不改变内存占用
B 扁平化布局会增加对象头开销
C 值对象仍像普通对象一样分配在堆上,只是名称不同
D 值对象扁平化消除了对象头与指针间接寻址,数据连续存放,内存与缓存收益显著 ✓ 正确答案
#

11. Class-File API(JEP 484,JDK 24 定稿),运行时生成字节码替代 ASM/Javassist 的工程价值如何?

A 它只能解析类文件,不能生成字节码
B 它比 ASM 更底层,必须手动处理所有字节码细节
C 它只适用于 JDK 内部,应用无法使用
D 它提供标准化的字节码生成能力,可替代 ASM/Javassist,减少第三方依赖 ✓ 正确答案
#

12. JDK 26 的原始类型模式匹配、Vector API 与 PEM 编码等 JEP 对应用侧的实际影响?

A 原始类型模式匹配允许 switch 直接匹配任意原始类型,减少手写 if/else ✓ 正确答案
B 原始类型模式匹配只能用于对象类型,不能匹配 int 等原始类型
C 原始类型模式匹配会降低类型安全性
D 原始类型模式匹配与 Vector API 完全等价
#

13. JDK 26 移除 Applet API(JEP 504)与新增 HTTP/3 支持(JEP 517)对存量系统的迁移影响?

A 移除 Applet 会破坏所有现代 Java 应用
B HTTP/3 默认启用并会改变所有现有 HTTP 行为
C Applet 早已废弃,对现代应用影响极小,HTTP/3 是需显式启用的增量能力 ✓ 正确答案
D Applet API 在 JDK 26 仍被保留
#

14. Valhalla 的泛型特化(generic specialization)如何让 List<int> 这类值类型泛型获得原生性能,与当前装箱(boxing)方案的差异是什么?

A 泛型特化仍通过装箱为 Integer 对象存储值
B 泛型特化与泛型擦除完全等价
C 泛型特化让 List<int> 将值扁平化内联存储,无需装箱,获得原生性能 ✓ 正确答案
D 泛型特化只能用于引用类型
#

15. JDK 26 原始类型模式匹配(Primitive Types in Patterns)与 Valhalla 的关系,switch 模式匹配如何覆盖任意原始类型?

A switch 只能匹配引用类型,无法匹配原始类型
B 原始类型模式匹配必须先装箱才能使用
C 原始类型模式匹配允许 switch 直接匹配任意原始类型,是 Valhalla 值类型匹配的基础 ✓ 正确答案
D 原始类型模式匹配与 Valhalla 无关
#

16. String Templates(JEP 430/459 预览后被撤回重做)对 SQL/XSS 注入防御的潜在价值

A 模板处理器可对嵌入值强制转义或参数绑定,从结构上防御 SQL/XSS 注入 ✓ 正确答案
B String Templates 只是普通字符串拼接,无注入防御价值
C String Templates 已定稿并默认启用
D String Templates 会主动引入注入漏洞
#

17. JDK Vector API(SIMD 编程)在数据处理、AI 推理场景的工程化探索

A Vector API 已定稿,可放心用于生产
B Vector API 只能用于单线程,无法并行
C Vector API 提供 Java 原生 SIMD 向量运算,但仍在孵化,AI 场景常被更成熟的 BLAS/原生库替代 ✓ 正确答案
D Vector API 依赖网络传输进行向量运算
#

18. 从 Java 21 直跳到 25/26 的主要 API 废弃与行为变更清单如何排查?

A 只依赖编译告警即可,无需其他工具
B 使用 jdeps 扫描内部/废弃 API、对照 Release Notes 检查行为变更,并做分步回归验证 ✓ 正确答案
C 升级后无需测试,直接上线观察
D 行为变更只能通过重启观察,无法静态排查
#

19. Valhalla 落地后对现有代码库的主要迁移影响,哪些 API 会改变返回类型语义,null 语义与 == 语义如何变化?

A 值对象仍按引用相等判断,与普通对象一致
B 值对象允许任意 null 且行为与普通对象完全相同
C Valhalla 不改变任何 API 语义
D 值对象按值相等判断,null 语义可能变为零值,依赖引用相等与 null 的代码需迁移 ✓ 正确答案
#

20. 虚拟线程等待类初始化器时自动从承载线程解绑,如何缓解类加载阶段的钉住与锁竞争

A 虚拟线程等待类初始化时仍会钉住载体线程,无法解绑
B 该优化只影响平台线程,与虚拟线程无关
C 虚拟线程在等待类初始化器时自动从载体线程解绑,缓解类加载阶段的钉住与锁竞争 ✓ 正确答案
D 类加载阶段不需要任何锁