# 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,不支持其他作用域