IndexedDB 删除数据库时无法删除会触发什么错误?
围绕“IndexedDB 删除数据库时无法删除会触发什么错误”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须答出可能因连接未关闭而触发 blocked。
浏览器面试题第 4 页,显示第 151–200 题,共找到 301 道完整解析,可继续按分类、标签与关键词缩小范围。
按稳定语义路径排序
围绕“IndexedDB 删除数据库时无法删除会触发什么错误”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须答出可能因连接未关闭而触发 blocked。
围绕“IndexedDB 中 getAll 和 getAllKeys 有什么区别”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确返回值包含值还是键。
围绕“IndexedDB 在某些隐私浏览模式下不可用,如何优雅降级”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须给出检测和备选内存存储方案。
围绕“IDBKeyRange 可以在哪些查询场景下使用”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须给出 between/only/outside 等边界查询,不覆盖游标方向。
围绕“IndexedDB 的主键和索引有什么区别”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确两者在查询和约束上的差别。
围绕“IndexedDB 中 autoIncrement 和 keyPath 能同时使用吗”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须给出可生成 key 但不作为 keyPath 的用法。
围绕“如何用 IndexedDB 实现对对象存储的增删改查”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须区分 add 和 put 的不同。
围绕“IndexedDB 中如何按条件批量删除旧数据”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕必须使用游标遍历并调用 delete。
围绕“如何将 IndexedDB 的请求式 API 封装成 Promise 形式”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕必须描述转换 IDBRequest 事件为 resolve/reject 的方法,不实现完整库。
围绕“IndexedDB 支持存储哪些类型的数据”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须列出 structured clone 支持范围(Blob、ArrayBuffer、对象等)及不支持的(函数、Symbol),不深入。
本文解释 IndexedDB 事务原子性的机制、触发回滚的条件和工程边界。明确任一操作失败默认回滚所有变更,但错误处理可阻止回滚,版本变更和崩溃场景需单独考虑。
围绕“IndexedDB 中 readwrite 和 versionchange 事务的作用域有什么不同”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须指出 versionchange 不受其他连接影响,readwrite 只在部分对象存储上。
围绕“IndexedDB 版本变更流程中 onupgradeneeded 的作用是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答要聚焦于如何定义对象存储结构和迁移。
围绕“localStorage 存储中 JSON 序列化和深层嵌套有什么问题”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须讨论性能与数据大小边界,以及备用方案。
围绕“在浏览器隐身模式下 localStorage 可能遇到什么限制”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须讨论写入可能被拒绝或配额为 0。
围绕“localStorage 的 setItem、getItem 和 removeItem 与直接属性赋值有什么差别”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明同名属性和保留字的问题。
围绕“为什么收到 storage 事件后获取 localStorage 可能不是最新值”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释事件异步引起竞争。
围绕“为什么 localStorage 的同步读写会阻塞主线程”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释同进程访问磁盘/数据库导致 JS 线程等待。
围绕“如何向浏览器申请永久性存储(persistent storage)”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 persist() 的调用和用户授权与自动授予条件。
围绕“如何检测浏览器当前可用存储空间和已用配额”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕用 Storage API 的 estimate() 返回 usage 和 quota。
围绕“当浏览器存储配额超限时,IndexedDB 会抛出什么错误”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须指出错误类型和监听 onabort/onerror。
本文解释sessionStorage生命周期与标签页的关系:刷新保留数据,关闭标签页清除;新标签页默认独立,window.open或复制标签页可继承初始快照。区分复制、新开、刷新三种操作对sessionStorage的具体影响并给出工程判断。
围绕“Storage Buckets API 能解决哪些存储配额管理问题”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明创建多个桶并为每个设置配额。
本题解释 storage 事件不触发原因:其设定是通知其他同源文档,改动页面自身不接收;同时说明 localStorage 和 sessionStorage 的事件范围差异,以及实现跨页同步时的注意事项。
围绕“浏览器对第三方 iframe 的 localStorage 和 Cookie 如何分区”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答访问可能被阻止或返回空,不深入特定浏览器策略。
围绕“当 localStorage 被清除时,storage 事件的 key 属性是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须明确整个 clear() 会触发 key 为 null 的事件。
围绕“使用 SharedArrayBuffer 进行多线程编程时,Atomics 对象提供哪些操作来避免竞态”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕列举原子操作如 add, compareExchange, wait 等,不深入实现。
本题解释 DedicatedWorkerGlobalScope 与 window 的关键差异:self 指向该作用域而非 window,postMessage 专门向父线程通信,close 终止 Worker。同时提及 DOM 缺失、requestAnimationFrame 可用等边界。
围绕“为什么使用 SharedArrayBuffer 需要启用跨源隔离(cross-origin isolation)”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖解释安全原因,以及必须用 COOP 和 COEP 响应头。
本题解释 Web Worker 不阻塞主线程的原因:独立线程与事件循环、结构化克隆消息通信,结合场景与边界说明其实践条件与限制。
围绕“Service(服务)Worker 的生命周期包括哪几个阶段?各阶段对应哪些事件”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕重点在 install/activate/fetch 等事件。
围绕“Service(服务)Worker 如何与打开的页面进行双向通信”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕通过 postMessage 与 Client 交互。
围绕“Service(服务)Worker 的 fetch 事件如何拦截并处理页面发出的网络请求”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖解释 respondWith 的方法与缓存策略的基础,不深入到 Cache API。
围绕“当 Service(服务)Worker 的脚本文件更新时,浏览器如何决定是否启用新版本”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要比较脚本内容变化与 skipWaiting。
围绕“SharedArrayBuffer 在 Worker 之间共享内存时,它的内存可见性如何保证”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明需要 Atomics 进行同步,且需要跨源隔离上下文。
围绕“共享 Worker 如何向它所有的连接端口广播消息”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕遍历 ports 或用 MessageChannel 的替代。
共享 Worker 的核心是重复使用同一线程,多个客户端用独立的 MessagePort 相连。本文讲解连接流程、端口激活和 worker 生命周期,并指出常见坑。
围绕“用 SharedWorker 时,客户端通过 port 的 postMessage 与 onmessage 通信,需”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕必须调用 port.start() 或设置 onmessage。
本题解释 Transferable 对象(如 ArrayBuffer)在 Worker postMessage 中的零拷贝传递原理:共享所有权转移而非复制,原上下文对象被分离;对比结构化克隆,突出性能与安全优势,并给出使用边界和一些可转移对象类型。
讲解浏览器中专用 Worker、共享 Worker、Service Worker 三类线程的职责、生命周期差异,给出选型条件、常见误用边界与判断方法。
围绕“BroadcastChannel 和 SharedWorker 在跨标签页通信上有什么不同”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕广播频道与共享 worker 的数据缓存和生命周期对比。
围绕“两个消息在 Worker 和主线程之间发送时,它们的到达顺序能保证吗”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖消息按发送顺序传递,但注意不同通道(如 port1 和 port2)的顺序。
围绕“在 Worker 中使用 console.log 的输出会显示在浏览器开发者工具哪里”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕在 DevTools worker 上下文中查看。
围绕“postMessage 传递不可克隆的对象(如函数、DOM 节点)时会怎样”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕触发异常及检查,不涵盖 HTML 规范。
围绕“在一个 Worker 中的全局变量能否在多个消息任务之间共享”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕强调 Worker 每次消息处理之间变量会保留。
围绕“Worker 之间互相等待消息时可能出现死锁吗?如何避免”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕事件驱动通常无锁,但需要避免无限等待。
围绕“如何检测浏览器是否支持某个 Worker 特性(如 SharedWorker 或 SharedArrayBuffer”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕通过 typeof 或 条件判断。
围绕“Worker 内部抛出的异常如何传递到主线程并被捕获”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕事件 error 与 messageerror 的区别。
围绕“在 Worker 中抛出的 Promise 拒绝会不会触发全局错误事件”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕未处理的 Promise 在 worker 中也触发 unhandledrejection。
围绕“Worker 里的事件循环和主线程的事件循环是完全独立的吗”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕每个独立全局都有独立事件循环,说明不会相互阻塞。