Micronaut 核心

共 17 题
#

1. Micronaut 的消息集成(Kafka/RabbitMQ)与声明式消费者

A 用 @KafkaListener/@RabbitListener 声明消费者,编译期生成处理逻辑 ✓ 正确答案
B 消息消费者只能在运行期通过反射动态绑定
C Micronaut 不支持 Kafka 与 RabbitMQ
D Quarkus 在构建期只做配置校验,并不生成 Bean 元数据与字节码
#

2. Micronaut 的编译时依赖注入与 AOP

A @TestHTTPResource 只能注入 Mock 对象,无法访问真实运行的 HTTP 服务
B 编译期生成无法实现 AOP 拦截
C 在编译期生成 Bean 元数据与拦截器代码,运行期无反射与动态代理 ✓ 正确答案
D 依赖注入必须依赖运行期反射扫描
#

3. Micronaut AOT 编译时 DI 与 Reflection-free 的边界?

A 常规 DI 与 AOP 由编译期生成代码实现,无反射;但第三方库与框架边界仍可能需要反射 ✓ 正确答案
B Micronaut 完全零反射,所有场景都不需要反射
C Refresh 只能依赖运行期反射,无法编译期生成
D 无反射能力与 Native 编译无关
#

4. Micronaut 的 Bean 定义与限定符

A 它只在运行期翻译 Spring 注解,无法在构建期生成元数据
B 限定符必须在运行期遍历所有候选 Bean 才能解析
C Bean 只能通过 XML 定义
D 用 @Singleton 等注解定义 Bean,限定符在编译期解析生成注入代码 ✓ 正确答案
#

5. Micronaut 的 HttpClient 与服务发现

A 声明式客户端接口在编译期生成实现,并结合服务发现解析服务地址 ✓ 正确答案
B 声明式客户端只能在运行期用反射生成
C Micronaut 不支持服务发现
D 热加载每次改动都需要重新启动整个应用才能生效
#

6. Micronaut 的序列化/反序列化(BeanIntrospection)

A Vert.x 与 Mutiny 都只负责事件循环调度,不提供任何响应式 API
B BeanIntrospection 与序列化无关
C 编译期生成 Bean 元数据并据此生成序列化代码,避免运行期反射 ✓ 正确答案
D Micronaut 只能使用 XML 序列化
#

7. Micronaut 的 Serverless 支持(AWS Lambda、Azure Functions)

A Micronaut 的启动慢,不适合 Serverless
B Serverless 函数无法使用依赖注入
C 通过 Micronaut Function 提供统一模型,配合 Native 编译实现低冷启动 ✓ 正确答案
D 函数只能部署在单个云平台
#

8. Micronaut 的编译期依赖注入,与 Spring 运行期反射注入的差异如何?

A 所有端点都固定调度到 worker 线程执行,从不使用事件循环
B 两者都在运行期用反射扫描
C Spring 的反射注入对 Native 更友好
D Micronaut 编译期生成注入代码,Spring 运行期反射扫描与注入 ✓ 正确答案
#

9. Micronaut 的声明式 HTTP 客户端与服务发现,编译期生成如何降低延迟?

A Repository 模式把数据访问方法直接放在实体类上
B 编译期生成请求代码,运行期无反射与动态代理,调用开销更低 ✓ 正确答案
C 编译期生成与延迟无关
D 运行期动态代理比编译期生成更快
#

10. Micronaut 的配置源(ConfigSource)与加密配置支持

A 支持多级 ConfigSource 组合与加密配置解密,并可读取 Kubernetes Secret ✓ 正确答案
B Quarkus Security 只能在运行期动态装配过滤器链,无法构建期固化
C 加密配置必须由外部解密,Micronaut 无能为力
D 配置绑定必须在运行期反射完成
#

11. Micronaut 的 Tracing(Micronaut Tracing/OpenTelemetry)与可观测性

A Micronaut 不支持分布式追踪
B 集成 OpenTelemetry 实现分布式追踪,用 Micrometer 暴露指标到 Prometheus ✓ 正确答案
C 指标只能通过日志输出,无法暴露给 Prometheus
D Tracing 与日志、指标无法关联
#

12. Micronaut 的 GraalVM Native Image 支持

A Micronaut 原生编译前必须把全部反射逻辑留在运行期处理
B 原生编译需要大量运行期反射,兼容性差
C 编译期生成与元数据管理让原生编译兼容性好,启动快内存低 ✓ 正确答案
D 原生编译会显著增加启动时间
#

13. Micronaut HTTP Client 与声明式 @Get 在微服务通信中的工程价值?

A Spring Boot DevTools 类变更时采用热替换而非重启
B 声明式客户端只能手写 URL 拼接
C 提供类型安全的接口调用,减少样板代码并便于测试与观测 ✓ 正确答案
D 无法对远程接口进行类型校验
#

14. Micronaut 的测试支持(Micronaut Test)

A 扩展只能在运行期通过反射把 Bean 注册进 CDI 容器
B 测试不支持外部资源容器
C Micronaut 测试启动很慢
D 通过 @MicronautTest 启动真实上下文,支持 Bean 替换与分层测试 ✓ 正确答案
#

15. Micronaut 的 HTTP 客户端/服务端,编译期生成 vs 运行期代理如何选择?

A 编译期生成与运行期代理性能相同
B 全部逻辑都必须在运行期用动态代理实现
C 编译期生成导致无法做任何运行时调整
D 静态可确定的在编译期生成,动态需求保留在运行期,兼顾性能与灵活 ✓ 正确答案
#

16. Micronaut 的 AOP,编译期代理 vs 运行期动态代理的差异如何?

A 编译期代理在运行期创建代理对象,每次调用都有反射开销
B 编译期代理生成拦截器代码,调用直接、Native 友好;运行期代理调用有额外开销 ✓ 正确答案
C 编译期代理比运行期代理更灵活
D 两者调用开销完全相同
#

17. Micronaut 的配置与启动,编译期配置绑定如何避免运行时反射?

A 编译期绑定无法做类型校验
B 配置绑定必须依赖运行期反射
C 编译期生成配置绑定代码,运行期无反射,启动更快且对 Native 友好 ✓ 正确答案
D 配置绑定与启动速度无关