微前端性能与安全

共 44 题
#

1. 微前端构建产物独立 CDN 部署与缓存策略的工程取舍

A 带 hash 的产物可长缓存,入口文件用短缓存或版本参数,发布回滚通过切换版本目录实现 ✓ 正确答案
B 所有产物都应长缓存以最大化命中率
C 版本目录部署会强制所有用户重新下载全部资源
D CDN 缓存无需考虑发布一致性,可任意配置
#

2. 微前端中主子应用的性能预算(Performance Budget)

A 微前端预算按激活路径计算总量并分账到主子应用,公共依赖单列,CI 门禁与 RUM 回环治理 ✓ 正确答案
B 预算只需按每个子应用独立计算,无需考虑激活路径
C shared 依赖应重复计入每个子应用的预算
D 预算设定后不可调整,否则失去约束力
#

3. qiankun 的 SnapshotSandbox 与 ProxySandbox 实现原理与差异,多实例 vs 单实例场景取舍

A 两种沙箱的实现机制完全相同
B SnapshotSandbox 支持多实例并存
C ProxySandbox 不依赖 Proxy,兼容所有浏览器
D SnapshotSandbox 通过快照还原支持单实例,ProxySandbox 通过代理值表支持多实例,按兼容与隔离需求取舍 ✓ 正确答案
#

4. JS 沙箱对 window 副作用(定时器、事件监听、全局变量)的代理与恢复机制

A 全局变量写入值表后无需在失活时处理
B 沙箱卸载时移除页面全部事件监听以保证干净
C 定时器可以不用清理,浏览器会自动回收
D 沙箱登记沙箱期间产生的定时器与事件监听,卸载时精确清理并还原全局变量 ✓ 正确答案
#

5. 沙箱逃逸场景与 with/Proxy 的局限,原型链访问、Symbol.unscopables 与 iframe 兜底

A Symbol.unscopables 与 with 绑定语义无关
B Proxy 可以拦截 Symbol 属性与不可配置属性
C with/Proxy 沙箱存在原型链访问与 Symbol.unscopables 等逃逸路径,高安全场景需 iframe 或 ShadowRealm 原生隔离兜底 ✓ 正确答案
D iframe 兜底与 with/Proxy 沙箱的隔离能力完全相同
#

6. 微前端主子应用的生命周期对齐(mounted/unmounted)

A 快速切换应用时无需考虑旧回调覆盖新状态
B 子应用可以在容器就绪前直接挂载到 body
C unmount 无需等待清理完成即可返回
D 生命周期对齐要求挂载/卸载契约幂等且时序正确,并需处理异步竞态与过早过晚挂载 ✓ 正确答案
#

7. 微前端的安全与鉴权(Token 传递、应用隔离)

A Token 由基座统一持有并通过受控通道下发,子应用按信任分级隔离,登出失效统一广播 ✓ 正确答案
B Token 存 localStorage 供所有子应用自由读取最方便
C 所有子应用应授予完全相同的权限与隔离级别
D 子应用可各自独立管理登录态与刷新逻辑
#

8. 微前端预加载与应用切换性能优化

A 预加载按空闲与命中预测分级实施,切换时并行加载并复用公共依赖,且需控制预取开销 ✓ 正确答案
B 预加载越多越快,应预取所有子应用全部资源
C 切换优化只能通过增加带宽实现
D 保活应用无需内存管理,可无限堆积
#

9. 微前端 unmount 副作用清理(事件监听、定时器、Store 切片)

A unmount 需清理全局监听、定时器与请求、Store 状态切片,并通过登记表与卸载后检测保证彻底 ✓ 正确答案
B 组件卸载后其事件监听会自动释放,全局监听无需处理
C Store 状态残留不影响下次挂载
D 清理只需移除 DOM,无需中断异步请求
#

10. 子应用加载失败/超时降级到本地占位(fallback route)

A fallback 只需显示错误文字,无需重试能力
B 加载失败时应整页刷新等待重试
C 子应用加载失败按超时、重试、占位、恢复编排,区域占位保持页面其余可用并防恢复风暴 ✓ 正确答案
D 降级事件无需上报,用户自行处理即可
#

11. 错误追踪与跨应用性能监控

A 跨应用监控通过应用栈、边界上下文与统一链路实现错误归属与性能贡献度拆解 ✓ 正确答案
B 跨应用错误按出错子应用独立统计即可,无需传播上下文
C 性能监控只看整体 LCP,无需拆解到应用
D 应用切换耗时不属于监控范围
#

12. iframe 与 Web Components 在微前端的隔离方案取舍

