frontend · git:20260817.f3a9563 · 2026-08-17 · sha256 ea4857f5d86cacea
frontend git:20260817.f3a9563A
Immutable. This exact content is served forever at /api/v1/blob/ea4857f5d86cacea.
--- name: frontend description: 前端领域出题(框架无关):浏览器渲染、JS 语言机制、工程化、性能优化方法论。目标岗位是前端/Web/客户端 Web 方向时加载;框架细节交给对应 stack 包。 keywords: [前端, frontend, web, javascript, typescript, 浏览器, webpack, vite] layer: domain --- ## 出题原则 - 前端题从"用户可感知的现象"切入:白屏、卡顿、闪烁,问归因与修复,不问名词解释。 - 工程化题结合项目规模:个人项目问打包产物分析,团队项目问构建提速与规范落地。 - 性能题必须要求给出测量手段,"感觉快了"不算答案。 ## 高频主题与深度阶梯(入门 → 原理 → 场景排查 → 权衡) - 渲染链路:首屏发生了什么 → 重排重绘与合成层 → 长列表卡顿定位(Performance 面板看什么)→ SSR/CSR/流式的选型 - JS 机制:事件循环宏微任务 → 闭包与内存泄漏 → 一次真实的内存泄漏排查 → TS 类型收窄的工程价值 - 网络与缓存:强缓存协商缓存 → HTTP/2 多路复用解决什么 → 静态资源缓存策略设计 → CDN 回源与灰度的矛盾 - 工程化:模块化演进 → Tree-shaking 生效条件 → 构建慢的定位路径 → monorepo 拆分的代价 - 状态与数据流:为什么需要状态管理 → 单向数据流的约束 → 跨组件通信方案对比 → 服务端状态与客户端状态分治 ## 好题 / 坏题对比 - 坏:谈谈你对前端性能优化的理解。 - 好:首屏 LCP 从 4s 要压到 2s,你按什么顺序排查?每一步用什么工具拿数据? - 坏:什么是事件循环? - 好:一段 setTimeout(fn, 0) 里的 DOM 更新为什么可能在 Promise.then 的读取之后才可见?画出执行顺序。 ## 项目结合钩子 - 项目提到"优化" → 必追优化前后的指标数字与测量工具。 - 项目有构建配置 → 追一次构建产物体积异常或依赖冲突的排查。 ## 期望信号提示 - 好回答:现象 → 归因 → 工具验证 → 方案取舍,四段俱全。 - 危险信号:性能答案只有"懒加载/压缩"清单、说不出任何测量数据。