MF 2.0 与沙箱

共 20 题
#

1. Module Federation 2.0 相比 1.0 的运行时插件与共享依赖治理

A MF 2.0 的 runtime 与 1.0 一样在构建期完全固化,不可扩展
B runtimePlugins 通过钩子可拦截共享依赖解析与远程模块加载,实现运行时可编排的依赖治理 ✓ 正确答案
C MF 2.0 移除了共享依赖机制,全部依赖由各应用独立打包
D runtimePlugins 只能在开发环境使用,生产环境会被自动禁用
#

2. 共享作用域(shared scope)下依赖去重与冲突解决

A shared 依赖一旦声明就永远只加载一份,不会出现多副本
B singleton 意味着忽略一切版本差异且永不告警
C 远程请求的 requiredVersion 不满足宿主提供版本时,会加载自己的副本实现隔离 ✓ 正确答案
D strictVersion 的作用是允许任意版本共存
#

3. Module Federation 的「联邦雪崩」与循环依赖防护

A 联邦雪崩只会影响体积,不会影响运行时状态
B 联邦雪崩指共享依赖协商失败导致多个应用各自打包同一依赖副本的现象 ✓ 正确答案
C requiredVersion 写得越精确越能避免联邦雪崩
D 联邦雪崩只在 SSR 场景下发生
#

4. qiankun/jsbox 的 JS 沙箱(Proxy/with)隔离原理与局限

A with + Proxy 沙箱中,子应用对 window 的写操作会直接写入真实 window
B 严格模式下 with 仍然可以正常使用
C Proxy 沙箱可以完整拦截包括 Symbol 与不可配置属性在内的所有属性访问
D qiankun ProxySandbox 为每个子应用维护独立代理与值表,支持多实例隔离 ✓ 正确答案
#

5. 微前端的样式隔离(Shadow DOM/ scoped/运行时改写)方案对比

A CSS Modules 的哈希类名可以完全防止外部样式污染子应用
B qiankun 的 scoped css 通过运行时改写选择器加前缀实现隔离,但无法覆盖所有 CSS 语法场景 ✓ 正确答案
C Shadow DOM 的样式隔离是字符串改写实现的
D CSS-in-JS 的样式在运行时插入,不存在全局污染问题
#

6. MF 2.0 snapshot 依赖锁定,CI 生成远程模块版本快照固定依赖,治理运行时依赖漂移与发布破坏

A snapshot 是构建期注入的静态代码,运行时无法读取
B snapshot 只能手动维护,无法由 CI 自动生成
C snapshot 的作用是让子应用在运行时忽略所有版本约束
D CI 生成的依赖快照可固定远程模块版本,用于检测依赖漂移并治理发布破坏 ✓ 正确答案
#

7. MF 2.0 loadRemote 动态加载的失败编排,远程模块超时、重试与降级 UI,及运行时插件钩子的监控接入

A loadRemote 是同步 API,不会失败
B 远程模块加载失败后只能整页刷新,没有降级手段
C 可通过 runtimePlugins 的钩子统一实现超时、重试、降级与监控上报 ✓ 正确答案
D 超时与重试逻辑只能写在每个业务调用点
#

8. 微前端的拆分粒度与团队边界(康威定律)对齐

A 微前端应按技术层拆分,方便组件复用
B 拆分粒度与团队组织无关,只看技术栈
C 拆分越细越好,应用数量越多越灵活
D 拆分应与团队边界对齐,按完整业务域划分以最小化跨团队协调 ✓ 正确答案
#

9. 微前端应用的生命周期(加载/卸载/保活)管理

A unmount 阶段无需清理事件监听与定时器,浏览器会自行回收
B 保活模式通过隐藏而非销毁应用实例来降低切换成本,但内存常驻 ✓ 正确答案
C mount 只在首次加载时执行一次,之后不会重复调用
D bootstrap 在每次进入应用时都会重新执行
#

10. 微前端下的统一监控与错误归属

A 微前端监控只需各子应用各自上报,无需统一入口
B source map 上传一次即可适用于所有子应用
C 跨应用错误无法区分来源,只能按主应用统计
D 错误归属依赖统一的应用标识与各自的 source map 还原,并结合版本快照定位 ✓ 正确答案
#

