性能分析与持续剖析

共 18 题
#

1. 火焰图(Flame Graph)的解读方法,on-CPU 与 off-CPU 火焰图如何定位热点?

A 火焰图只能看 CPU 总利用率,无法定位具体函数
B on-CPU 火焰图用于定位锁等待与 IO 阻塞等阻塞热点
C off-CPU 火焰图用于定位 CPU 计算热点
D 火焰图纵向为调用栈深度,横向宽度代表采样时间占比,宽火焰为热点 ✓ 正确答案
#

2. Async Profiler / perf / eBPF 在性能剖析中的角色与互补?

A Async Profiler 是内核级工具,用于采样硬件计数器
B 三者功能完全重叠,只需选其一
C eBPF 零侵入观测内核与用户态事件,适合容器化生产环境 ✓ 正确答案
D perf 是 JVM 专用剖析器,无法分析内核
#

3. 如何读取火焰图定位性能瓶颈,on-CPU 与 off-CPU 分析的区别与互补?

A 两者互补:CPU 利用率高用 on-CPU 找计算热点,CPU 利用率低用 off-CPU 找阻塞点 ✓ 正确答案
B off-CPU 分析采集 CPU 上执行的调用栈,定位计算热点
C on-CPU 分析定位阻塞热点,如锁等待与 IO 等待
D 火焰图纵向代表采样时间占比,宽火焰为热点
#

4. Continuous Profiling(持续剖析)平台(Pyroscope/Parca/Conprof)在生产环境的低开销采集与采样策略?

A 持续剖析采用插桩式完整记录每次调用,开销高但准确
B 采样式剖析以较低频率采样,配合隔离部署与按需采样控制生产开销 ✓ 正确答案
C 采样频率越高开销越小,应尽量提高频率
D 持续剖析无法在时间维度回顾分析,只能实时查看
#

5. 采样剖析(sampling profiler)的采样原理与误差,如何避免"剖析本身影响结果"?

A 采样剖析通过周期性中断记录调用栈,多次采样统计函数耗时占比,需控制采样频率避免干扰结果 ✓ 正确答案
B 采样剖析无误差,单次采样即可给出精确结论
C 采样剖析对每个方法插桩,记录完整调用,开销高
D 采样频率越高开销越低,结果越准
#

6. 持续剖析(Continuous Profiling)如何与 Trace/指标关联,用于发布前后的回归检测?

A 持续剖析与 Trace、指标孤立,无法关联分析
B 回归检测只需看指标,无需剖析数据
C 发布前后对比剖析画像与指标,能定位性能回归的具体函数并联动告警 ✓ 正确答案
D 持续剖析只能实时看,无法回溯发布时刻
#

7. 性能分析的层次,从接口层(RT/TPS)到代码层(profiler 火焰图)再到基础设施(CPU/内存/IO)如何逐层定位?

A 三层定位相互独立,无需交叉验证
B 接口层用火焰图定位热点函数,代码层用 RT/TPS 判断异常
C 只需看接口层指标即可定位所有性能问题
D 基础设施层用 CPU/内存/IO 判断资源瓶颈,代码层用 profiler 定位热点函数 ✓ 正确答案
#

8. 持续剖析(Continuous Profiling),与按需剖析的差异,采样开销与生产可观测性的取舍?

A 持续剖析以低频率持续采集,可回溯与对比,但需控制采样与存储开销 ✓ 正确答案
B 持续剖析开销太高,无法用于生产环境
C 按需剖析覆盖全时段,可回溯历史性能
D 持续剖析只在发现问题时启动,开销只在剖析期间发生
#

9. 内存剖析与泄漏定位,堆转储分析、对象分配热点与 GC 日志如何结合定位内存泄漏与内存膨胀?

A 只需 GC 日志即可定位内存泄漏的具体对象
B 堆转储分析定位引用链确认泄漏持有者,GC 日志看堆增长趋势,分配热点定位分配点 ✓ 正确答案
C 堆转储能直接看到高频分配点,无需分配剖析
D 内存膨胀与内存泄漏是同一问题,处理方式相同
#

