原文链接: https://interview.poetries.top/docs/base/high-frequency.html
一天快速复习完高频面试题
高频篇
简版速记
面试前最后一眼能扫完的高频要点。详细展开见下方对应小节。
CSS
- 盒模型:标准
content-box(width只含内容)vs 怪异border-box(width含padding+border),用box-sizing切换。 - BFC:独立渲染区域,触发条件
overflow:hidden/auto、float、position:absolute/fixed、display:flex/grid/inline-block;用途:清浮动、防 margin 重叠、自适应两栏。 - 选择器权重:
!important> 行内(1000) > id(100) > class/属性/伪类(10) > 元素/伪元素(1)。 - 居中:
flex(justify-content/align-items: center)或position + transform: translate(-50%,-50%)或grid+place-items:center。 - 单位:
px绝对、em相对父字号、rem相对根字号、vw/vh相对视口。 - 隐藏元素:
display:none(不占位、不可交互)、visibility:hidden(占位、不可交互)、opacity:0(占位、可交互)。
JavaScript
typeof:除null(返回'object',历史 bug)外能区分基本类型;引用类型一律'object',函数返回'function'。判类型用Object.prototype.toString.call()。- 闭包:函数 + 其词法作用域,常见于柯里化、防抖节流、模块私有变量;注意循环中用
let或 IIFE 避免引用同一变量。 - 原型链:实例
__proto__→ 构造函数prototype→Object.prototype→null。 - 事件循环:同步栈清空 → 微任务(
Promise.then/queueMicrotask/MutationObserver)全清 → 一个宏任务(setTimeout/setInterval/事件)→ 再清微任务,循环往复。 this:普通函数看调用者,箭头函数继承定义时外层this(无自己的this/arguments)。
浏览器 / 网络
- 存储:
cookie(4KB,随请求带)、localStorage(5M,持久)、sessionStorage(5M,关页清)、IndexedDB(大);cookie安全位HttpOnly/Secure/SameSite。 - 缓存:强缓存
Cache-Control(优先) /Expires不发请求;协商缓存ETag/If-None-Match、Last-Modified/If-Modified-Since命中返回 304。 - 跨域:CORS(主流)、
Nginx反代、同源postMessage;JSONP 已基本淘汰。 - XSS 用
CSP+转义+HttpOnly防;CSRF 用SameSite+Token 防。 - 渲染流程:DNS → TCP → 请求 → 解析 HTML 建 DOM、CSS 建 CSSOM → Render Tree → Layout → Paint → Composite。
Vue
- Vue2 响应式:
Object.defineProperty劫持 getter/setter,数组靠重写七个方法,新增属性需Vue.set。 - Vue3 响应式:
Proxy代理整个对象,天然支持新增/删除属性和数组下标。 - diff:同层比较 + key 复用;
v-for必须加稳定key,别用 index。 - Vue3 比 Vue2 快:编译期
PatchFlag标记动态节点、hoistStatic静态提升、cacheHandler缓存事件、Tree-shaking。
React
- JSX 编译为
React.createElement(React 17+ 走jsxruntime)生成 vdom。 setState:合成事件/生命周期中异步批处理;React 18 起automatic batching覆盖setTimeout/原生事件/Promise。- Hooks 规则:只在顶层调用、只在 React 函数中调用;
useEffect注意依赖数组与闭包陷阱、清理函数。 - 性能:
React.memo、useMemo/useCallback、列表稳定key、useTransition/Suspense。
工程化 / HTTP
- Webpack:
loader转换文件、plugin扩展构建生命周期;优化用splitChunks、Tree-shaking、按需加载。 - Vite 启动快:开发期基于浏览器原生 ESM 免打包、
esbuild预构建依赖;生产用 Rollup 打包。 - HTTP:1.0 短连接 → 1.1 长连接+管线 → 2.0 多路复用+头压缩+服务端推送 → 3.0 基于 QUIC(UDP) 解决队头阻塞。
- 状态码:301 永久/302 临时重定向、304 未修改、401 未授权/403 禁止、404 未找到、500 服务器错、502 网关坏/504 网关超时。
手写高频
- 防抖(最后一次触发后 N 毫秒执行)、节流(N 毫秒内只执行一次)、深拷贝(处理循环引用+各类型)、
new/call/apply/bind、柯里化、Promise、发布订阅、LRU、数组扁平化。
