# 1. IndexedDB 在 PWA 离线数据存储的工程价值 A IndexedDB 适合存小字符串键值 B IndexedDB 与 localStorage 容量相同 C IndexedDB 的读写是同步的 D IndexedDB 存结构化数据并提供事务与索引查询,是离线数据底座,但 API 异步、事务生命周期与容量需治理 ✓ 正确答案
# 2. Push API(VAPID 密钥、订阅推送、Notification 权限) A 订阅时不需要 Notification 权限 B payload 明文传输 C VAPID 私钥可以放在前端 D Push 链路为 VAPID 密钥签名、订阅(userVisibleOnly+公钥)、服务端推送、SW push 事件,私钥必须保密 ✓ 正确答案
# 3. App Shell 模型与离线 fallback 页面 A App Shell 指所有页面内容都预缓存 B App Shell 预缓存静态外壳保证壳离线可用,内容按需加载,离线时导航返回预缓存的 fallback 页面 ✓ 正确答案 C fallback 页面不需要预缓存 D 离线时只能显示浏览器错误页
# 4. Web Push 的完整工作流,应用服务器用 VAPID 签名(RFC 8292)、经推送服务投递、payload 加密(RFC 8291)与 Service Worker 解密 A payload 是明文传输的 B 推送服务不校验订阅有效性 C VAPID 公钥不需要随请求提供 D 应用服务器用 VAPID 私钥签 JWT(RFC 8292)、用订阅公钥加密 payload(RFC 8291),浏览器在 SW push 事件中解密 ✓ 正确答案
# 5. PushSubscription 的生命周期管理(subscribe/unsubscribe)与 pushsubscriptionchange 事件的过期续订处理 A 订阅创建后永久有效 B 服务端不需要保存订阅记录 C pushsubscriptionchange 与推送无关 D 订阅可能因过期/迁移失效,pushsubscriptionchange 中重新订阅并同步服务端,unsubscribe 需联动清理记录 ✓ 正确答案
# 6. Periodic Background Sync 与一次性 Background Sync 的差异、注册条件与浏览器兼容现状 A 周期同步与一次性同步触发时机相同 B 周期同步注册无条件限制 C 一次性同步在联网后尽快触发,周期同步需安装、参与度与授权且尽力而为,Safari 支持有限需降级策略 ✓ 正确答案 D 所有浏览器都支持两类同步
# 7. 数据同步冲突处理与离线读写策略 A 冲突处理需版本元数据与仲裁策略(LWW/版本向量/合并),离线写用幂等队列重放,读用缓存优先 ✓ 正确答案 B LWW 策略没有误覆盖风险 C 离线写入可以无条件覆盖服务端 D 同步不需要幂等设计
# 8. Service Worker 的 push 事件中展示 Notification 与 click 事件导航打开目标页的处理 A 点击通知会自动打开应用首页 B 通知 data 可以放任意大内容 C push 事件内 showNotification 展示通知,notificationclick 中优先聚焦已开窗口导航,否则 openWindow 打开 ✓ 正确答案 D 通知展示不需要 waitUntil
# 9. 推送权限申请的 UX 时机与两步确认(pre-permission prompt)模式对转化率的影响 A 权限弹窗可以反复弹出直到用户同意 B 被拒绝后没有补救方案 C 申请时机不影响转化率 D 权限弹窗一次性且不可重来,应先做页面内引导(两步确认)再触发系统弹窗,并用埋点优化申请时机 ✓ 正确答案
# 10. iOS Safari Web Push(16.4+)的限制(需添加到主屏幕、仅 standalone)与适配策略 A iOS Safari 标签页即可使用 Web Push B iOS Web Push 需先添加到主屏幕且 standalone 模式,需引导安装后申请权限,并对未安装用户提供降级 ✓ 正确答案 C iOS 推送与 Android 推送行为完全一致 D iOS 不需要用户授权即可推送
# 11. 推送消息 payload 大小限制与静默推送(data-only push)唤起页面执行后台任务的取舍 A payload 可以携带任意大小内容 B payload 有约 4KB 上限,静默推送受限且浏览器治理滥用,推送应传信号、内容按 id 拉取 ✓ 正确答案 C data-only 推送可以无限制后台执行 D 静默推送不需要展示通知
# 12. Badging API(navigator.setAppBadge)在已安装 PWA 的角标更新 A Badging API 在普通标签页也可用 B 角标只能由页面更新 C setAppBadge 更新已安装 PWA 的图标角标,需统一数据源并在推送/阅读时同步,平台支持差异需降级 ✓ 正确答案 D 所有平台都支持角标
# 13. 离线优先策略与 stale-while-revalidate 在大型 SPA 的离线体验工程价值 A SWR 策略每次强制走网络 B 离线优先会让数据永远过期 C 离线优先分壳/数据/操作三层,数据层用 SWR 先缓存后更新,需版本化缓存并治理敏感数据 ✓ 正确答案 D SWR 不需要请求合并
# 14. PWA 可观测性与崩溃恢复 A SW 内部无法采集指标 B PWA 可观测性覆盖页面/SW/推送三层,缓存与 SW 异常需自愈机制(重建、重注册)并纳入告警 ✓ 正确答案 C 缓存损坏无法修复 D 崩溃恢复只依赖浏览器
# 15. IndexedDB 游标与事务在离线优先(Offline First) A 游标一次性返回全量数据 B 事务可以在中间任意等待网络 C 游标用于分页遍历与范围查询,事务保证批量写原子性,事务内不能跨异步操作且需控制时长 ✓ 正确答案 D 索引越多性能越好
# 16. 用户订阅状态与服务端记录的多端同步、失效订阅清理的工程实践 A 一个用户只能有一条订阅记录 B 退出登录不需要清理订阅 C 订阅记录按用户身份绑定支持多端管理,推送服务返回 410 表示失效需清理,操作需幂等 ✓ 正确答案 D 失效订阅可以无限重试
# 17. Background Sync 的重试机制与网络状态(sync 事件在网络恢复后重触发)的协作 A sync 事件由页面 online 事件触发 B 同步任务不需要幂等设计 C 重试次数没有限制 D 浏览器在网络恢复时触发 sync 事件,失败可重排队但有限制,需结合前台刷新兜底并保证幂等 ✓ 正确答案