# 1. JDK 25 与 Spring Boot 4.1.0 的兼容性(Java 17+ 基线) A Spring Boot 4.1.0 只支持 JDK 25,不再支持 JDK 17 B Spring Boot 4.x 的 Java 基线为 17,编译为 Java 17 字节码,可在 JDK 25 上运行 ✓ 正确答案 C JDK 25 不是 LTS,Spring Boot 4.1.0 不保证支持 D Spring Boot 4.1.0 必须使用 Java 25 字节码才能运行
# 2. JEP 451 在 JDK 21 为动态加载 Agent 增加警告后,Byte Buddy、Mockito inline mock 和 APM Agent 的自附加为什么会触发告警 A 该警告表示动态加载 Agent 已彻底被禁止 B 使用 -javaagent 在启动时加载 Agent 也会触发该警告 C 该警告是提示,可通过 -XX:+EnableDynamicAgentLoading 显式启用动态加载 ✓ 正确答案 D 警告仅在 JDK 8 及以下版本出现
# 3. JDK 25 与 GraalVM 25+ 的对齐 A GraalVM 版本号与 Oracle JDK 完全无关 B GraalVM 与 JDK 从不同步发布 C GraalVM 25 只支持老版本 JDK D GraalVM 25 版本号与 JDK 25 对应,基于 JDK 25 发行 ✓ 正确答案
# 4. JDK 25 与虚拟线程生态(Loom/JFR)协作 A 虚拟线程在 JDK 25 仍是实验特性 B JFR 提供 VirtualThreadPinned 等事件用于诊断虚拟线程钉住 ✓ 正确答案 C 虚拟线程无法与 JFR 配合 D 结构化并发在 JDK 25 仍不可用
# 5. JDK 25 的 Thread.sleep 精度改进 A 让所有 sleep 都使用 OS 定时器 B 完全移除 Thread.sleep 的精度保证 C 对极短睡眠使用忙等待以提高精度 ✓ 正确答案 D 只改善平台线程的睡眠精度
# 6. JEP 439 在 JDK 21 引入分代 ZGC、JEP 474 在 JDK 23 将分代模式设为默认、JEP 490 在 JDK 24 移除非分代模式,这三步分别改变了哪些启动参数、堆行为和回退能力 A JEP 490 在 JDK 24 移除了非分代 ZGC,分代成为唯一模式 ✓ 正确答案 B JEP 439 在 JDK 21 就默认启用分代 ZGC C JEP 474 在 JDK 23 移除了分代 ZGC D 分代 ZGC 的开关参数一直是 -XX:+UseZGenerational
# 7. JEP 514 的 -XX:AOTCacheOutput 一步式训练与传统 record/create 两阶段流程有何资源和可重复性差异,为什么一步式流程需要为子进程预留额外堆?JEP 515 把方法执行画像写入 AOT 缓存后,如何选择代表性训练流量、识别画像偏斜或缓存失效,并证明收益来自更早优化而非普通 CDS A 一步式训练不需要额外内存 B 一步式流程需为子进程预留额外堆,因为 AOT 编译在子进程中进行 ✓ 正确答案 C AOT 缓存使 JIT 在运行时完全失效 D CDS 与 AOT 缓存无法同时启用
# 8. JDK 24 通过 JEP 496 提供 ML-KEM、通过 JEP 497 提供 ML-DSA 后,两者在密钥用途、密文或签名尺寸、性能和失败语义上有何不同 A ML-KEM 用于数字签名,ML-DSA 用于密钥封装 B 两者都是对称加密算法 C 两者功能完全相同 D ML-KEM 用于密钥封装,ML-DSA 用于数字签名 ✓ 正确答案
# 9. JEP 452 的 KEM API 只负责封装或解封装共享秘密时,如何再用 JEP 510 的 KDF API 派生具有用途隔离的 AEAD 密钥 A KDF 通过上下文标签实现用途隔离,从共享秘密派生多个 AEAD 密钥 ✓ 正确答案 B KEM 直接输出加密密钥,不需要 KDF C KDF 用于封装共享秘密 D KEM 与 KDF 完全不相关
# 10. JEP 467 在 JDK 23 将 Markdown Documentation Comments 定稿后,/// 注释与传统 /** ... */ 在段落、代码块、链接和内联 Javadoc 标签解析上有何差异?迁移大型 API 文档时如何用 javadoc -Xdoclint 防止链接或示例静默失效 A Markdown 注释完全取代了 Javadoc 标签 B Markdown 注释使用 /** ... */ 前缀 C javadoc -Xdoclint 可检查文档注释中的链接与标签错误 ✓ 正确答案 D Markdown 注释不支持代码块
# 11. JEP 486 Permanently Disable the Security Manager(JDK 24 Final) A JDK 24 中 SecurityManager 仍可正常使用 B JDK 24 中调用 SecurityManager 相关 API 会抛 UnsupportedOperationException ✓ 正确答案 C JDK 24 只是弃用 SecurityManager,并未禁用 D JEP 486 在 JDK 17 就已生效
# 12. JDK 25 的 -Xlog 日志增强 A -Xlog 是 JDK 25 才引入的 B -Xlog 无法记录 GC 日志 C -Xlog 只能输出到控制台 D -Xlog 支持按标签过滤输出,JDK 25 新增 AOT 等日志标签 ✓ 正确答案
# 13. JDK 25 的 HotSpot 性能改进(JEP 521 等) A JEP 521 将分代 Shenandoah 设为默认模式,改善大堆场景的吞吐与暂停 ✓ 正确答案 B JEP 521 只改进 ZGC C JEP 521 移除了 JIT 编译器 D JEP 521 与 GC 无关
# 14. JDK 25 的 Javadoc 与 API 文档演进 A JDK 25 移除了 Markdown 文档注释 B JDK 25 改进 Javadoc 的搜索、导航与 Markdown 支持 ✓ 正确答案 C Javadoc 无法渲染 Markdown 代码块 D JDK 25 的 Javadoc 不再支持 {@link} 标签
# 15. JDK 25 的工具链(jpackage/jlink)改进 A jlink 无法配合 CDS 缓存 B jlink 与 jpackage 功能相同 C jpackage 只能打包桌面应用 D jlink 支持在链接时生成 CDS/AOT 缓存以加速启动 ✓ 正确答案
# 16. JEP 443 的 Unnamed Patterns and Variables 在 JDK 21 仍是预览、到 JEP 456 才于 JDK 22 转正,这一生命周期对 _ 的作用域和模式匹配代码有何影响?JEP 430 String Templates 经两轮预览后被撤回重做,插值处理器的组合性与安全边界为何使它长期未能转正,团队应如何隔离预览语法依赖 A _ 变量会占用作用域并绑定值 B String Templates 在 JDK 22 已经转正 C 预览特性转正后仍需 --enable-preview D _ 未命名变量在 JDK 22 转正,不可再作为普通标识符 ✓ 正确答案
# 17. JEP 470 PEM Encodings of Cryptographic Objects(Preview) A JEP 470 提供统一的 PEM 编码/解码 API,在 JDK 25 为预览特性 ✓ 正确答案 B JEP 470 在 JDK 25 已转正 C PEM 编码只支持私钥 D JEP 470 与密码学无关
# 18. JEP 502 Stable Values(Preview) A Stable Values 允许延迟初始化且只初始化一次,在 JDK 25 为预览 ✓ 正确答案 B Stable Values 是 final 字段,必须在构造时赋值 C Stable Values 每次访问都重新计算 D Stable Values 会触发类初始化锁
# 19. JEP 506 Scoped Values(Final)的应用模式 A Scoped Values 可变且可被任意线程继承 B Scoped Values 通过 ScopedValue.where(...).run(...) 绑定,作用域内不可变共享 ✓ 正确答案 C Scoped Values 是 ThreadLocal 的别名 D Scoped Values 在 JDK 25 仍是预览
# 20. JEP 508 Vector API(10th Incubator) A Vector API 在 JDK 25 已转正并默认可用 B Vector API 只能用于整数运算 C Vector API 表达 SIMD 向量运算,由 C2 生成向量指令 ✓ 正确答案 D Vector API 与平台无关,无需回退
# 21. JEP 509 JFR CPU-Time Profiling(Experimental) A 它是基于 wall-clock 的采样剖析 B 它在 JDK 25 已转正 C 它通过 JFR 记录线程 CPU 时间,更准确反映计算热点 ✓ 正确答案 D 它只能用于单线程