# 1. @AutoConfigureTestDatabase/@AutoConfigureTestEntityManager A 嵌入式内存数据库(如 H2) ✓ 正确答案 B 真实生产数据库 C 外部 Redis D 不替换
# 2. @Mock/@InjectMocks/@Captor(Mockito JUnit 5 Extension) A SpringExtension B MockitoExtension ✓ 正确答案 C TestcontainersExtension D OutputCaptureExtension
# 3. @MockBean(Spring Boot Test)的工作机制 A 它只在单元测试中生效 B 它在测试中把指定 Bean 替换为 mock 对象 ✓ 正确答案 C 它不会影响 ApplicationContext D 它只能用于 Controller
# 4. @MockBean(已弃用)与 @MockitoBean(Spring Boot 3.4+)在测试替身的演进 A @MockitoBean ✓ 正确答案 B @Mock C @Spy D @InjectMocks
# 5. @SpringBootTest 与 ApplicationContext 加载 A 只加载部分 Bean B 无法注入 Bean C 默认启动 Web 服务器 D 加载完整 ApplicationContext,且相同配置的测试类会复用缓存上下文 ✓ 正确答案
# 6. Mockito 的 mock/spy/when/verify/ArgumentCaptor A mock + when B doReturn C spy + when D verify + ArgumentCaptor ✓ 正确答案
# 7. OutputCaptureExtension(JUnit 5 + Logback)的日志断言 A CapturedOutput ✓ 正确答案 B MockMvc C TestRestTemplate D WebTestClient
# 8. Spring Boot 3.5+ 的 @DataJpaTest(JPA 切片测试)与 @DataRedisTest(Redis 切片测试)的边界 A 生产数据库 B 嵌入式内存数据库(H2) ✓ 正确答案 C Redis D MongoDB
# 9. Spring Boot 3.5+ 的 @JsonTest(JSON 序列化测试)与 @RestClientTest(HTTP 客户端测试)的边界 A @RestClientTest B @JsonTest ✓ 正确答案 C @DataJpaTest D @WebMvcTest
# 10. @AutoConfigureWebTestClient(WebFlux 测试) A 只支持同步阻塞 B 只能校验状态码 C 使用 chain 式 expectStatus/expectBody 断言 ✓ 正确答案 D 无法校验响应体
# 11. Spring Boot 3.5+ 的 @SpringBootTest(完整上下文)/@WebMvcTest(切片测试)的工程取舍 A @SpringBootTest B @RestClientTest C @DataJpaTest D @WebMvcTest ✓ 正确答案
# 12. Spring Boot Test 与 JUnit 5(@ExtendWith(SpringExtension.class))的整合与生命周期 A 每个测试都重新加载 B 相同配置的测试类复用同一 ApplicationContext ✓ 正确答案 C 不缓存 D 只在并发时缓存
# 13. Testcontainers(Postgres/Redis/Kafka) A 使用内存 mock 替代中间件 B 修改生产数据库 C 通过 Docker 启动真实中间件容器 ✓ 正确答案 D 使用嵌入式数据库
# 15. wall-clock 剖析与 cpu 剖析在定位 I/O 等待、锁阻塞问题上的差异,为什么 CPU 火焰图看不到等待时间 A 等待线程不消耗 CPU,不在 CPU 采样范围内 ✓ 正确答案 B 采样频率太低 C 火焰图格式限制 D 线程数太少
# 16. 火焰图如何解读,怎样从形态上区分 CPU 热点、内存分配热点与锁竞争(平顶、宽底、调用栈深度各意味什么) A 调用栈太深 B 热点函数自身耗时占比高 ✓ 正确答案 C 锁竞争严重 D 内存不足
# 17. @DataJpaTest/@JdbcTest/@DataMongoTest 的测试切片 A @DataJpaTest B @DataMongoTest C @JdbcTest ✓ 正确答案 D @WebMvcTest
# 19. @DynamicPropertySource(Spring Boot 2.2+)与 Testcontainers A @TestPropertySource B @Value C @DynamicPropertySource ✓ 正确答案 D @ConfigurationProperties
# 20. @JunitJupiter 的 Spring Boot 4.x 演进 A JUnit 4 的旧模型 B Mockito 扩展 C Testcontainers D JUnit 5 的编程模型(API + 扩展) ✓ 正确答案
# 22. @ParameterizedTest 与多源(@ValueSource/@MethodSource/@CsvSource) A @ValueSource B @NullSource C @CsvSource ✓ 正确答案 D @EnumSource
# 23. @RestClientTest/@JsonTest/@WebServiceClientTest A @RestClientTest B @DataJpaTest C @JsonTest D @WebServiceClientTest ✓ 正确答案
# 24. @TestConfiguration 与嵌套配置 A 它会在生产环境加载 B 与 @SpringBootApplication 等价 C 仅测试时加载,可用嵌套类定义测试专用 Bean ✓ 正确答案 D 只能用于切片测试
# 26. @WebMvcTest(@AutoConfigureMockMvc)的切片测试 A @DataJpaTest B @AutoConfigureMockMvc ✓ 正确答案 C @MockBean D @DynamicPropertySource
# 27. Awaitility 如何做异步断言,相比 Thread.sleep 轮询它在可读性与超时控制上有何优势,常见 untilAsserted 用法有哪些 A 更慢但更简单 B 无法设置超时 C 只能测同步代码 D 声明式轮询等待条件满足,超时与轮询可控,更稳定 ✓ 正确答案
# 28. BDDMockito.given/thenShould 的 BDD 风格 A when(...).thenReturn(...) B verify(...) C doReturn(...).when(...) D given(...).willReturn(...) ✓ 正确答案
# 32. JUnit 5 的 Assumptions 与条件执行 A Assumptions.assumeTrue ✓ 正确答案 B Assertions.assertEquals C @Disabled D @Tag
# 33. JUnit 5 的 ExtensionModel(BeforeEachCallback/AfterEachCallback) A ParameterResolver B AfterEachCallback C BeforeEachCallback ✓ 正确答案 D TestInstancePostProcessor
# 35. JsonPath/JsonPathResultMatchers 的断言 A redirect() B status().isOk() C contentType() D jsonPath("$.name").value(...) ✓ 正确答案
# 37. Mockito 的 Answer/doAnswer 自定义返回 A when(...).thenReturn(固定值) B when(...).thenThrow C doAnswer(自定义 Answer) ✓ 正确答案 D verify
# 38. Mockito 的 RETURNS_DEEP_STUBS 与链式 stub A 自动为链式调用上的每层对象创建 mock ✓ 正确答案 B 只能 mock 一层 C 会执行真实方法 D 必须与 spy 配合
# 39. Mockito.inOrder 的有序验证 A verify(times(1)) B inOrder.verify ✓ 正确答案 C verifyNoInteractions D doAnswer
# 40. Mockito.mockStatic(Mockito 3.4+)的静态方法 mock A 测试完成后 B 调用 verify 后 C 永远不恢复 D 立即关闭 try-with-resources 的 MockedStatic ✓ 正确答案
# 42. Mockito.verify 的 times/never/atLeast/atMost A verify(mock, times(1)) B verify(mock, atLeast(1)) C verify(mock, never()) ✓ 正确答案 D verify(mock, atMost(1))
# 43. Pyroscope/Parca 等持续剖析平台如何以低开销长期采集并保留 profile 数据,数据保留与降采样策略如何设计 A 永久保存全部原始数据 B 只存一次 C 关闭采集 D 分层降采样 + 设置数据保留期 ✓ 正确答案
# 46. Test Interceptor 与 Dynamic Tests A @BeforeEach B @TestFactory + DynamicTest ✓ 正确答案 C @Test D @Disabled
# 47. TestInstance 与 PER_METHOD/PER_CLASS 的取舍 A 默认 PER_CLASS,共享实例 B 默认按类静态 C 没有默认 D 默认 PER_METHOD,每个测试方法新建实例 ✓ 正确答案
# 49. 如何把持续剖析与 Metrics、Tracing 关联,从异常火焰图下钻到具体请求与代码行的完整排查路径是什么 A 直接看火焰图 B 随机挑选 C Metrics 告警发现异常,再经 Tracing 与剖析定位 ✓ 正确答案 D 只看代码
# 50. 容器与 cgroup 环境下剖析工具读取 CPU 配额、内核符号(perf_event)会遇到哪些权限与精度问题 A 足够的内存 B 网络 C root 权限或 CAP_SYS_ADMIN/CAP_PERFMON ✓ 正确答案 D 磁盘
# 51. 剖析 Agent 在虚拟线程(Virtual Threads)场景下的兼容性边界,载体线程视角会带来怎样的误读 A 无法采样 B 无影响 C 多个虚拟线程的 CPU 样本混淆,造成误读 ✓ 正确答案 D 采样变慢
# 53. 测试数据构造的 Test Data Builder 与 Object Mother 模式如何组织,Instancio 等自动填充库如何减少样板代码 A 手工 new B Object Mother C Instancio.create ✓ 正确答案 D Mockito
# 54. 采样式剖析(sampling profiling)的工作原理是什么,采样频率与统计精度、运行开销之间如何权衡 A 精度下降、开销下降 B 精度上升、开销上升 ✓ 正确答案 C 无影响 D 开销上升但精度下降
# 57. JFR(Java Flight Recorder)与 async-profiler 在生产环境的开销、精度与接入成本上有何差异 A JFR 需单独安装,async-profiler 随 JDK 自带 B async-profiler 覆盖 JVM 内部事件更多 C 两者完全相同 D JFR 是 JDK 内置、低开销、事件驱动;async-profiler 需安装、采样高精度 ✓ 正确答案
# 58. Testcontainers 与 localstack 的协作 A PostgreSQLContainer B LocalStackContainer ✓ 正确答案 C KafkaContainer D GenericContainer
# 60. WireMock 的 HTTP mock(/__admin/mappings) A /__admin/config B /__admin/stubs C /api/mock D /__admin/mappings ✓ 正确答案
# 61. async-profiler 支持的事件类型(cpu/alloc/lock/wall)分别采集什么信号,各自适合定位哪类性能问题 A cpu B alloc C wall ✓ 正确答案 D lock