微服务到模块化改造与回退

共 33 题
#

1. JMH 比较虚拟线程与平台线程时,为什么必须引入真实阻塞、并发度和载体线程观测

A 单线程顺序执行即可
B 完全模拟只观测 wall-clock,不设置并发
C 只做纯计算,不涉及任何阻塞
D 引入真实阻塞并设置足够并发度,让阻塞任务被挂起调度 ✓ 正确答案
#

2. Linkerd 的 identity、destination、policy 与轻量数据面如何完成 mTLS、服务发现和授权

A destination 组件
B policy 组件
C identity 组件 ✓ 正确答案
D linkerd-proxy 数据面
#

3. Modulith + 微服务(混合架构)的工程价值

A 一开始就强制拆分为大量微服务
B 只允许单体,不允许任何拆分
C 完全放弃模块化与边界
D 先保持模块边界清晰的单体,按需再拆分为服务,降低过早分布式复杂度 ✓ 正确答案
#

4. Service Mesh 指标显示成功而业务超时时,应如何关联代理队列、应用线程、DNS 和下游响应时间

A 结合代理队列深度、应用线程状态、DNS 耗时与下游响应时间定位 ✓ 正确答案
B 只看代理转发是否成功即可
C 忽略应用层线程状态
D 只检查 DNS,无需看其他
#

5. 多集群服务发现中,Linkerd 联邦、Istio east-west gateway 与 Cilium Cluster Mesh 的身份域应如何避免重名服务误路由

A mTLS 身份不区分集群
B 让所有集群约定只能使用唯一的服务名
C 关闭跨集群路由能力
D 把集群纳入身份与路由维度,用复合标识定位服务 ✓ 正确答案
#

6. 微服务到 Modulith 的反向演进

A 让服务边界更模糊
B 完全放弃模块化组织
C 增加网络调用以提升性能
D 降低跨服务通信、分布式事务与运维复杂度,同时保留模块边界 ✓ 正确答案
#

7. 微服务拆分与 Modulith 的边界判断

A 强制保持单体,忽略独立需求
B 完全不做边界判断
C 将其拆分为独立微服务,获取独立演化能力 ✓ 正确答案
D 与所有模块共享同一部署
#

8. 测试容器镜像被上游覆盖同一标签时,如何通过 digest 固定、签名校验和缓存清理保持可重现

A 用镜像 digest 固定内容,并配合签名校验 ✓ 正确答案
B 始终使用 latest 标签
C 依赖本机缓存,不校验
D 只清理缓存,不固定版本
#

9. 网格重试与 Java 客户端重试叠加后,如何按总截止时间限制请求放大并保持幂等语义

A 禁用所有重试能力
B 无限重试直到成功
C 不设 deadline,任其放大
D 设置端到端总截止时间,并限制重试次数上限 ✓ 正确答案
#

10. 微服务拆分的触发信号(团队规模、部署耦合、故障爆炸半径)与不拆的代价

A 数据库索引不够多
B 代码命名不够美观
C 测试覆盖率达到 100%
D 部署耦合严重、故障爆炸半径大、团队需独立发布 ✓ 正确答案
#

11. Istio Ambient 的 ztunnel 与 waypoint 分别承担四层和七层职责,流量在何时必须经过 waypoint

A 经过 waypoint 进行 L7 处理 ✓ 正确答案
B 绕过所有代理直连
C 只经过 ztunnel 即可
D 只做 TCP 转发
#

12. JMH 的 fork、warmup、measurement、Blackhole 与状态作用域如何防止常量折叠、逃逸分析和共享状态污染结果

A 消费计算结果,防止被 JIT 死代码消除或常量折叠 ✓ 正确答案
B 让结果对 JVM 可见即可
C 加速方法执行
D 增加方法调用次数
#

13. Testcontainers 并行启动数据库、Kafka 和对象存储时,怎样限制资源并确保每个测试拥有隔离数据

A 为每个测试使用独立的 schema、topic 前缀或存储桶前缀 ✓ 正确答案
B 串行执行且共用数据
C 所有测试共享同一份数据
D 不创建任何隔离命名空间
#

14. 从 Sidecar Istio 迁移 Ambient 时,命名空间纳管、出口流量、七层策略和可观测标签应怎样灰度验证

A 一次性全量切换所有服务
B 小范围灰度并在各维度(出口、L7 策略、标签)独立验证后再推进 ✓ 正确答案
C 跳过出口流量验证
D 迁移后不检查可观测标签
#

15. 同一 Maven 制品在 CycloneDX 与 SPDX SBOM 中标识不一致时,如何用 purl、CPE、哈希和坐标去重

A purl(软件包 URL),必要时辅以哈希校验 ✓ 正确答案
B 仅依赖版本号
C 制品文件名
D 任意字符串描述
#

16. 契约测试与 OpenAPI schema 校验分别覆盖行为示例和结构空间的哪些部分,为什么不能相互替代

A 契约测试能覆盖所有合法结构
B 二者完全相同,可互相替代
C schema 校验能替代所有契约测试
D 契约测试覆盖具体行为示例,schema 校验覆盖结构空间,二者互补不可替代 ✓ 正确答案
#

17. 性能回归门禁如何使用置信区间、效应大小和噪声基线,而不是以单次均值判定失败

