# 1. Spring AOP 与 Native Image 的兼容性处理 A Spring AOT 只优化启动速度,对 AOP 无效 B Spring AOP 在 Native 中会自动生成代理,无需任何配置 C Native 完全支持所有动态代理,无需处理 D Spring AOP 依赖动态代理,需靠 Spring AOT 在构建期预生成代理并配置代理/反射元数据 ✓ 正确答案
# 2. GraalVM 的 @ReflectionRegister 注解与代理配置 A @ReflectionRegister 用于声明类的反射需求,动态代理通过 proxy-config 或相关注解声明 ✓ 正确答案 B 代理配置不是必需的,反射即可覆盖 C 注解只能用于接口,不能用于类 D 注解在运行时生效,与构建无关
# 3. 使用 Tracing Agent 自动生成反射配置 A Agent 只能生成字节码,无法生成配置 B 生成配置后无需再将其提供给构建 C 采集时无需覆盖所有使用路径 D 通过 -agentlib:native-image-agent 采集运行期动态调用并输出 JSON 配置,用于构建 ✓ 正确答案
# 4. Hibernate 在 Native Image 中的字节码增强处理 A Hibernate 在 Native 中无需任何配置即可运行 B 字节码增强在运行时自动生成,无需处理 C Hibernate 与 Native 完全不兼容,无法使用 D Hibernate 依赖字节码增强、反射与序列化,需在构建期注册相应配置并利用框架的 Native 支持 ✓ 正确答案
# 5. Tracing Agent 在哪些场景捕获不到反射调用(构建期初始化、Lambda、第三方线程)及其补充手段 A Agent 能捕获所有可能的反射调用 B Lambda 中的反射一定被捕获 C 构建期初始化、未执行路径的反射、后台线程等场景可能无法被捕获,需手动配置或注解补充 ✓ 正确答案 D 只需一次运行即可生成完整配置
# 6. JNI 在 Native Image 中的使用与限制 A 需通过 jni-config 声明 Java 侧回调边界,并确保 native 库平台匹配 ✓ 正确答案 B Native 完全禁止 JNI C JNI 在 Native 中无需任何配置 D JNI 库在任意平台都可直接复用
# 7. Native Image 中的 ResourceBundle 与国际化 A 需通过 resource-config 声明并保证运行期可按 Locale 加载,动态新增 locale 需构建期已知 ✓ 正确答案 B 国际化资源无需打包即可加载 C Native 不支持任何国际化 D ResourceBundle 在 Native 中自动全量可用
# 8. Native Image 中的序列化(Serialization)支持与限制 A 序列化在 Native 中无需配置 B 所有类都会被自动注册为可序列化 C 序列化只影响性能,不影响正确性 D 序列化类需通过 serialization-config 在构建期注册,动态传入任意类在 Native 中不可行 ✓ 正确答案
# 9. 反射/动态代理的 AOT 限制,为何需要 reflect-config.json,Spring 如何自动收集? A 基于字符串的反射与动态代理在 AOT 中不可见,需 reflect-config/proxy-config 声明,Spring AOT 会静态化装配并自动收集这些元数据 ✓ 正确答案 B Spring AOT 无需收集任何配置 C 动态代理在运行时自动生成,无需 pre-声明 D AST 分析能自动发现所有反射调用
# 10. Jackson 在 Native Image 中的反射与序列化配置(ParameterNamesModule、Jandex 索引) A 参数名保留对 Jackson 无影响 B Jackson 在 Native 中无需任何配置 C Jandex 索引用于运行时动态编译 D 需反射配置声明 JSON 类,ParameterNamesModule 利用参数名反序列化,Jandex 索引辅助构建期类扫描 ✓ 正确答案
# 11. AOT 编译阶段 ServiceLoader 的预解析策略? A ServiceLoader 在 Native 中自动扫描所有服务 B 需在构建期声明服务接口与实现并纳入可达性闭包,避免运行时发现不到服务 ✓ 正确答案 C 服务实现无需注册即可被发现 D 预解析只影响启动速度,不影响正确性
# 12. Native Image 下 Security Manager 与 sun.misc.Unsafe 的禁用路径? A Unsafe 在 Native 中所有能力都可用 B Security Manager 在 Native 中完全可用 C Security Manager 在 Native 中不受支持,Unsafe 的部分能力受限,建议用受控 API 替代 ✓ 正确答案 D 这些 API 与 Native 无关,无需关注
# 13. 动态代理(Dynamic Proxy)在 Native Image 中的配置 A 动态代理在运行时自动生成,无需配置 B 需通过 proxy-config 声明代理的接口组合,接口组合须在构建期已知 ✓ 正确答案 C 代理配置只影响镜像体积 D 任意接口组合都能在运行时动态生成
# 14. GraalVM 的 reachability metadata,features 与 resource-config 的配置方式如何? A resource-config 无法声明资源 B Feature 只能用于正则表达式 C 可通过 Feature 编程式注册反射/资源,也可通过 resource-config 声明式配置资源 ✓ 正确答案 D 只有一种配置方式
# 15. GraalVM 的配置生成工具,native-image-agent 的追踪模式与手动合并如何? A Agent 只能输出一份固定配置 B 追踪模式采集运行期动态调用并输出 JSON,可指定 merge 目录合并多轮采集结果 ✓ 正确答案 C 追踪模式不采集任何反射 D 合并只能手动,无法自动
# 16. Spring 的 AOT 处理,Bean 定义、条件注解在构建期的评估如何? A Spring AOT 不处理任何 Bean B 条件注解在运行时重新评估,与构建无关 C Bean 定义在 Native 中完全动态扫描 D 构建期静态化 Bean 定义并在构建期评估条件注解,因此构建环境需与运行环境一致 ✓ 正确答案
# 17. Spring AOT 处理中的 proxy 与 lambda,native 化的序列化边界如何? A AOT 生成的 proxy/lambda 对象若需序列化,其类须被注册到序列化配置,否则运行期会失败 ✓ 正确答案 B 所有对象在 Native 中自动可序列化 C lambda 在 Native 中无法序列化也无需注册 D 序列化边界只影响性能
# 18. 反射配置的版本漂移(代码演进后配置过期)与 CI 校验 A 配置过期不会导致运行期错误 B 配置一旦生成就永久有效 C 版本漂移只影响构建时间 D 代码演进会让配置过期,需在 CI 中重新采集并 diff,确保配置与代码同步 ✓ 正确答案