# 1. CI 流水线中的依赖安全扫描(OWASP Dependency-Check/Snyk) A Dependency-Check/Snyk 扫描依赖并与漏洞库比对,可作质量门禁阻断高危险发布 ✓ 正确答案 B 依赖扫描只需在本地执行一次,无需纳入 CI C 漏洞库无需更新,一次扫描终身有效 D 扫描结果无法作为发布门禁
# 2. SNAPSHOT 元数据、更新时间戳和 updatePolicy 如何影响可复现性,发布流水线应怎样锁定输入 A updatePolicy 只影响下载速度,不影响版本 B SNAPSHOT 与 RELEASE 一样不可变,不影响可复现性 C SNAPSHOT 内容可变,时间和 updatePolicy 影响解析结果,发布应锁定精确版本 ✓ 正确答案 D 发布流水线无需锁定依赖版本
# 3. Spring Boot 3.5+ 的 spring-boot-maven-plugin AOT 编译与 JVM 层 AOT 类加载(JEP 483)的边界 A 二者完全相同,只是命名不同 B Spring Boot AOT 是框架级配置/Bean 静态化,JEP 483 是 JVM 级 AOT 类加载加速,二者叠加 ✓ 正确答案 C JEP 483 是框架级优化,与 JVM 无关 D Spring Boot AOT 只影响测试,不影响启动
# 4. compile、runtime、provided 和 test 作用域如何影响传递依赖、编译类路径与最终制品 A compile 与 runtime 依赖进入最终制品,provided 与 test 不进入 ✓ 正确答案 B provided 依赖会打入 JAR 中 C test 依赖会影响生产制品 D 所有作用域都进入最终制品
# 5. 使用 mvn dependency:analyze 检测 Spring Boot 4.0 中未使用依赖的精度与误报场景 A 它只分析依赖版本,不分析使用 B 它能 100% 准确识别所有已使用依赖 C 它基于字节码引用分析,对反射/SPI/配置加载依赖易误报为未使用 ✓ 正确答案 D 分析结果可直接删除依赖,无需人工判断
# 6. CI/CD 中的测试金字塔(单元测试/集成测试/E2E 测试) A 测试金字塔只适用于前端,不适用于后端 B 所有测试都必须用 E2E 实现,单元测试无意义 C 三层测试数量应均等 D 单元测试多而快、集成测试居中、E2E 少而全面,在 CI 中按阶段安排执行 ✓ 正确答案
# 7. CI/CD 的基本概念与流水线模型 A CI/CD 只适用于前端项目 B CI 与 CD 完全相同,无区别 C 流水线只能手工执行,无法自动化 D CI 是频繁集成并自动构建测试,CD 是持续交付/部署,流水线即代码可版本化管理 ✓ 正确答案
# 8. Enforcer 的 dependencyConvergence 与 requireUpperBoundDeps 关注点有何不同,冲突应如何修复而非忽略 A 两规则都只检查 Maven 版本 B 二者关注点完全相同 C 冲突可直接忽略,不影响运行 D 前者要求版本收敛一致,后者要求不低于声明的最高版本,冲突应显式锁定正确版本 ✓ 正确答案
# 9. 多发行版 Jar 如何按运行时版本选择 META-INF/versions 内容,编译与测试应覆盖哪些 JDK A 所有环境加载同一份类,与版本无关 B 运行时按当前 Java 版本选择 META-INF/versions 下的类,需声明 Multi-Release: true ✓ 正确答案 C MR-JAR 无需声明,自动生效 D 编译只需一种 JDK,无需多版本
# 10. Jenkins 声明式 Pipeline 的 stage/agent/post 结构如何编写,post 阶段如何做清理与通知 A pipeline 无 post 阶段,无法清理 B pipeline 由 agent/stages 组织,post 按条件执行清理与通知 ✓ 正确答案 C 声明式 Pipeline 无法配置 agent D post 只能用于失败,不能用于成功
# 11. Jenkins 的 Shared Library 与复用 A Shared Library 与构建逻辑无关 B 它只能用于单个 Pipeline,无法复用 C 它封装通用步骤与变量,供多个 Pipeline 复用,提升一致性与可维护性 ✓ 正确答案 D 它无法管理版本
# 12. Servlet API 等 provided 依赖在可执行 Jar 与外部容器部署中边界不同,如何防止打包冲突 A 部署形态与依赖打包无关 B 所有场景都需把 Servlet API 打入 JAR C provided 依赖总是进 JAR D 外部容器由容器提供 Servlet API,可执行 Jar 需内嵌实现,需按部署形态正确配置 ✓ 正确答案
# 13. Shade 插件重定位包名时如何处理服务提供者文件和反射配置,遗漏 transformer 会出现什么 A META-INF/services 与重定位无关 B 重定位自动处理所有 SPI 配置,无需 transformer C transformer 只影响打包速度,不影响运行 D 重定位需用 ServicesResourceTransformer 等修正 SPI/反射配置,遗漏会导致运行时找不到实现 ✓ 正确答案
# 14. Surefire 与 Failsafe 分别绑定哪些生命周期阶段,集成测试失败后为何仍需要 post-integration-test A Failsafe 绑定 test 阶段,与 Surefire 相同 B Surefire 绑 test、Failsafe 绑 integration-test/verify,post 阶段保证失败也执行清理 ✓ 正确答案 C 集成测试失败后无需清理 D post-integration-test 与资源释放无关
# 15. dependencyManagement 只管理版本而不自动引入依赖意味着什么,子模块何时仍需声明 dependency A 声明在 dependencyManagement 中就会自动加入类路径 B 它只管理版本不引入依赖,子模块仍需显式声明 dependency 才会引入 ✓ 正确答案 C 子模块无需声明任何依赖 D 它与版本管理无关
# 16. maven-compiler-plugin 的 release 参数为何优于只设置 source 和 target,它如何约束平台 API A release 与编译无关 B source/target 已足够,无需 release C release 只影响性能,不影响 API D release 同时约束字节码版本与平台 API,避免使用目标版本不存在的 API ✓ 正确答案
# 17. optional 依赖与 exclusion 分别由库作者和使用者控制什么,滥用排除会造成哪些运行时缺类 A optional 由库作者声明不传递,exclusion 由使用者排除,滥用排除会导致运行时缺类 ✓ 正确答案 B 二者都由使用方控制 C exclusion 不会影响运行时类加载 D optional 会把依赖强制传递
# 18. pluginManagement 与直接声明 plugin 的执行效果有何不同,父 POM 如何安全提供默认配置 A pluginManagement 声明后会自动执行插件 B pluginManagement 只提供默认配置,需子模块直接声明才执行 ✓ 正确答案 C 直接声明 plugin 不会执行 D 二者执行效果完全相同
# 19. renovate/dependabot 与依赖自动升级 A 它们只能手动升级,无法自动 B 它们扫描依赖发现新版本并自动创建 PR,配合 CI 验证升级安全 ✓ 正确答案 C 自动升级无需 CI 验证 D 它们只支持前端依赖
# 20. 使用 BOM(Bill of Materials) A 引入 BOM 后无法覆盖任何版本 B BOM 会自动引入依赖到类路径 C 用 import 引入 BOM 继承其版本,可统一生态版本并支持按需覆盖 ✓ 正确答案 D BOM 与版本管理无关
# 21. 依赖调解的最近路径规则在深度相同的候选版本间如何决胜,POM 声明顺序为何会影响结果 A 深度相同时先声明者优先,POM 声明顺序会影响最终版本 ✓ 正确答案 B 深度相同时随机选择 C 声明顺序不影响解析结果 D 深度深者优先
# 22. 制品管理(Nexus/Artifactory/Docker Registry) A 制品管理只用于开发,不用于生产 B 制品只能存在本地,无法共享 C 制品管理不涉及访问控制 D Nexus/Artifactory 托管二进制制品,Docker Registry 存储镜像,提供版本化与审计 ✓ 正确答案
# 23. 导入多个 BOM 出现同一坐标时如何解析版本,平台 BOM 与业务覆盖项应按什么顺序组织 A 同一 dependencyManagement 内后声明者覆盖先声明者,平台 BOM 在前、业务覆盖在后 ✓ 正确答案 B 先声明者覆盖后声明者 C 多 BOM 只能取版本号最高者 D 顺序与版本解析无关
# 24. 流水线即代码(Pipeline as Code) A 流水线即代码与版本控制无关 B 流水线只能手工配置,无法代码化 C 把流水线定义为代码存入仓库,可版本化、评审与复现 ✓ 正确答案 D 流水线即代码无法复用
# 26. 流水线阶段(lint/test/build/package/deploy) A lint 应放在最后执行 B 阶段顺序无关紧要,可任意排列 C 阶段按 lint/test/build/package/deploy 顺序执行,前序失败即终止形成门禁 ✓ 正确答案 D 所有阶段可并行执行
# 27. 迁移 JDK 23 及以后版本时,为何应显式配置注解处理器路径,遗漏会让哪些生成代码消失 A 注解处理器只影响性能,不影响生成代码 B 编译器自动发现所有处理器,无需配置 C 需显式配置 annotationProcessorPaths,否则 Lombok/MapStruct 等生成代码会缺失 ✓ 正确答案 D 遗漏配置不会造成任何影响
# 28. CI 中的 SBOM 生成与漏洞扫描 A 生成 SBOM 列出组件,并对照漏洞库扫描,支持供应链安全与合规 ✓ 正确答案 B SBOM 与漏洞扫描无关 C SBOM 只能人工生成 D 漏洞扫描无需基于 SBOM
# 29. CI 中的镜像签名(Cosign/Sigstore) A 签名验证镜像来源与完整性,防止篡改,可作为部署门禁 ✓ 正确答案 B 签名只影响镜像大小,不影响安全 C 镜像无需签名即可验证真伪 D 签名与供应链安全无关
# 30. 流水线通知(Slack/Email/Webhook) A 在构建结果/关键阶段通过 Slack/Email/Webhook 通知,并应分级避免噪音 ✓ 正确答案 B 通知只能手动发送,无法自动化 C 所有构建都需通知所有人 D 通知与构建结果无关
# 31. 蓝绿部署(Blue-Green Deployment) A 蓝绿部署不需要两套环境 B 维护两套环境,验证后一次性切换流量,零停机且回滚快,但资源成本翻倍 ✓ 正确答案 C 蓝绿部署无法回滚 D 蓝绿部署与金丝雀完全相同