# 1. JDK 25 中 -XX:+UseCompactObjectHeaders 对内存占用与 GC 频率的影响在 Spring Boot 应用中 A 提高 CPU 主频 B 关闭 GC C 增加线程数 D 压缩对象头,减少每个对象的内存开销 ✓ 正确答案
# 2. JDK 25 中 Parallel GC 与 G1 在 Spring Boot 4.0 + 容器化部署下的吞吐量与延迟对比 A G1 GC ✓ 正确答案 B Parallel GC C Serial GC D 无 GC
# 3. JDK 25 中 ZGC 的 SoftReference 回收策略对 Spring Boot 缓存命中率的影响 A 更保守,几乎不回收 B 更激进,内存压力下优先回收软引用 ✓ 正确答案 C 完全相同 D 从不回收软引用
# 4. JDK 25 中是否仍支持 -XX:+UseG1GC 之外的 CMS GC 选项,Spring Boot 4.0 升级时的迁移建议 A 仍受支持 B 默认开启 C 已被移除,无法再使用 ✓ 正确答案 D 仅支持 32 位
# 5. JVM DirectMemory 与 Netty PooledByteBufAllocator 在 Spring WebFlux 中的内存边界控制 A UnpooledByteBufAllocator B NoopAllocator C PooledByteBufAllocator ✓ 正确答案 D HeapAllocator
# 6. JVM Safepoint 在 Spring Boot 4.0 中通过 -XX:+UseCountedLoopSafepoints 关闭的边界与风险 A 完全无法 GC B 线程数增加 C 长计数循环阻塞 safepoint,导致 GC 等操作长时间等待 ✓ 正确答案 D 内存泄漏
# 8. JVM 启动参数 -XX:+UseNUMA 在 Spring Boot 4.0 + 跨 NUMA 节点容器部署下的真实收益 A 任何场景都显著提升性能 B 与 GC 无关 C 必然降低性能 D 依赖内存访问模式与部署拓扑,通常需实测,多数场景收益有限 ✓ 正确答案
# 9. JVM 在 Spring Boot 4.0 启动时打印的 [info] 日志(-Xlog:safepoint) A 业务日志 B SQL 查询 C JVM 安全点事件(到达/操作耗时) ✓ 正确答案 D HTTP 请求
# 10. JVM 容器感知(-XX:+UseContainerSupport) A 默认关闭 B 让 JVM 感知容器 cgroup 的 CPU 与内存限制 ✓ 正确答案 C 只影响网络 D 与内存无关
# 12. JVM 的 -Xms/-Xmx/-XX:NewRatio/-XX:SurvivorRatio A Eden:Survivor = 8:1 ✓ 正确答案 B 老年代:新生代 = 8:1 C 堆:非堆 = 8:1 D GC 线程 8 个
# 14. JVM 的 CompilerThreshold 与 CompileThresholdScaling A 统一缩放 JIT 编译阈值,调节编译激进程度 ✓ 正确答案 B 只影响 GC C 与编译无关 D 只能设 1.0
# 15. JVM 的 StringTable(String.intern),异常信息脱敏与保留诊断价值之间如何平衡 A intern 过多会占用堆内存并增加 GC 扫描成本 ✓ 正确答案 B intern 字符串完全无代价 C intern 只在 GC 后生效 D intern 与异常日志无关
# 21. MaxDirectMemorySize 如何约束直接缓冲区,堆使用正常时发生直接内存 OOM 应怎样诊断 A jstack B NMT(Native Memory Tracking) ✓ 正确答案 C jps D javap
# 22. MaxRAMPercentage 只决定堆上限比例时,为什么还必须为元空间、直接内存和线程栈预留空间 A 堆外(元空间/直接内存/线程栈)无足够空间,可能 OOMKill ✓ 正确答案 B 堆太小 C GC 太快 D 无风险
# 23. StringTable 大小、intern 命中与永久业务缓存有何关系,何时会增加 GC 扫描成本 A intern 字符串很少时 B 大量动态字符串被 intern,StringTable 膨胀时 ✓ 正确答案 C StringTable 为空时 D 禁用 GC 时
# 24. TLAB 如何减少线程间分配竞争,浪费比例过高时对象大小与线程数量说明了什么 A 减少 GC 次数 B 压缩对象头 C 增加堆大小 D 为每个线程预分配分配缓冲,减少线程间分配竞争 ✓ 正确答案
# 27. 在 Spring Boot 4.0 中使用 GraalVM Native Image 构建后 JVM 调优是否仍需关注堆与元空间 A 完全适用 B 必须加大 C 只影响堆 D 基本不适用,因为 Native Image 是 AOT 编译 ✓ 正确答案
# 29. 容器内 JVM 如何识别 cgroup 的 CPU 和内存限制,requests 与 limits 不同会怎样影响默认参数 A requests B limits(上限) ✓ 正确答案 C 宿主机内存 D 无
# 30. 平台线程栈与虚拟线程栈的存储方式有何不同,大量深调用或 ThreadLocal 会造成什么压力 A 在堆中动态分配,栈小可回收,支持大量线程 ✓ 正确答案 B 创建时固定分配 1MB C 与平台线程栈完全相同 D 无法深调用
# 31. 建立 JVM 调优基线时,为何需要固定流量、数据集、JDK、容器限额和预热状态再比较 A 预热会降低性能 B 预热只影响 GC C 预热无关紧要 D JIT 未预热时性能不稳定,会导致对比结果误导 ✓ 正确答案
# 33. CodeCache 满后为什么可能停止部分编译并降低吞吐,哪些 JFR 事件和日志可验证 A jdk.GCHeapSummary B jdk.CodeCacheStatistics ✓ 正确答案 C jdk.ThreadStart D jdk.FileWrite
# 34. G1 的 Humongous 对象为何跨多个 Region 分配,大数组峰值会怎样影响回收和碎片 A 超过 1MB B 超过 Region 的 90% C 超过堆的 1% D 超过 Region 的 50% ✓ 正确答案
# 35. HeapDumpOnOutOfMemoryError、ExitOnOutOfMemoryError 与 CrashOnOutOfMemoryError 应如何选型 A HeapDumpOnOutOfMemoryError + ExitOnOutOfMemoryError ✓ 正确答案 B ExitOnOutOfMemoryError C CrashOnOutOfMemoryError D 都不设置
# 36. JDK 25 中 -XX:+UseLargePages 在 K8s + Spring Boot 部署下启用巨页的工程注意事项 A 仅设置 JVM 参数 B 无需任何配置 C 节点配置大页 + 容器申请 HugePages 资源 ✓ 正确答案 D 增大网络带宽
# 38. JDK 25 引入的 ZGC 分代模式(Generational ZGC) A 停顿更高 B 分代回收提升效率,降低开销与内存占用,同时保持低停顿 ✓ 正确答案 C 无法回收老年代 D 只能用于小堆
# 39. JDK 25 的 -XX:MaxRAMPercentage 与 -XX:MinRAMPercentage 在 Spring Boot 4.0 容器化部署的推荐值 A 25% B 70-75% ✓ 正确答案 C 100% D 10%
# 41. JaCoCo 的 on-the-fly 与 offline 插桩模式在 Spring Boot 应用中的选择 A offline B 两者都默认 C on-the-fly ✓ 正确答案 D 无插桩
# 42. Lombok/生成代码对覆盖率统计的干扰与排除策略(@Generated/过滤器配置) A @Override B @Deprecated C @Generated ✓ 正确答案 D @Autowired
# 43. Native Memory Tracking 的 summary 与 detail 模式分别能定位什么,启用后应接受多少观测开销 A 开销更低 B 只统计堆 C 无需启用 D 提供更细的分配点/调用栈信息 ✓ 正确答案
# 44. Spring Boot 4.0 启动参数 -XX:+UseCompressedOops 与 JDK 25 中对象头压缩的兼容策略 A 互斥,只能二选一 B 紧凑对象头取代压缩引用 C 独立特性,可共存同时启用 ✓ 正确答案 D 都不可用
# 45. 使用 -XX:+HeapDumpOnOutOfMemoryError 在 K8s 中生成 hprof 文件的最佳实践与自动清理策略 A 转储到容器本地 B 不转储 C 指定 HeapDumpPath 指向持久化存储(PVC/卷) ✓ 正确答案 D 只转储到内存
# 47. 变异分数(Mutation Score)与质量门禁(Quality Gate)的设置与 CI 集成 A 代码行覆盖比例 B 分支数 C 被变异测试杀死的变异体比例 ✓ 正确答案 D 测试数量
# 49. 将 Xms 设置等于 Xmx 能减少哪些运行时调整,又会对容器弹性和内存承诺带来什么代价 A 启动即占满堆内存,容器弹性差、内存承诺高 ✓ 正确答案 B 提高性能 C 减少 GC D 无代价
# 51. 测试覆盖率的反模式,为覆盖率而写测试(断言缺失/无意义断言)的识别与治理 A 只看行覆盖率数字 B 忽略覆盖率 C 增加测试数量 D 变异分数(低变异分数说明测试未真正验证行为)+ 断言审查 ✓ 正确答案
# 52. 紧凑对象头在 JDK 25 中如何改变对象布局和锁标记,启用前应验证哪些工具兼容性 A 网络工具 B 依赖对象布局的工具(堆转储分析、JOL、agent) ✓ 正确答案 C 数据库工具 D 构建工具
# 55. JaCoCo 的 dump 文件分析与离线覆盖率报告生成(多模块聚合) A jacoco:prepare-agent B jacoco:check C report-aggregate ✓ 正确答案 D jacoco:dump
# 56. JaCoCo 的行覆盖率(line)、分支覆盖率(branch)、指令覆盖率(instruction)指标差异与常见误区 A 行数 B 分支路径是否被覆盖(逻辑覆盖) ✓ 正确答案 C 指令数 D 注释量
# 58. 从 JDK 21 升级到 JDK 25 时,如何清点失效参数、默认值变化和性能回归并设置回滚门槛 A -XX:+PrintFlagsFinal 对比参数 ✓ 正确答案 B jps C javap D jstack
# 59. 变异测试的等价变异体(equivalent mutant)问题与人工审查策略 A 变异分数虚低(无法被杀死,造成测试质量差的假象) ✓ 正确答案 B 变异分数虚高 C 无影响 D 增加测试数