一、HTML & CSS
- 盒模型:标准盒模型 vs IE盒模型,
box-sizing的作用? - BFC:什么是BFC?如何创建?解决什么问题?
- Flex/Grid布局:常用属性,垂直居中实现方案。
- CSS选择器优先级:计算规则,
!important的影响。 - 重绘与重排:区别,如何减少重排?
- 响应式设计:rem/em/vw/vh 区别,移动端适配方案。
- CSS3新特性:动画、过渡、阴影、滤镜等。
二、JavaScript
基础
-
闭包:定义、应用场景、内存泄漏风险。
-
原型与原型链:
prototype、__proto__、new的过程。 -
作用域与作用域链:变量提升、暂时性死区。
-
this指向:不同场景下的
this值,如何修改? -
事件循环:宏任务 vs 微任务,Promise/async/await 执行顺序。
-
ES6+ 新特性:
- let/const、箭头函数
- Promise、async/await
- 模块化(import/export)
- 解构赋值、扩展运算符
- Proxy/Reflect
-
类型判断:
typeof、instanceof、Object.prototype.toString.call()
异步
- Promise:手写 Promise、Promise.all/race/allSettled 区别。
- 事件机制:事件冒泡与捕获,事件委托。
三、浏览器
- 渲染流程:从输入URL到页面展示的过程。
- 本地存储:Cookie、LocalStorage、SessionStorage、IndexedDB 区别。
- 跨域:原因、解决方案(CORS、JSONP、代理等)。
- 安全:XSS、CSRF 的原理与防御。
- 缓存机制:强缓存、协商缓存,HTTP 缓存头。
四、框架相关(React/Vue 选一)
React
- 生命周期:类组件与函数组件(useEffect)的生命周期对应。
- Hooks:useState、useEffect、useCallback、useMemo 的区别与使用场景。
- 虚拟DOM与Diff算法:React 的调和过程。
- 状态管理:Redux/Mobx 原理,Context API 使用。
- 性能优化:React.memo、useMemo、懒加载、代码分割。
Vue
- 响应式原理:Vue2(Object.defineProperty)vs Vue3(Proxy)。
- 生命周期:各个阶段及其用途。
- 组件通信:props/$emit、provide/inject、vuex/pinia、eventBus。
- 虚拟DOM与Diff算法:Vue 的更新策略。
- Composition API:与 Options API 对比,setup 使用。
五、工程化
- 模块化:CommonJS、ES Module、AMD 的区别。
- 打包工具:Webpack 核心概念(loader、plugin、HMR、代码分割)。
- 版本控制:Git 常用命令,分支管理策略。
- CI/CD:流程理解,常用工具(Jenkins、GitHub Actions)。
六、性能优化
- 加载优化:懒加载、预加载、分包策略、CDN。
- 渲染优化:防抖节流、虚拟列表、SSR/NSR。
- 缓存策略:HTTP 缓存、Service Worker、PWA。
- 监控指标:FP/FMP/FCP、LCP、CLS 等 Web Vitals。
七、手写代码
- 实现 Promise:支持 then/catch/all/race。
- 函数柯里化:
curry(add)(1)(2)(3)() - 数组扁平化:
flat(arr, depth) - 深拷贝:处理循环引用、特殊类型。
- 防抖与节流:场景与实现。
- 发布订阅模式:EventEmitter。
- 手写 call/apply/bind:改变 this 指向。
- DOM Diff 算法:简化版 Virtual DOM 对比更新。