JavaScript
变量类型和计算
-
内置类型
-
typeof
-
类型转换
- 转Boolean
- 对象转基本类型
- 四则运算符
- ==操作符
- 比较运算符
原型与原型链
-
new
-
instanceof
闭包和作用域
-
执行上下文
-
this
-
call, apply, bind区别
- 模拟实现call和apply
异步和单线程
其它
-
日期
-
Math
-
常用API
JS-Web-API
-
DOM
-
BOM
ES6
深浅拷贝
-
浅拷贝
-
深拷贝
模块化
-
CommonJS
-
AMD
防抖
节流
继承
Promise实现
Generator实现
Map、FlapMap和Reduce
async和await
Proxy
为什么0.1 + 0.2 != 0.3
正则表达式
-
元字符
-
修饰语
-
字符简写
Browser
事件机制
- 事件触发三阶段
- 注册事件
- 事件代理
跨域
- JSONP
- CORS
- document.domain
- postMessage
Event loop
- Node中的Event loop
- 浏览器中的Event loop
存储
- cookie, localStorage, sessionStorage, indexDB
- Service Worker
渲染机制
- Load和DOMContentLoaded区别
- 图层
- 重绘(Repaint)和回流(Reflow)
- 减少重绘和回流
Performance
网络相关
-
DNS预解析
-
缓存
-
强缓存
-
协商缓存
- Last-Modifhed和If-Modifhed-Since
- ETag和If-None-Match
-
选择合适的缓存策略
-
-
使用HTTP/2.0
-
预加载
-
预渲染
优化渲染过程
- 懒执行
- 懒加载
文件优化
-
图片优化
- 计算图片大小
- 图片加载优化
-
其他文件优化
-
CDN
其他
- 使用Webpack优化项目
- 监控
Safety
XSS
- 如何攻击
- 如何防御
- CSP
CSRF
-
如何攻击
-
如何预防
- SameSite
- 验证Referer
- Token
密码安全
- 加盐
Framework
通识
-
MVVM
- 脏数据检测
- 数据劫持
- Proxy与Obeject.defineProperty对比
-
Virtual Dom
- 为什么需要Virtual Dom
- Virtual Dom算法简述
- Virtual Dom算法实现
Vue
- 生命周期分析
- NextTick原理分析
React
- 生命周期分析
- V16 生命周期函数用法建议
- setState
- Redux源码分析
Network
UDP
- 不可靠性
- 面向报文
- 高效
- 传输方式
TCP
-
头部
-
状态机
- 建立连接三次握手
- 断开链接四次握手
-
ARQ协议
- 停止等待ARQ
- 连续ARQ
- 累计确认
-
滑动窗口
- Zero窗口
-
拥塞处理
- 慢开始算法
- 拥塞避免算法
- 快速重传
- TCP New Ren改进后的快恢复
HTTP
- Post和Get的区别
- 常见状态码
- HTTP首部
HTTPS
- TLS
HTTP 2.0
- 二进制传输
- 多路复用
- Header压缩
- 服务端Push
- QUIC
DNS
从输入URL到页面加载完成的过程
DataStruct
栈
队列
链表
树
Trie
并查集
堆
Algorithm
时间复杂度
位运算
- 左移<<
- 算数右移>>
- 按位操作
排序
- 冒泡排序
- 插入排序
- 选择排序
- 归并排序
- 快排
- 堆排序
- 系统自带排序实现
链表
- 反转单向链表
树
- 二叉树的先序,中序,后序遍历
- 中序遍历的前驱后继节点
- 树的深度
动态规划
- 斐波那契数列
- 0-1背包问题
- 最长递增子序列