PWA 与 Service Worker 核心机制
Service Worker 是浏览器里唯一能拦截网络请求的"可编程代理"。讲透它的生命周期、更新机制、 fetch 与缓存策略,以及为什么用户总能看到旧版本页面。
Service Worker 是浏览器里唯一能拦截网络请求的"可编程代理"。讲透它的生命周期、更新机制、 fetch 与缓存策略,以及为什么用户总能看到旧版本页面。
从容器接入方式到离线包的拦截、增量更新、灰度与降级链路:为什么"不发版改页面"这句承诺, 真正难的不是桥,而是资源分发。
WebView 里到底跑着什么、JS 和原生为什么不能直接互调、三条桥通道各自"为什么能工作、什么情况下 会静默失效",以及回调 ID / 队列 / ready 时序这些工程细节的机制来源。
1px 线为什么在 Retina 上变粗、安全区变量为什么取出来全是 0、点击为什么有延迟和穿透、 弹窗后面的页面为什么会跟着滚——四类移动端细节题的成因、可落地写法和两个插件实测陷阱。
移动端适配只解决一件事:把设计稿上的 px 映射成随屏幕变的单位。文章把三层视口、 设备像素比、rem 与 vw 两条换算链路的公式、以及两个 PostCSS 插件的真实默认值 摆在一起(含实测产物),最后给一套按屏幕形态选方案的判断顺序。
图表库面试就考两件事:数据怎么变成屏幕上的像素,以及大屏卡了从哪一层查。 文章把「模型 → 数据 → 坐标系 → 图元 → 渲染器」这条链路说清,给出 ECharts 采样 / 渐进渲染 / large 模式的真实默认值与生效条件, 再给一套能当场复述的分层定位清单。
WebGL 面试不考你写多炫的 shader,考三件事:管线怎么流、为什么样板代码那么多、 Three.js 帮你省了哪几步又留下了哪些坑。文章把管线五步、GLSL 两版差异、 场景图三件套、拾取与实例化、以及 GPU 资源为什么必须手动释放一次说清。
选型题考的不是"你背过几张对比表",而是你能不能说清四个约束:元素数量与更新频率、 单元素交互与可访问性、无损缩放、像素级能力。文章给一套可以当场复述的决策顺序, 外加三种真实项目里的混合方案,和换渲染器之前该做的准备。
Canvas 面试的得分点不在你会画几个图形,而在你懂"立即模式"这个模型: 没有对象、没有事件、画完就忘,一切状态都得自己管。文章讲清坐标系与设备像素、 路径模型、save/restore 状态栈、1px 线为什么糊、命中检测、以及高 DPI 与性能清单。
面试常问"scoped 怎么实现样式隔离",多数人只会背"加个 data-v 属性"。 其实它拆成两半:编译期用 PostCSS 给每个选择器后缀加 [data-v-xxx],运行时靠组件的 __scopeId 在挂载元素时把属性写上去。文章带真实编译产物、选择器变形全量实测表 (含 :deep / :slotted / :global / :root / @keyframes 的坑)和属性落点规则。