A 两种方案互斥,只能二选一
B iframe 的弹窗可以自由溢出边界显示
C Web Components 可以单独完成 JS 全局隔离
D iframe 提供原生 JS 隔离但呈现受限,Web Components 提供样式边界与组合体验但需配合 JS 沙箱 ✓ 正确答案
#

13. 跨团队协作、版本管理与独立发布

A 跨团队协作靠契约测试与兼容矩阵治理,独立发布配门禁、灰度与配置级回滚,责任归属到团队 ✓ 正确答案
B 跨团队协作主要靠会议协调版本
C 契约测试只在联调阶段执行,不进入 CI
D 独立发布无需灰度,直接全量即可
#

14. 微前端中的常见问题与解决方案(样式冲突、全局污染)

A reset 样式由各子应用各自引入互不影响
B 全局变量同名覆盖只影响性能,不影响功能
C 样式冲突与全局污染通过构建期命名约束、运行时隔离与快照检测三层系统化治理 ✓ 正确答案
D CSS 变量是局部作用域,不存在跨应用覆盖
#

15. 微前端的鉴权统一——基座 SSO、子应用各自 token 与 SameSite Cookie 跨子域的取舍

A 子应用各自 token 可以保持完全一致的登录体验
B SameSite=None 的 Cookie 无需 HTTPS 也能跨子域共享
C 基座 SSO 统一体验但子应用依赖基座,Cookie 方案省传递代码但要求 HTTPS 且暴露面大,按信任域取舍 ✓ 正确答案
D 鉴权方案选择与部署拓扑无关
#

16. iframe 微前端的性能损耗(内存、IndexedDB 同源限制)

A iframe 有独立的渲染与网络开销,跨域时 IndexedDB 互不可见,需保活复用与存储分区策略 ✓ 正确答案
B iframe 的内存开销与数量无关
C 跨域 iframe 可以自由访问基座的 IndexedDB
D iframe 初始化成本为零,可随意创建销毁
#

17. 微前端主子应用的错误冒泡(错误向上抛 vs 各子应用独立 ErrorBoundary)

A 子应用错误边界只需覆盖渲染,无需处理异步错误
B 所有错误都应抛给基座统一处理
C 错误处理宜子应用内就近兜底并上报,基座只在整体不可用时兜底,崩溃不应级联冒泡 ✓ 正确答案
D 错误冒泡不会造成归属模糊
#

18. 微前端中的资产预加载策略——子应用 prefetch/preload 与 Speculation Rules 协作

A 框架预加载负责子应用产物,Speculation Rules 负责导航级预取/预渲染,二者互补并需去重与降级 ✓ 正确答案
B Speculation Rules 所有浏览器都原生支持,无需回退
C preload 适合预取将来才使用的资源
D 框架预取与浏览器预取会重复下载,无法去重
#

19. 微前端的发布灰度(A/B)与主子应用版本独立回滚的边界

A 回滚只需切换代码,无需保留旧版本产物
B 任意子应用可以随时独立回滚,无需考虑契约
C 灰度只按流量比例即可,无需用户分桶
D 灰度按用户分桶下发版本矩阵,回滚以矩阵快照整组执行,契约不兼容的联合变更不能单边回滚 ✓ 正确答案
#

20. Module Federation 2.0 的 @module-federation/enhanced 在 SSR 与多框架混用的现代工程

A React 与 Vue 子应用应共享同一个框架运行时实例
B 增强包只支持 webpack 构建
C SSR 场景无需关注双端依赖一致性
D @module-federation/enhanced 支持 Vite/Rspack 与 SSR,多框架混用按框架隔离、纯库共享、契约协作 ✓ 正确答案
#

21. 微前端中主子应用公共组件库(UI Kit)的共享方式(npm/Module Federation/external CDN)

A npm 包方式下各子应用天然共享同一版本
B npm 共享灵活但版本易漂移,MF 共享运行时统一但升级是全局变更,按升级节奏选型 ✓ 正确答案
C external CDN 支持按需加载与 tree-shaking
D MF 共享组件库升级只需个别团队验证
#

22. 微前端的统一监控(错误监控、性能监控、用户行为)上报与主子应用去重的工程边界

A 去重只需在展示层过滤,无需在采集层处理
B 每个子应用应初始化独立 SDK 以获得完整数据
C 相同事件重复上报不影响统计准确性
D 统一监控用单例 SDK 与事件去重键避免重复上报,同时保留多视角事件按指纹聚合 ✓ 正确答案
#

23. 微前端中 API 网关聚合 vs 子应用独立请求在 BFF 与 API composition 的取舍