A 只看单次运行最快的均值
B 忽略统计显著性
C 只要均值变慢就判失败
D 结合置信区间、效应大小与噪声基线判断,而非单次均值 ✓ 正确答案
#

18. 网格故障时的直连回退为什么可能绕过 mTLS 与授权,演练中应设置哪些不可突破的安全门禁

A 回退时直接禁用所有安全机制
B 回退路径仍保持加密与鉴权,并对敏感流量禁止无保护直连 ✓ 正确答案
C 回退路径不做任何审计
D 允许所有流量无保护直连
#

19. Modulith 与 GraalVM Native Image 的工程价值

A 扩大反射扫描范围
B 模块清晰降低 AOT 分析难度,获得快速启动与低内存的原生镜像 ✓ 正确答案
C 让原生镜像更臃肿
D 与模块化无关
#

20. Pact broker 中 pending pact、WIP pact 与 can-i-deploy 检查怎样支持消费者和提供者独立发布

A 只检查代码风格
B 依据已验证的契约关系,判断某版本能否安全部署 ✓ 正确答案
C 跳过契约验证直接部署
D 强制消费者与提供者必须同时发布
#

21. SLSA v1.0 的 Build Track 级别如何用隔离构建、签名 provenance 和可验证构建服务逐级满足

A 取消来源证明
B 为 provenance 生成签名,防止来源声明被篡改 ✓ 正确答案
C 只要求 provenance 存在即可
D 让构建过程完全不可审计
#

22. Sigstore 中 Fulcio、Rekor、Cosign 与 OIDC 身份如何形成无长期私钥的制品签名验证链

A 开发者自行长期保存的私钥
B Rekor
C Fulcio ✓ 正确答案
D Cosign
#

23. Testcontainers 2.x 升级后,容器生命周期、网络别名、等待策略与可复用模式应如何避免测试相互污染

A 不复用但也不清理
B 复用容器且所有测试共享同一份数据
C 复用容器无需等待就绪
D 复用容器但每个测试独立清理数据,保证隔离 ✓ 正确答案
#

24. 契约验证通过而端到端仍失败时,应继续检查哪些网关重写、认证策略、序列化配置与数据约束

A 只检查接口直连是否正常
B 忽略网关与序列化
C 网关重写、认证策略、序列化配置与数据约束等链路环节 ✓ 正确答案
D 契约测试已足够,无需再查
#

25. 用 ArchUnit/Spring Modulith 依赖规则验证模块边界,防止模块化腐化

A 构建/测试阶段通过静态规则自动检查,合入前拦截 ✓ 正确答案
B 完全不检查
C 运行时动态拦截
D 生产环境人工检查
#

26. JEP 509 JFR CPU-Time Profiling 如何区分线程实际获得的 CPU 时间与墙钟采样中的等待时间

A 忽略 CPU 占用
B 只统计墙钟时间
C 用墙钟时间替代 CPU 时间
D 把真正占用 CPU 的热点与锁/IO 等待区分开,避免误判 ✓ 正确答案
#

27. WireMock 录制得到的桩包含令牌、时间戳和动态 ID 时,如何脱敏并转换为稳定匹配器

A 只匹配固定令牌
B 原样保留动态值硬匹配
C 对敏感字段脱敏,动态字段用正则或忽略可变值匹配 ✓ 正确答案
D 删除所有动态字段
#

28. WireMock 的请求匹配、场景状态、故障模拟和响应模板如何复现超时、分块中断与协议错误

A 忽略请求匹配
B 场景状态(scenario)驱动响应变化 ✓ 正确答案
C 单一固定响应
D 禁用响应模板
#

29. 依赖仅在测试、构建插件或可选 profile 中出现时,SBOM scope 怎样记录才不会夸大生产暴露面

A 不区分任何 scope
B 在 SBOM 中删除所有依赖
C 按其实际用途标注为测试/构建 scope,而非生产 scope ✓ 正确答案
D 把所有依赖都标为生产 scope
#

30. 容器镜像同时包含 JRE、应用 JAR、分层依赖和操作系统包时,SBOM 应在哪些构建阶段生成与合并

A 在各对应构建阶段分别生成各层 SBOM,再合并为覆盖全镜像的整体 SBOM ✓ 正确答案
B 忽略 OS 包的 SBOM
C 只生成其中一个部分的 SBOM
D 镜像完成后不再生成 SBOM
#

31. 微基准结论与生产 JFR 相反时,如何检查数据规模、编译层级、NUMA、容器限额和请求分布

A 两个环境完全一致
B 数据规模、编译层级、NUMA、容器限额与请求分布等测量语境不同 ✓ 正确答案
C 与测量语境完全无关
D 微基准一定能代表生产
#

32. 漏洞数据库修订严重度或撤回 CVE 后,SBOM 驱动的门禁怎样重算且保留原始决策证据

A 沿用旧结论,不重算
B 忽略漏洞数据变化
C 基于最新数据重算门禁,并保留原始决策证据 ✓ 正确答案
D 删除所有历史决策记录
#

33. 微服务间的数据共享治理(去共享库、领域数据复制与对账)

A 所有服务共用一张数据库表
B 领域数据复制到消费方,并与源数据定期对账 ✓ 正确答案
C 不做任何对账
D 完全禁止跨服务数据