性能与可观测性

共 18 题
#

1. JVM 现代 GC 的工程取舍,G1(默认)、ZGC(< 1ms 暂停)、Shenandoah(低延迟)、Epsilon(no-op)的生产选型如何?

A 所有场景都应使用 Epsilon
B 默认选 G1,低延迟大堆可用 ZGC/Shenandoah,Epsilon 仅限特定测试 ✓ 正确答案
C ZGC 吞吐一定高于 G1
D Shenandoah 适合小堆高吞吐场景
#

2. Async-Profiler 4.x + Continuous Profiling 平台(Pyroscope/Conprof)的 JDK 25/26 集成

A Async-Profiler 以低开销采样,通过 JFR 事件流/agent 上报到 Pyroscope/Conprof 实现持续剖析 ✓ 正确答案
B Async-Profiler 只能离线使用,无法联机
C 持续剖析会采集所有数据,无需采样
D 持续剖析与告警联动无关
#

3. 可观测性数据的成本治理,指标降采样、日志采样与追踪存储策略

A 应全量采集所有数据,不做任何采样
B 通过指标降采样、日志采样、追踪采样与分层存储控制成本并保留关键信息 ✓ 正确答案
C 采样只影响性能,不影响成本
D 追踪无法采样,只能全量存储
#

4. Java 网络性能优化,TCP 参数、零拷贝与连接复用对延迟的影响如何?

A 零拷贝与连接复用无关,只影响 CPU
B TCP 参数调优、零拷贝(sendfile/DirectBuffer)与连接复用都能降低网络延迟 ✓ 正确答案
C 连接复用会增加握手次数
D Nagle 算法总是降低延迟
#

5. JVM 性能工具链的新变化,JFR 事件流、async-profiler、JDK Flight Recorder 在云原生下的集成如何?

A JFR 只能落盘分析,无法实时订阅
B async-profiler 与 JFR 完全无关
C JFR 事件流可实时订阅,async-profiler 补充采样,云原生下可汇聚到 OTel/Prometheus ✓ 正确答案
D 云原生无法集成 JFR 数据
#

6. 容器环境下的性能可观测,cgroup 内存限制、CPU 限流(throttling)与 JVM 自适应参数的相互作用如何?

A UseContainerSupport 让 JVM 感知 cgroup 限制自适应堆与线程,需监控堆外内存与 CPU throttling ✓ 正确答案
B JVM 完全忽略容器限制,按宿主机配置
C cgroup 内存限制不影响 JVM 堆设置
D CPU throttling 与 JVM 线程数无关
#

7. JFR 事件流与云原生可观测,如何把 JVM 指标接入 Prometheus/OTel?

A JVM 指标无法接入 Prometheus
B OTel 不支持 JVM 指标
C JFR 事件只能落盘,不能实时采集
D 通过 JFR 事件流、Micrometer 或 OTel agent 将 JVM 指标转换为 Prometheus/OTLP 格式汇聚 ✓ 正确答案
#

8. JVM 可观测性趋势,JFR 事件流、OTel JVM 指标与 eBPF 的互补关系如何?

A 三者完全冗余,只需其中之一
B JFR 看 JVM 内部、OTel 提供标准指标、eBPF 看系统层,覆盖完整链路 ✓ 正确答案
C eBPF 可完全替代 JFR
D OTel 无法观测 JVM 指标
#

9. AI 工作负载下 JVM 性能特征,长连接流式响应与虚拟线程的 GC 交互如何?

A 流式响应不产生中间对象,GC 无压力
B AI 场景无需考虑 GC 选型
C 虚拟线程会增加 GC 对象数量
D 虚拟线程可承载大量并发长连接,流式生成的中间对象需关注 GC 压力 ✓ 正确答案
#

10. 云原生下的弹性伸缩与 JVM 启动优化(HPA、CDS/AOT、就绪探针)

A 启动速度与弹性伸缩无关
B CDS 只能减少内存,不能加速启动
C 就绪探针只用于健康检查,与扩容无关
D CDS/AOT 加速 JVM 启动,配合就绪探针与 HPA 实现快速扩缩容 ✓ 正确答案
#

11. JFR 事件流(JEP 349,JDK 14)的实时订阅与 SRE 集成的工程实践

A JFR 只能事后落盘分析,无法实时
B 订阅所有事件即可,无需选择
C 通过 RecordingStream 实时订阅关键 JFR 事件并上报指标/告警,需控制事件选择与开销 ✓ 正确答案
D JFR 事件流无法与 Prometheus 集成
#

12. JVM CPU Profile(AsyncGetCallTrace)的低开销生产剖析与火焰图生成

A 它基于低开销周期采样获取调用栈,生成火焰图定位 CPU 热点 ✓ 正确答案
B AsyncGetCallTrace 需要暂停线程才能采样
C 采样开销通常超过 50%
D 火焰图无法反映调用路径
#

13. AI/LLM 场景下 Java 服务的性能特征,流式响应、高并发长连接对 GC 与线程模型的新要求如何?

A 长连接无需虚拟线程,平台线程即可
B 传统线程池模型完全够用
C 流式响应不产生中间对象
D 虚拟线程承载高并发长连接,流式中间对象需低延迟 GC 处理 ✓ 正确答案
#

14. 虚拟线程与性能剖析,async-profiler 对虚拟线程的采样支持如何?

A async-profiler 无法剖析虚拟线程
B 剖析虚拟线程不需要任何额外支持
C 虚拟线程只能按平台线程剖析
D async-profiler 4.x 能感知虚拟线程,采集其挂起态调用栈并支持按虚拟线程分析 ✓ 正确答案
#

15. 持续剖析(Continuous Profiling)在 Java 服务中的落地,采样开销与告警联动如何?

A 持续剖析必须全量高采样率,开销可忽略
B 采用低采样率控制开销,与 Prometheus/OTel 打通并联动告警定位性能热点 ✓ 正确答案
C 持续剖析数据无法长期保存
D 持续剖析与告警无关
#

16. Java 应用的容量预测,基于压测基线与业务增长模型的资源规划如何?

A 压测基线映射单实例能力,结合业务增长模型规划资源,并预留余量与弹性兜底 ✓ 正确答案
B 容量预测只需经验估算,无需压测
C 容量预测是一次性工作,无需迭代
D 资源规划无需考虑峰值与故障
#

17. 容器环境下 JVM 自适应参数,UseContainerSupport 与 cgroup 限额的匹配如何?

A UseContainerSupport 让 JVM 感知 cgroup 限额自适应堆与线程,但需预留堆外内存并微调比例 ✓ 正确答案
B JVM 完全忽略容器限额,按宿主机配置
C 堆外内存不影响 JVM 稳定性
D CPU 配额不影响 GC 线程数
#

18. JVM 技术路线(虚拟线程生态、FFM、Valhalla 进度)对性能优化的影响

A 虚拟线程、FFM、Valhalla 对性能优化无影响
B Valhalla 会增加内存开销
C FFM 与 JNI 完全等价,无性能优势
D 虚拟线程优化并发、FFM 优化原生交互与内存、Valhalla 优化内存布局,共同推动性能提升 ✓ 正确答案