A BFF 聚合减少往返并统一鉴权,但引入版本耦合,按团队边界与性能需求选择混合模型 ✓ 正确答案
B 子应用独立请求模型完全不需要鉴权处理
C 网关聚合后子应用可以随意调整页面结构而不影响聚合层
D BFF 只能用于 SSR,纯 CSR 场景不可用
#

24. 微前端主子应用的语言切换(i18n)——基座统一 vs 子应用独立的取舍

A 子应用独立语言包天然口径一致
B 语言切换只需刷新页面即可生效,无需事件机制
C 基座统一 i18n 体验一致但子应用独立性弱,子应用自管独立性强但需事件协议同步切换 ✓ 正确答案
D i18n 与部署模式无关,两种模型无差别
#

25. Module Federation 2.0 的 federationRuntime 与 runtimePlugins 在大型分布式前端工程价值

A 联邦运行时无需可观测性,出问题直接重启
B runtimePlugins 只能改加载逻辑,不能干预共享依赖
C federationRuntime 与构建器版本强绑定,无法独立升级
D federationRuntime 解耦运行时与构建,runtimePlugins 将超时重试、版本策略与监控统一为平台能力 ✓ 正确答案
#

26. Micro-Frontend 资源边界与独立部署时,性能预算(KPI、JS 体积)

A 独立部署下预算按激活路径总量控制、子应用单列配额,共享依赖只计一次并写入 CI 门禁 ✓ 正确答案
B 性能预算只统计每个子应用的独立体积即可
C 共享依赖应重复计入每个子应用的预算
D 预算管理与团队职责无关
#

27. 前端资源加载顺序与 HTTP/2 多路复用、HTTP/3(QUIC)

A HTTP/1.1 的连接限制在 HTTP/2 下仍然存在
B HTTP/2 多路复用消除连接排队,HTTP/3 消除传输层队头阻塞,加载顺序仍由依赖与关键路径编排决定 ✓ 正确答案
C 加载顺序与协议无关,纯由浏览器决定
D HTTP/3 使用 TCP 传输,与 HTTP/2 无差别
#

28. Bundle splitting 在 micro-frontend 下的 chunk 共享与子应用独立部署的取舍

A 微前端中跨应用共享宜交给 MF shared 运行时协商,应用内拆包用 splitChunks,兼顾独立部署与体积 ✓ 正确答案
B 构建期跨应用共享 chunk 完全兼容独立部署
C splitChunks 抽出的公共 chunk 可以跨独立部署单元任意引用
D 微前端不需要拆包,全部合并打包即可
#

29. 前端性能预算(Performance Budget)在 CI 阶段的硬约束与软告警阈值

A 体积类指标方差大,适合宽阈值
B 硬约束应设置极低阈值以最大化拦截
C 性能预算 CI 门禁用软告警与硬约束分级,基于基线设定阈值并治理口径与豁免流程 ✓ 正确答案
D 预算检查无需追踪历史趋势
#

30. Critical CSS 抽取在现代框架下的自动生成方案与运行时内联策略

A Critical CSS 只适用于纯静态页面,框架不可用
B 内联样式越多越好,不受体积预算约束
C 运行时计算 Critical CSS 零成本
D Critical CSS 可构建期抽取或运行时计算,关键样式内联、非关键异步加载,并平衡缓存与体积 ✓ 正确答案
#

31. Tree-shaking 在 monorepo(pnpm workspace)

A monorepo 共享包需以 ESM 多文件产物与 sideEffects 声明输出,配合 exports 精确入口让摇树生效 ✓ 正确答案
B pnpm 符号链接天然保证共享包可被摇树
C CJS 格式的共享包同样支持可靠摇树
D barrel 聚合导出是摇树的最佳实践
#

32. Subresource Integrity (SRI) 与 CDN 资源完整性校验在生产环境的工程取舍

A hash 失配时浏览器会忽略该资源继续加载
B SRI 对所有资源自动生效,无需 CORS
C SRI 校验资源完整性防 CDN 篡改,hash 随构建生成并需 CORS 支持,动态加载资源需运行时注入 ✓ 正确答案
D SRI 只适用于内联脚本,不适用于外部资源
#

33. 样式沙箱(scoped CSS 重写)的实现机制,选择器前缀添加与 CSS-in-JS 方案对比

A CSS-in-JS 可以作用域化第三方库的全局样式
B scoped CSS 改写可以覆盖所有 CSS 语法
C scoped CSS 通过改写选择器加容器前缀实现隔离,但 at-rule 与复杂选择器有覆盖边界;CSS-in-JS 以哈希类名作用域化但有运行时成本 ✓ 正确答案
D 两种方案机制相同,可完全互换
#

34. 多实例沙箱与单实例沙箱的切换策略,性能开销与隔离强度的工程权衡

