Quarkus 核心

共 18 题
#

1. Quarkus 的编译时优先(Build-Time Boot)理念与 Spring 的差异

A Quarkus 在构建期生成 Bean 元数据并做字节码增强,运行期只加载这些结果 ✓ 正确答案
B Quarkus 在构建期只做配置校验,并不生成 Bean 元数据与字节码
C Quarkus 在运行期反复扫描 ClassPath 来发现 Bean
D 编译时优先只影响启动速度,不影响内存占用
#

2. QuarkusTest 的测试机制(启动隔离、@TestHTTPResource)与持续测试(Continuous Testing)

A @TestHTTPResource 只能注入 Mock 对象,无法访问真实运行的 HTTP 服务
B @TestHTTPResource 用于注入需要访问的 HTTP 端点,避免手写 URL 与端口 ✓ 正确答案
C @QuarkusTest 只能使用 Mock 无法启动真实应用
D 持续测试每次都要重启整个应用才能验证
#

3. Quarkus Dev Mode 热重载与 Build Step 的协同工作原理?

A 热重载只重跑受变更影响的 Build Step,并热替换相关类 ✓ 正确答案
B 热重载会重启整个 JVM 并重新扫描类路径
C Build Step 与热重载没有任何关系
D Dev Mode 不支持持续测试
#

4. Quarkus 与 Spring API 兼容性(quarkus-spring-di、quarkus-spring-web)

A 它支持 Spring Security 的全部复杂功能
B 它只在运行期翻译 Spring 注解,无法在构建期生成元数据
C 它在构建期把 Spring 注解翻译为 Quarkus 的 CDI/RESTEasy 模型,只覆盖常用子集 ✓ 正确答案
D 它可以零成本迁移任意大型 Spring 应用
#

5. Quarkus 的 Dev Mode 与热加载(Live Coding)

A 它监听源码变化并自动热替换,无需手动重启 ✓ 正确答案
B 热加载每次改动都需要重新启动整个应用才能生效
C 每次改动都必须手动重启应用
D 热加载不包含持续测试能力
#

6. Quarkus 的反应式引擎(Vert.x/Mutiny)

A Vert.x 提供响应式编程 API,Mutiny 提供底层网络 IO
B Vert.x 提供事件循环与非阻塞 IO,Mutiny 提供 Uni/Multi 响应式 API ✓ 正确答案
C Quarkus 反应式栈是阻塞式的,与事件循环无关
D Vert.x 与 Mutiny 都只负责事件循环调度,不提供任何响应式 API
#

7. Quarkus 的构建期处理,为什么能在构建期完成配置验证与字节码增强?

A 配置错误在构建期就能被发现,字节码在构建期被增强 ✓ 正确答案
B 配置错误只能在运行期被发现,字节码无法在构建期增强
C 字节码增强只能在运行期通过反射完成
D 构建期处理与 Native 编译无关
#

8. Quarkus 的响应式与非阻塞栈,Vert.x 与 RESTEasy Reactive 的集成如何?

A 所有端点都固定调度到 worker 线程执行,从不使用事件循环
B 默认在事件循环线程执行,显式标记的阻塞方法才调度到 worker 线程 ✓ 正确答案
C 路由信息在运行期通过反射动态生成
D RESTEasy Reactive 与 Vert.x 完全无关
#

9. Quarkus 的 Panache(active record vs repository)数据访问模式

A Repository 模式把数据访问方法直接放在实体类上
B Active Record 把数据访问方法放在实体上,Repository 用独立仓储类封装 ✓ 正确答案
C 两种模式都必须在运行期通过反射访问数据
D Active Record 适合复杂聚合与大量复用查询
#

10. Quarkus 的安全体系(Quarkus Security、OIDC/JWT)与 Spring Security 的差异

A Quarkus Security 只能在运行期动态装配过滤器链,无法构建期固化
B Quarkus Security 只能在运行期通过反射校验权限
C Quarkus Security 在构建期解析并固化安全规则,Spring Security 靠运行期过滤器链动态装配 ✓ 正确答案
D 两者都用相同方式的运行时过滤器链
#

11. Quarkus 的分布式配置与 Kubernetes 集成

A Quarkus 可以把 Kubernetes ConfigMap 和 Secret 作为配置源读取 ✓ 正确答案
B Quarkus 无法把 Kubernetes ConfigMap 或 Secret 作为配置源读取
C 配置无法在 Kubernetes 环境中外部化
D 构建期配置与运行期配置没有区别
#

12. Quarkus 的 GraalVM Native Image 原生支持

A 扩展在构建期生成原生编译所需的反射与序列化元数据 ✓ 正确答案
B Native Image 必须在运行期解析反射,无法提前生成
C 原生编译后应用启动会很慢
D Quarkus 不支持原生编译
#

13. Quarkus 与 Spring Boot DevTools 体验对比的真实差异?

A Spring Boot DevTools 类变更时本质上仍是重启应用 ✓ 正确答案
B Quarkus Dev Mode 每次变更都重启整个 JVM
C Spring Boot DevTools 类变更时采用热替换而非重启
D Spring Boot DevTools 支持持续测试
#

14. Quarkus 的扩展机制(Extension)与 CDI 注入

A 扩展只能在运行期通过反射把 Bean 注册进 CDI 容器
B 扩展只能在运行期动态注册 Bean
C 扩展在构建期通过 Build Step 把库的 Bean 注册进 CDI 容器 ✓ 正确答案
D CDI 注入依赖运行期反射发现 Bean
#

15. Quarkus 与 GraalVM,扩展(extension)如何驱动原生编译的元数据生成?

A 扩展在运行期动态生成 GraalVM 所需的反射与序列化元数据
B 扩展在构建期生成反射、序列化、资源等 GraalVM 元数据 ✓ 正确答案
C 元数据只能在运行期动态生成
D 扩展与原生编译元数据无关
#

16. Quarkus 的 Dev Services,开发期容器化依赖的自动启动如何?

A 开发者必须手动启动并配置所有外部依赖
B 它会自动创建 Docker 容器来提供数据库、消息队列等开发依赖 ✓ 正确答案
C Dev Services 只能用于生产环境
D Dev Services 无法在测试中使用
#

17. Quarkus 扩展机制,如何为第三方库编写 Quarkus extension?

A 扩展只包含运行期组件,没有构建期处理器(Build Step)
B 扩展只能在运行期注册 Bean,无法在构建期处理
C 扩展无法消费框架提供的 Build Item
D 扩展包含构建期处理器与运行期组件,用 @BuildStep 注册 Bean 和生成元数据 ✓ 正确答案
#

18. Quarkus 的 CDI 实现,编译期 Bean 元数据与运行期启动优化如何?

A ArC 在运行期才扫描类路径并反射注入
B ArC 在构建期生成 Bean 元数据与字节码,运行期直接加载,无需反射扫描 ✓ 正确答案
C ArC 不兼容 CDI 规范
D ArC 只能使用 @ApplicationScoped,不支持其他作用域