10. 锁竞争与线程阻塞剖析,线程转储与异步剖析如何定位锁竞争、死锁与线程饥饿,锁粒度优化如何验证?

A 死锁指单线程长时间等待,与锁竞争无关
B 异步剖析通过线程转储定位锁等待事件,无需锁事件统计
C 线程转储中连续出现 BLOCKED 同一锁的线程栈,提示锁竞争 ✓ 正确答案
D 锁粒度优化后无需压测验证,直接可确认优化效果
#

11. JFR(Java Flight Recorder)与 perf 联动,JVM 内部事件与系统事件的关联分析?

A JFR 记录系统级事件,perf 记录 JVM 内部事件
B 通过时间戳对齐,将 JFR 的 JVM 事件与 perf 的系统事件关联分析 ✓ 正确答案
C JFR 与 perf 记录的事件完全相同,无需联动
D JFR 只能记录 GC 事件,无法记录线程与锁
#

12. eBPF 剖析(on-CPU/off-CPU 火焰图)与 JVM/JDK 内建剖析的适用边界?

A eBPF 剖析能深入 JVM 内部,覆盖 GC 与分配热点
B eBPF 剖析无法采样 native 栈,只能看 Java 方法
C JVM 内建剖析对系统调用与内核等待观测有限,eBPF 侧重内核与系统层 ✓ 正确答案
D JVM 内建剖析能观测内核栈与系统调用
#

13. 性能回归的自动化,如何建立性能基线、阈值告警与对比测试,避免环境噪声?

A 通过固定环境、预热、多次运行统计与置信区间,避免环境噪声造成误报 ✓ 正确答案
B 性能基线取单次压测瞬时值即可,无需多次统计
C 环境噪声不影响性能回归结果,无需处理
D 对比测试只需比较当前版本,无需与基线版本对比
#

14. 性能剖析的采样周期与开销控制,如何在生产环境以低开销持续采样而不影响业务?

A 采样频率越高开销越低,应在生产环境使用最高频率
B 采用异步采样、低频、按比例采样与隔离部署,控制剖析开销不影响业务 ✓ 正确答案
C 插桩式剖析开销低,适合生产环境持续采样
D 采样开销与频率无关,无需控制
#

15. JVM GC 与调优参数对压测结果的影响,如何隔离环境差异,保证结果可比?

A 堆大小与 GC 收集器不影响压测结果,无需固定
B 压测对比需固定 JVM 参数、数据量与实例规格,隔离环境差异才能保证可比 ✓ 正确答案
C GC 停顿与业务耗时无关,无需单独分析
D 不同 GC 配置对吞吐量与停顿影响相同,可随意切换
#

16. 微基准测试工具(JMH/caliper)在性能回归中的应用,微基准与全链路压测的分工?

A 微基准精确测量代码级性能退化,适合 CI 回归;全链路压测验证整体性能 ✓ 正确答案
B 微基准用于定位系统级整体性能问题,替代全链路压测
C 微基准无法避免 JIT 影响,结果不可信
D 全链路压测能精确测量单个方法性能,无需微基准
#

17. eBPF 与零侵入剖析在容器化环境的应用边界,内核态观测的覆盖范围与限制?

A eBPF 能深入 JVM 内部,覆盖 Java 方法与 GC 事件
B eBPF 零侵入观测内核与系统事件,但对 JVM 内部感知有限,需配合 JVM 剖析 ✓ 正确答案
C eBPF 无需内核权限与版本支持,任何环境可用
D eBPF 只能观测用户态,无法观测内核栈
#

18. 性能剖析结果的统计可信度,多次采样的方差、环境噪音与置信区间如何评估,避免一次采样定结论?

A 单次采样即可给出精确结论,无需多次运行
B 方差越大说明结果越可信,稳定性越高
C 通过多次采样评估方差与置信区间,剔除离群值,避免环境噪音与误判 ✓ 正确答案
D 对比两个版本只需看单次均值,无需统计检验