A 多实例沙箱以代理值表支持应用并存但开销更高,单实例沙箱以快照还原实现、兼容性好,按场景选择 ✓ 正确答案
B 单实例沙箱天然支持多应用同屏
C 多实例沙箱不依赖 Proxy,兼容所有环境
D 两种沙箱的切换成本完全相同
#

35. 沙箱对 Web Worker、SharedWorker 等线程环境的代理边界与通信机制

A 沙箱的 Proxy 可以直接代理 Worker 内的全局作用域
B Worker 内全局独立于沙箱,沙箱通过拦截 Worker 创建、校验脚本来源与审计通信实施边界治理 ✓ 正确答案
C Worker 脚本可以指向任意外部地址,无需校验
D SharedWorker 的共享连接与源(origin)无关
#

36. 基于 Proxy 的 window 代理在严格模式(use strict)与 with 语句下的行为差异

A 严格模式禁用 with,沙箱需以非严格包装或脚本改写适配,且严格模式下未声明赋值会抛错 ✓ 正确答案
B 严格模式与 with 可以共存,无需处理
C 严格模式下未声明变量赋值会静默创建全局属性
D 沙箱执行包装不需要区分脚本是否严格模式
#

37. Performance API(PerformanceObserver)

A PerformanceObserver 以 buffered 选项回放早期条目并异步轻量处理,按 entryType 订阅各类性能数据 ✓ 正确答案
B PerformanceObserver 只能获取调用之后的条目,无法获取早期数据
C 轮询 getEntries 比 PerformanceObserver 更高效
D 所有 entryType 在所有浏览器中都可用,无需检测
#

38. Long Task API(longtasks)在 INP 优化中的诊断与分片策略

A 长任务只影响加载性能,与交互无关
B longtask 归因可定位 INP 瓶颈的具体脚本,分片、空闲调度与 Worker 迁移是主要优化手段 ✓ 正确答案
C longtask 条目不提供脚本来源信息
D 优化长任务只能靠提升硬件性能
#

39. 前端代码分割粒度(route / component / hook)

A 组件级分割适合所有组件,无论大小
B 分割粒度越细一定越好,无需考虑成本
C 路由级分割是默认选择,组件与 hook 级按体积和使用率补强,分割点应落在用户可感知的边界 ✓ 正确答案
D 路由级分割需要用户手动触发才生效
#

40. Web Vitals 上报到自建埋点 vs 第三方(GA、Sentry)

A 自建埋点数据主权与业务关联强但建设成本高,第三方开箱即用但数据在外部,宜分工组合并统一口径 ✓ 正确答案
B 自建埋点无法与业务数据关联
C 第三方平台提供原始数据的完全可控导出
D 双上报必然导致数据不一致,只能二选一
#

41. 微前端主子应用独立发布时的灰度、Feature Flag 与回滚一致性保障

A 回滚只切版本入口即可,无需处理 Flag
B 新功能上线只需发代码,Flag 随时可开
C 独立发布需把版本、Feature Flag 与灰度建模为统一发布对象,回滚时原子回退并处理数据与缓存 ✓ 正确答案
D 灰度与 Flag 完全独立,无需联动
#

42. 主应用在 Edge Runtime 完成 SSR、子应用再从独立域加载时,traceparent、tracestate、baggage 和业务 traceId 应如何跨 HTML、remoteEntry、fetch 与 Server Timing 透传,同时满足 CORS 和敏感字段限制

A baggage 可以携带用户 token 等敏感信息
B 子应用请求无需携带 trace 头,后端会自行关联
C SSR 生成的 HTML 携带 trace 上下文供子应用继承,跨域 fetch 需 CORS 放行 trace 头,baggage 只放非敏感标识 ✓ 正确答案
D CORS 不会影响自定义请求头的透传
#

43. 如何构造 Module Federation 共享依赖契约测试,覆盖宿主先加载、远程先加载、版本回滚和离线缓存旧 remoteEntry 等顺序,及时发现 invalid hook call、上下文断裂与单例状态分叉

A invalid hook call 与共享依赖的实例数量无关
B 契约测试只需在固定加载顺序下执行一次
C 共享契约测试按加载顺序与版本组合构造矩阵,断言依赖单例、协商结果与上下文完整性 ✓ 正确答案
D 离线缓存不会影响共享依赖的协商
#

44. 沙箱初始化性能优化,懒代理(lazy proxy)与快照 diff 还原的工程取舍

A 沙箱初始化成本与代理数量无关
B 懒代理在初始化时创建全部子代理
C 快照 diff 必须遍历 window 全部属性
D 懒代理按需创建子代理降低初始化成本,快照 diff 只记录变更降低切换成本,可组合使用 ✓ 正确答案