# 1. /actuator/conditions 与自动配置诊断 A 它只能查询 Bean 数量 B 它只显示健康状态 C 它与自动配置无关 D 它展示自动配置类的条件评估结果(匹配/未匹配及原因),用于诊断自动配置 ✓ 正确答案
# 2. @Conditional 与 Spring Boot 自动配置的协作 A 自动配置类无条件注解,始终生效 B 自动配置类基于 @Conditional 系列条件注解评估,满足条件才加载 ✓ 正确答案 C @Conditional 与自动配置无关 D 条件注解只能用于手动配置
# 3. @ConditionalOnWebApplication 在 Web 与非 Web 环境下的自动配置差异化 A 它只能判断是否 Servlet 应用 B 非 Web 应用也会加载全部 Web 自动配置 C 它与 Web 环境无关 D 它通过 type=ANY/SERVLET/REACTIVE 区分 Web 环境,实现按环境差异化加载自动配置 ✓ 正确答案
# 4. Actuator 与 Spring Security 的安全协作 A Actuator 端点无需安全保护 B 只要配置了 Actuator 就自动安全 C Actuator 与 Security 不兼容 D 应在 SecurityFilterChain 中为 /actuator/** 配置认证授权,并结合 exposure 控制暴露范围 ✓ 正确答案
# 5. Actuator 端点的核心概念(/actuator/health、/metrics 等) A Actuator 只有健康检查一个端点 B /actuator/health 暴露健康状态,/actuator/metrics 暴露指标,结合 Micrometer 实现监控 ✓ 正确答案 C 所有端点默认全部暴露 D Actuator 与监控无关
# 6. Actuator 自定义端点(@Endpoint/@WebEndpoint) A @Endpoint 只能用于 JMX,不能用于 Web B 自定义端点无法注册为 Bean C @Endpoint 定义端点,@ReadOperation/@WriteOperation 标注操作,需在 exposure 中暴露 ✓ 正确答案 D 自定义端点无需暴露即可访问
# 7. JDK 25 中 Spring Boot 对 sun.misc.Unsafe 替换的 VarHandle 自动配置适配 A VarHandle 与 Unsafe 无关 B JDK 25 仍强制使用 Unsafe,无替代 C 开发者必须手动替换所有 Unsafe 调用 D JDK 用 VarHandle 等标准 API 逐步替代 sun.misc.Unsafe,Spring 框架随版本自动适配 ✓ 正确答案
# 8. Spring Boot 3.5+ 的 AOT(Ahead-of-Time) A AOT 只在运行时动态分析 B AOT 在构建期生成代码与元数据,减少运行时反射,支持 GraalVM Native Image ✓ 正确答案 C AOT 与 Native Image 无关 D AOT 会显著增加运行时开销
# 9. Spring Boot 4.1.0 的系统要求(Java 17+、Spring Framework 7.0.8+、Maven 3.6.3+、Gradle 8.14+(含 9.x)) A 构建工具必须使用 Maven 单一一种 B 只要求 Java 8,无其他要求 C 要求 Java 17+、Spring Framework 7.0.8+、Maven 3.6.3+ 或 Gradle 8.14+ ✓ 正确答案 D 与 Spring Framework 版本无关
# 10. Spring Boot 4.x 中 @AutoConfiguration 注解的注册顺序 A 通过 @AutoConfigureBefore/@AutoConfigureAfter/@AutoConfigureOrder 控制加载顺序,保证依赖正确 ✓ 正确答案 B 自动配置类无序加载,顺序无关 C 自动配置类只能串行加载,无法排序 D @AutoConfiguration 与 @Configuration 完全等价,无顺序控制
# 11. Spring Boot Profile 的使用与环境隔离 A 通过 spring.profiles.active 激活环境,配合多配置与 @Profile 实现环境隔离 ✓ 正确答案 B Profile 只能通过命令行激活,无法配置在文件中 C Profile 与配置加载无关 D 一个应用只能有一个 Profile
# 12. Spring Boot Test 的 @SpringBootTest 与切片注解 A @SpringBootTest 加载完整上下文,切片注解只加载特定层,切片更快更隔离 ✓ 正确答案 B 两者等价,都是完整加载 C 切片注解比 @SpringBootTest 加载更全 D 切片注解不能模拟依赖
# 13. Spring Boot 启动流程与 SpringApplication 的关键回调 A ApplicationListener 只能监听一次事件 B ApplicationContextInitializer 在 refresh 之后执行 C ApplicationRunner 在容器启动完成、应用就绪后执行,用于启动后任务 ✓ 正确答案 D 回调只能通过框架内部使用,开发者无法注册
# 14. Spring Boot 的 CommandLineRunner 与 ApplicationRunner A 两者参数形式完全相同 B 只有 CommandLineRunner 能执行启动任务 C 都在启动完成后执行,ApplicationRunner 通过 ApplicationArguments 提供结构化参数解析 ✓ 正确答案 D 两个 Runner 都只有一种无序执行
# 15. Spring Boot 的 Environment 后处理器(EnvironmentPostProcessor) A 它在环境准备阶段修改 Environment,可添加自定义配置源,通过 spring.factories 注册 ✓ 正确答案 B 它在 Bean 创建之后执行 C 它只能读取配置,不能修改 D 它无法自定义配置源
# 16. Spring Boot 4.x 的 Tomcat 11.0.x / Jetty 12.1.x / GraalVM 25+ 基线 A 支持 Tomcat 11.0.x(Servlet 6.1)、Jetty 12.1.x、GraalVM 25+ Native Image ✓ 正确答案 B 只支持 Tomcat 9/Servlet 4 C 容器版本可任意选择,无基线 D GraalVM 与 Native Image 无关
# 17. Spring Boot 的事件机制(ApplicationReadyEvent 等) A ApplicationReadyEvent 在启动最开始发布 B ApplicationReadyEvent 在容器就绪、可接收请求时发布,监听器可据此响应 ✓ 正确答案 C 事件只能内置,无法自定义监听 D 事件机制与启动流程无关
# 18. Spring Boot 的优雅停机(server.shutdown=graceful) A server.shutdown=graceful 停止接收新请求并等待存量请求完成后再关闭 ✓ 正确答案 B 优雅停机立即中断所有请求 C 优雅停机与超时无关,无限等待 D 优雅停机只对非 Web 应用生效
# 19. Spring Boot 的可执行 Jar(spring-boot:repackage) A spring-boot:repackage 将应用与依赖封装为可执行 Jar,启动时由 JarLauncher 加载嵌套依赖 ✓ 正确答案 B 可执行 Jar 不包含依赖,需外部 classpath C 可执行 Jar 只能用于 war 部署 D repackage 与打包无关
# 20. Spring Boot 的失败分析器(FailureAnalyzer) A 它只处理运行期异常 B 它只负责记录日志,不分析 C 无法自定义 FailureAnalyzer D 它在启动失败时将异常转换为可读的失败原因与修复建议 ✓ 正确答案
# 21. Spring Boot 的指标(Micrometer)集成 A 指标系统与监控告警无关 B Micrometer 只能手动埋点,无法自动暴露 C Micrometer 通过 MeterRegistry 抽象指标,Spring Boot 自动配置并暴露给 Prometheus 等 ✓ 正确答案 D Micrometer 只支持 JVM 指标
# 22. Spring Boot 的核心特性(自动配置、起步依赖、Actuator、嵌入式服务器) A Starter 只是文档,不管理依赖 B 只有自动配置是核心特性 C 嵌入式服务器需要外部容器 D 自动配置、起步依赖、Actuator、嵌入式服务器构成其快速开发与生产就绪能力 ✓ 正确答案
# 23. Spring Boot 自定义 Banner 与启动信息 A 生产环境必须开启 Banner B Banner 只能显示默认内容 C 通过 banner.txt 自定义 ASCII 图,spring.main.banner-mode 控制显示模式 ✓ 正确答案 D Banner 无法关闭
# 24. Spring Boot 起步依赖(Starter)的设计与自定义 Starter A 自动配置类无需注册即可生效 B Starter 只需声明依赖,无需自动配置 C Starter 命名没有规范 D 自定义 Starter 需自动配置类、条件注解、AutoConfiguration.imports 注册及配置属性元数据 ✓ 正确答案
# 25. Spring Framework 7.0.8+ 在 Spring Boot 4.x 的语义变化 A 与 Spring Framework 6 完全一致 B 基线提升到 Jakarta EE 11、增强虚拟线程支持、强化 AOT 与 Native,并清理旧 API ✓ 正确答案 C 仍基于 javax.* 命名空间 D 不支持虚拟线程
# 26. 虚拟线程在 Spring Boot 中的边界,@Async/@Scheduled/@Transactional 的线程上下文传播 A 虚拟线程下 ThreadLocal 绑定的事务/安全上下文不自动跨线程传播,@Transactional 需在同一线程内完成 ✓ 正确答案 B 虚拟线程下 ThreadLocal 自动跨线程传播 C @Transactional 在虚拟线程下自动跨线程生效 D 虚拟线程与线程上下文无关
# 27. Spring Boot 3/4 的自动配置原理,@EnableAutoConfiguration 与条件装配如何工作? A 自动配置类无条件,全部生效 B @EnableAutoConfiguration 通过 AutoConfigurationImportSelector 收集并评估自动配置类,条件满足才生效 ✓ 正确答案 C 自动配置类在注解中硬编码,无需收集 D 条件装配与自动配置无关
# 28. 自动配置的 debug(--debug)与 conditions evaluation report A 条件评估报告无法查看 B --debug 只输出日志,与自动配置无关 C --debug 输出 CONDITIONS EVALUATION REPORT,展示各自动配置的匹配与未匹配原因 ✓ 正确答案 D 报告只能通过 /actuator/health 查看
# 29. 自动配置类的并发加载与 @AutoConfigureBefore 陷阱 A before/after 可任意使用,无副作用 B @AutoConfigureBefore/After 若形成循环依赖会导致顺序无法确定,应尽量用条件注解替代硬性排序 ✓ 正确答案 C 自动配置类并发无序加载 D 条件注解与顺序无关
# 30. 自定义自动配置的工程实践(编码、测试、文档) A 配置属性无需文档化 B 自动配置类无需条件注解 C 自动配置无法测试 D 用 @AutoConfiguration 与条件注解控制生效,用 ApplicationContextRunner 测试,并生成配置元数据 ✓ 正确答案
# 31. @ConditionalOnProperty 的 matchIfMissing 与 havingValue A matchIfMissing 指定匹配值,havingValue 指定缺失行为 B havingValue 指定匹配值,matchIfMissing 指定属性缺失时是否匹配 ✓ 正确答案 C 两个属性等价 D 属性缺失时条件永远成立
# 32. @ConditionalOnResource/@ConditionalOnWebApplication 的边界 A 两者等价 B 两者都判断资源存在 C 两者都判断 Web 环境 D 前者判断类路径资源是否存在,后者判断是否 Web 环境 ✓ 正确答案
# 33. @SpringBootApplication 的复合注解(@EnableAutoConfiguration/@ComponentScan) A 它不包含组件扫描 B 它只包含自动配置 C 它包含 @EnableTransactionManagement D 它由 @SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan 组合而成 ✓ 正确答案
# 34. @SpringBootApplication(exclude = ...) 的边界 A exclude 排除后自动会用默认配置替代 B exclude 只排除 @ComponentScan 的类 C exclude 排除指定自动配置类,但需注意排除后可能导致的依赖缺失 ✓ 正确答案 D exclude 无法排除自动配置
# 35. Spring Boot 3.2+/4 的虚拟线程支持如何开启,对性能与兼容性的影响? A 开启后任何代码都自动获得最大性能 B 开启虚拟线程会降低性能 C 虚拟线程与同步代码无关 D spring.threads.virtual.enabled=true 开启虚拟线程,提升并发但需留意 synchronized 钉住与 ThreadLocal 传播 ✓ 正确答案
# 36. Spring Boot 的启动性能优化手段(懒加载/分层 jar/CDS/AOT)? A AOT 只能用于 Native Image B 懒加载能提升首次访问速度 C CDS 与启动速度无关 D 懒加载、分层 Jar、CDS、AOT 分别从延后创建、构建分层、共享类、提前生成元数据角度优化启动 ✓ 正确答案
# 37. @Async 与 @Scheduled 使用默认执行器时分别有哪些坑(SimpleAsyncTaskExecutor 每次新建线程且并发无上限、@Scheduled 单线程调度器使任务互相阻塞),如何用 ThreadPoolTaskExecutor/ThreadPoolTaskScheduler 显式配置核心线程数、有界队列与拒绝策略 A @Scheduled 默认多线程并行 B 默认执行器并发有界且安全 C @Async 默认 SimpleAsyncTaskExecutor 无界新建线程,@Scheduled 默认单线程串行,应显式配置线程池 ✓ 正确答案 D 无需配置线程池即可高并发安全
# 38. Spring Boot Actuator 的 /actuator/health 探针在 Kubernetes liveness/readiness 探针中的应用 A 探针只能用于 liveness B liveness 与 readiness 无区别 C /actuator/health 可配置为 liveness/readiness 探针,区分"是否存活"与"是否就绪" ✓ 正确答案 D health 端点无法配置为探针
# 39. Spring Boot 4.x(按官方生成时文档)对 GraalVM Native Image 与虚拟线程的协同支持 A Native 不支持 AOT B Native 与虚拟线程互斥 C 虚拟线程在 Native 下不可用 D AOT 支持 Native 原生编译,虚拟线程默认启用,二者可协同提供快启动与高并发 ✓ 正确答案
# 40. 自定义 Starter 的工程实践,自动配置类、条件注解与元数据如何组织? A Starter 无需注册文件 B 自动配置类无需条件注解,直接生效 C 自动配置类用 @AutoConfiguration 与条件注解,注册到 AutoConfiguration.imports,并生成配置元数据 ✓ 正确答案 D 配置属性无需元数据