核心判断

  • 前端八股不是题库目录,而是一套面试中反复考察的「基础概念 → 实现机制 → 工程应用」知识索引。
  • 复习优先级应从高频基础概念开始,再进入框架、工程化与手写题;每个题目都要能落到一个可复用的概念卡片或实现卡片。
  • 复杂手写题不只考记忆,还要能说明边界条件、测试用例和为什么这样实现。

这个主题要回答的问题

  • 面试官通常借前端八股判断哪些底层能力:语义化、布局、类型系统、原型机制、异步、网络、浏览器安全还是工程化?
  • 哪些题目只是需要快速回忆,哪些题目需要沉淀为可复用的实现机制卡片?
  • 遇到手写题时,如何从「能写出来」推进到「能说明边界和测试」?

主题结构

  • HTML 负责页面结构语义:重点不是标签背诵,而是能解释结构对可访问性、SEO 和维护性的影响。
  • CSS 负责布局与渲染规则:盒模型、外边距、BFC、定位、对齐和响应式布局共同决定页面如何被排布。
  • JavaScript 负责语言机制与运行时行为:类型判断、相等比较、值与引用、原型链、深拷贝和数组判断是高频基础。
  • 框架与工程化负责把基础机制组织成项目能力:React 面试主线Webpack 构建主线和项目设计问题应放在更大的工程语境中理解。
  • 网络与浏览器原理负责解释运行环境:HTTP 状态码、虚拟 DOM、Diff、XSS 等问题连接了协议、渲染、安全和性能。
  • 手写题负责检验抽象与边界意识:Promise、深比较、instanceof、new 等实现题都要补充测试思路。

相关概念 / 下层卡片

高频 20

HTML

  • 语义化的价值在于让结构能被机器和协作者理解:HTML 语义化
  • 元素分类影响默认布局行为,但面试时更应说明块级、行内与语义标签的使用场景:HTML 元素分类

CSS

  • 盒模型决定元素尺寸计算,是布局问题的起点:盒模型宽度计算
  • margin 的折叠和负值会改变元素之间的空间关系:margin 规则
  • BFC 是隔离布局影响、处理浮动和 margin 折叠的重要机制:BFC 机制
  • float、flex 和响应式布局仍需补成独立卡片,用来覆盖传统布局、现代布局和多端适配。
  • 定位问题应围绕包含块和定位上下文来回答:CSS 定位机制
  • 居中不是单个技巧,而是一组由布局上下文决定的对齐策略:CSS 对齐策略
  • 行高、继承和图文排版共同影响文本布局细节:图文样式规则

JavaScript

  • 类型判断要区分 typeof、instanceof、Object.prototype.toString 和特殊值边界:JS 类型判断
  • 相等比较考察隐式转换风险,实践中应优先使用严格相等:相等比较规则
  • 值类型与引用类型的差异解释了赋值、比较和函数传参的很多现象:值与引用机制
  • 深拷贝题的关键不是递归本身,而是循环引用、特殊对象和原型等边界:深拷贝实现
  • 数组判断、class 的原型本质和简易 jQuery 仍值得拆成可复用的机制卡片。
  • 原型相关问题可优先接入已有卡片:原型链机制

框架、工程化与渲染

  • React 面试题应进入框架心智模型,而不是散落在基础题中:React 面试入口
  • Webpack 面试题应围绕构建流程、loader、plugin 和性能优化展开:Webpack 工程化入口
  • 虚拟 DOM 的重点是用 vnode 和 patch 支撑数据驱动视图:虚拟 DOM 的存在理由
  • Diff 算法要讲清 key 与同层比较的约束,不必深究 updateChildren 的全部细节:Diff 的核心约束
  • 项目设计题暂时保留为待补入口,后续可按「架构取舍、状态管理、性能、安全、协作」拆成 Map 或 Thing。

网络、浏览器与安全

  • HTTP 状态码应按语义分类记忆,而不是背零散数字:HTTP 状态码分类
  • XSS 的核心是恶意脚本进入并执行,防护要从输入、输出和执行环境同时考虑:XSS 原理与防护

手写题

  • 手写 Promise 要能解释状态流转、then 链式调用和异步调度:Promise 实现机制
  • 深比较题的重点是类型分支、递归结构和循环引用处理:深比较实现
  • instanceof 的实现要回到原型链查找规则:instanceof 实现
  • new 的实现要说明对象创建、原型连接、this 绑定和返回值规则:new 实现机制

暂时结论

  • 这张 Map 目前应作为前端面试知识的总入口:已经有 Thing 的题目放进链接索引,尚未沉淀的高频题先保留为待拆主题。
  • 下一步最值得补的卡片是:float 布局、flex 布局、响应式布局、数组判断、class 的原型本质、简易 jQuery、项目设计题的拆解框架。