# 1. JVM TI(Tool Interface)的工程应用,如何实现内存/线程采样与热更新,其 Agent 加载方式与性能开销、与 JFR/Arthas 的定位差异如何? A JVM TI 是底层接口,JFR 低开销监控,Arthas 交互诊断 ✓ 正确答案 B JFR 是底层接口 C Arthas 是 JVM TI D 三者定位相同
# 2. JDK 25 与 JDK 26 中 MethodHandle 与 LambdaMetafactory 的性能拐点? A 首次慢、JIT 后接近直接调用,JDK 25/26 优化调用路径 ✓ 正确答案 B 与反射相同 C 一直慢 D 无 JIT 优化
# 4. Instrumentation 与 -javaagent A Instrumentation 无法转换类 B -javaagent 加载 premain 注册 Instrumentation transformer,类加载时增强 ✓ 正确答案 C 与字节码无关 D -javaagent 是运行时 attach
# 5. Java Attach API 与动态 Agent A 需重启 B 只能启动时加载 C 无法增强已加载类 D 运行时 attach + agentmain 用 retransform 增强已加载类 ✓ 正确答案
# 6. 反射的性能开销来源,安全检查、装箱与动态分派,MethodHandle 如何优化? A 两者相同 B MethodHandle 更慢 C 反射慢在安全检查/装箱/动态分派,MethodHandle 可内联且少装箱 ✓ 正确答案 D 反射可内联
# 7. 运行时生成字节码的常见场景,动态代理、ORM 映射、AOP 拦截如何实现? A 这些场景无需字节码 B 只能静态生成 C 只需手写字节码 D 动态代理、ORM 映射、AOP 拦截都用运行时生成类实现 ✓ 正确答案
# 8. 字节码指令集入门,aload/iload/invokevirtual 等指令与 JVM 栈帧的关系如何? A 字节码用寄存器 B 无操作数栈 C invokevirtual 操作堆 D 栈帧含局部变量表与操作数栈,指令在栈上操作 ✓ 正确答案
# 9. Java Agent 字节码增强失败的常见原因(已加载类、模块封装、字节码校验)与排查 A 模块封装无影响 B 任意类都可直接增强 C 已加载类需 retransform、模块封装需 --add-opens、非法字节码校验失败 ✓ 正确答案 D 校验无关
# 10. VarHandle 相比 sun.misc.Unsafe 的安全性与内存访问能力(原子操作、内存栅栏) A 两者相同 B VarHandle 是公共 API 类型安全,支持原子操作与内存栅栏,替代 Unsafe ✓ 正确答案 C Unsafe 更安全 D VarHandle 无原子操作
# 11. record 类的反射访问在 JDK 17 sealed types 下的边界? A 反射无限制 B record 是 final 不可继承,组件反射可用但受模块封装限制 ✓ 正确答案 C sealed 与 record 无关 D record 可继承
# 12. MethodHandle(java.lang.invoke 体系)的工程应用 A 只能反射 B 无法内联 C 高性能动态调用、VarHandle 字段访问、lambda 生成 ✓ 正确答案 D 只用于调用静态方法
# 13. Java Agent 与 Instrumentation,premain/agentmain 的字节码增强时机如何? A 两者时机相同 B premain 类加载前增强,agentmain 运行时增强已加载类需 retransform ✓ 正确答案 C agentmain 增强未加载类 D premain 在 main 后
# 14. MethodHandle 与 VarHandle,为什么比反射快,invokeExact 的类型约束如何? A 两者性能相同 B invokeExact 自动转换类型 C 反射可内联 D 可内联且 invokeExact 强类型免装箱,性能接近直接调用 ✓ 正确答案
# 15. Java Agent 的 premain 与动态 attach,字节码插桩的实现机制如何? A 无需 Instrumentation B 只能静态改 C 注册 transformer 在类加载/retransform 时修改字节码 ✓ 正确答案 D transform 只读不改
# 16. CGLIB 与 JDK 代理的选择,final 类/方法与接口代理的限制如何? A JDK 代理可代理具体类 B CGLIB 可代理 final 类 C JDK 代理限接口,CGLIB 代理非 final 类,final 类/方法不可代理 ✓ 正确答案 D 两者无限制
# 17. 字节码增强与 Java Agent 的配合,Instrumentation 的 retransform 机制如何? A 对已加载类重新触发 transformer 替换字节码,保留实例 ✓ 正确答案 B 需重新加载类 C 实例被丢弃 D 静态块重跑
# 18. 反射 setAccessible 在 JPMS 模块封装下的限制与 --add-opens A 无需加参数 B setAccessible 总是有效 C 模块封装私有成员,需 --add-opens 或 opens 声明才能反射访问 ✓ 正确答案 D 模块封装无影响
# 19. 字节码增强(CGLIB/ASM)在 GraalVM Native Image 下的限制与构建期生成替代 A CGLIB 在 Native 下可用 B Native Image 无运行时类生成,动态增强受限,替代是构建期生成 ✓ 正确答案 C 无需替代 D 运行时生成正常