1. JavaScript
- 基本数据类型 (7种)
- this 的指向 (new, 隐式绑定, 显式绑定)
- Function 的 call, apply, bind 方法
- Promise, eventloop, 宏任务和微任务
- 闭包 (概念, 用途, 手写)
- 原型链
- 继承 (extends, 原型链继承, 构造函数继承, 组合继承, 寄生组合继承)
- 深拷贝和浅拷贝
- 事件冒泡/捕获, 事件委托, 阻止冒泡, 哪些事件不能冒泡
- sort() 的复杂度
2. 浏览器
- 回流和重绘
- http 缓存, 协商缓存
- cookies, sessionStorage, localStorage
- 跨域问题
3. CSS
- 盒子模型, 怪异盒子
- float, 清除浮动
- 垂直居中的方法
- flow, absolute, relative, sticky
- flex
- 样式优先级
4. HTML
- 块元素, 行内元素
- 语义化标签: header, section 等
- 异步加载JS文件: defer 和 async
5. Vue
- 响应式原理 (Vue2 和 Vue3)
- 生命周期, 父子生命周期的顺序
- 组件通信: props, $emit 等
- vuex: action 和 mutation
- diff 原理
- v-if 和 v-show
- data 为什么是一个函数
- computed 和 watch
- mixin mixin 的缺陷
- 异步组件, keep-alive
- 路由, history模式
6. React
7. 前端工程化
- bebal 原理
- 模块化方案: ES6 和 commonJS
8. 计算机网络
- http: 数据包的构成, 状态码, http2 和 http3, https
- tcp 和 udp, tcp 握手和挥手
- OSI参考模型
9. 手写代码
- 事件委托
- promise 的 all() 和 race()
- 数组的 call(), apply(), bind()
- 实现 new 方法
- 防抖和节流
- 快排, 冒泡排序
- 二分查找, 二分插入
- 数组去重
- 深拷贝
- 深度/ 广度优先遍历
- 正则表达式
- 复杂度分析