11. 微前端部署(独立部署/版本矩阵)与灰度

A 独立部署意味着所有子应用必须同时发版
B 子应用一旦发布就无法回滚到旧版本
C 版本矩阵是指所有子应用共用同一版本号
D 基座通过运行时配置指向子应用版本入口,切换配置即可实现灰度与回滚 ✓ 正确答案
#

12. Module Federation 在构建(Rspack/Turbopack)下的新配置

A MF 只能用于 webpack,Rspack 与 Vite 完全不支持
B Rspack 的 ModuleFederationPlugin 配置与 webpack 基本对齐,迁移后仍需契约测试验证行为一致 ✓ 正确答案
C Turbopack 已完整支持 MF 2.0 的全部特性
D 构建器迁移后共享依赖协商逻辑保证完全相同,无需验证
#

13. 无界(Wujie)基于 WebComponent + iframe 的隔离创新

A 无界的 iframe 直接承载子应用 UI,与普通 iframe 方案完全相同
B 无界没有通信机制,子应用无法与基座交互
C 无界用 iframe 提供 JS 运行环境、WebComponent 承载 DOM,隔离更强且规避纯 iframe 的呈现问题 ✓ 正确答案
D 无界放弃了样式隔离,完全依赖子应用自觉
#

14. 微前端间通信(props/事件总线/全局状态)与耦合控制

A 事件总线是强耦合通道,props 是松耦合通道
B 强关联数据宜用显式 props,广播事件用事件总线,并统一命名空间与生命周期管理 ✓ 正确答案
C 全局状态可以随意读写,无需约定
D 微前端通信只能使用 postMessage
#

15. 微前端的路由(主子应用)协同与冲突处理

A history 模式下子应用无需配置路由前缀
B 基座根据 activeRule 匹配路由并驱动子应用挂载,子应用路由宜规划独立前缀避免冲突 ✓ 正确答案
C 子应用应直接修改基座的路由表来切换应用
D 两个子应用可以使用完全相同的激活规则
#

16. remoteEntry 与 publicPath 配置陷阱,子应用独立部署换域或换路径后远程模块 404 的定位与修复

A 404 只能通过重发子应用版本来修复
B remoteEntry 的模块路径是运行时动态计算的,与 publicPath 无关
C 修复方式是让所有 chunk 使用相对路径,无需配置 publicPath
D 换域后 404 通常是 publicPath 写死旧地址导致 chunk 按旧路径请求 ✓ 正确答案
#

17. 沙箱内 window 全局对象身份分裂(非顶层 window)对缓存 window 引用的第三方库的影响与修复

A 沙箱代理与真实 window 是同一个对象,不存在身份分裂
B 修复方式是让库在初始化时强制把 window 设为 null
C 身份分裂只影响性能,不影响隔离正确性
D 库缓存 window 引用会绕过沙箱代理,使隔离设置与事件绑定落在真实全局上 ✓ 正确答案
#

18. Module Federation 与 SSR 的结合(服务端组装)难点

A SSR 与 MF 结合没有额外难点,直接复用浏览器端配置即可
B 水合阶段可以加载与 SSR 不同的模块版本
C 服务端渲染时无需考虑远程模块获取时序
D SSR 需在渲染前获取远程模块,并保证双端依赖单例与状态一致,失败时需降级 ✓ 正确答案
#

19. 微前端下的公共依赖(React/Vue)单例化策略

A React/Vue 多实例并存是安全的,浏览器会自动合并
B shared + singleton 由联邦运行时保证框架全局唯一,是主流单例化策略之一 ✓ 正确答案
C 单例化后各子应用可以任意使用不同框架版本
D external 方案下子应用仍会各自打包一份框架
#

20. 微前端的渐进式迁移(存量系统绞杀者模式)

A 绞杀者模式要求一次性重写整个存量系统
B 绞杀过程中必须冻结所有旧功能,不允许新增
C 微前端通过路由级绞杀让新旧功能并存、逐步替换,每步独立发布与回滚 ✓ 正确答案
D 绞杀者模式只适用于新系统,不适用于存量改造