[TOC]
# 算法&数据结构
## 算法的基础知识
* 输入、输出和数据级
* 计算能力的变革
* CPU、寄存器和内存
* 二分查找
* 插入排序](javascript:;)
* 冒泡排序
## 算法的衡量和优化
* 时间复杂度和空间复杂度
* 复杂度的本质
* 递归函数复杂度分析
* 递归表达式分析法
* 递归数学归纳法分析
* 主定理
## 算法的分析方法
* 内存/CPU/线程/进程/缓存
* map/reduce\\笛卡尔积的时间复杂度
## 排序算法
* [1. 排序算法介绍](javascript:;)
* [2. 基于比较的排序算法](javascript:;)
* [3. 合并排序/优化和分治策略排序](javascript:;)
* [4. 快速排序](javascript:;)
* [5. 快速排序复杂度和优化](javascript:;)
* [6. 计数排序](javascript:;)
* [7. 基数排序](javascript:;)
* [8. 桶排序](javascript:;)
* [9. 外部排序](javascript:;)
## 数据结构
* [1\. 数组](javascript:;)
* [2\. 双向链表](javascript:;)
* [3\. 反转单向链表](javascript:;)
* [4\. 堆](javascript:;)
* [5\. 栈](javascript:;)
* [6\. 队列](javascript:;)
## 进阶算法
* [1\. 动态规划的概念](javascript:;)
* [2.LCS 问题的子结构](javascript:;)
* [3\. 填表法](javascript:;)
* [4\. 构造结果](javascript:;)
## BAT 面试真题
* [1\. 反转二叉树](javascript:;)
* [2\. 解析 query 字符串](javascript:;)
* [3\. 取 N 个数字为 M](javascript:;)
* [4\. 火车排序问题和队列](javascript:;)
* [5\. 网格走法动态规划](javascript:;)
* [6\. 两个栈实现一个队列](javascript:;)
+ 二叉树搜索算法
+ 青蛙跳台阶问题-动态规划算法
+ React虚拟DOM Diff算法实现
## 前端数据处理
* [1.前端处理数据的场景](javascript:;)
* [2.数据的流处理(map/reduce/filter/zip/flatten/permuations…)](javascript:;)
* [3.排序和分组](javascript:;)
* [4.函数式编程库Ramda](javascript:;)
* [5.倒排表和笛卡尔积](javascript:;)
## 递归
* [1.分段函数](javascript:;)
* [2.斐波那契数列、数组的flatten、全排列](javascript:;)
* [5.深拷贝/深比较](javascript:;)
* [4.DOM遍历/DOM的查询(CSS选择器)的实现](javascript:;)
* [1. 递归的基本概念](javascript:;)
* [2. 递归图形的绘制](javascript:;)
* [3. 递归和穷举问题](javascript:;)
* [4. 组合问题](javascript:;)
* [5. 递归空间优化](javascript:;)
* [6. 回溯算法](javascript:;)
* [7. 重复子问题优化](javascript:;)
* [8. 尾递归](javascript:;)
* [9. 搜索问题 (8 皇后)](javascript:;)
* [10. 深度优先搜索和广度优先搜索](javascript:;)
## 字符串算法
* [1.KMP算法](javascript:;)
* [2.正则表达式高级应用](javascript:;)
* [3.构建模板引擎原理](javascript:;)
* [4.路由解析引擎原理](javascript:;)
## 闭包和函数式编程
* [1.函数节流](javascript:;)
* [2.Y-组合子](javascript:;)
* [3.Hindley-Milner 类型系统](javascript:;)
## 前端常用数据结构
* [1.栈和队列](javascript:;)
* [2.链表](javascript:;)
* [3.树](javascript:;)
* [4.哈希表](javascript:;)
* [5.Facebook Immutable](javascript:;)
* [6.操作系统调度问题](javascript:;)
* [7.循环链表和轮播图](javascript:;)
* [8.字典树和输入提示问题](javascript:;)
## 回溯算法—游戏编程
* [1.八皇后问题](javascript:;)
* [2.解决数独问题](javascript:;)
* [3.寻路和A\*](javascript:;)
## 动态规划
* 钢条切割问题
* 最长子串/子序列
* 最优二项搜索树
* 青蛙跳台阶问题-动态规划算法
## 前端场景
* [1.DOM-DIFF 算法和树的编辑距离](javascript:;)
* [2.超大瀑布流和虚拟化](javascript:;)
* [3.插值、运动函数和贝塞尔曲线](javascript:;)
* [4.数据可视化基础算法介绍](javascript:;)
## 机器学习算法
* [1.模型、测试和训练](javascript:;)
* [2.分类问题](javascript:;)
* [3.神经网络](javascript:;)
- 修仙之路
- 基础原理篇
- JS和Node.js事件环机制剖析
- 一图理解原型链
- 手写篇
- 基础手写
- 手写实现 Promise A+ 类库
- 手写 CommonJS
- 手写 Express 框架
- 手写 React Router 4.0
- 手写虚拟 DOM 和 DOM-Diff
- 手写 Webpack 实现
- 手写一个 MVVM 类库
- 手写一个 Vue-cli 脚手架
- 手写 JWT 类库
- 手写 Mobx 类库
- 手写前端性能和错误监控框架
- 手写 Vue 路由
- 手写 Vuex 实现
- 手写 redux 状态容器
- 手写 throttle 和 debounce
- Node 高级
- Mongodb
- 安全测试篇
- CSRF原理实现
- XSS原理实现
- 九种跨域方法全解析
- 编写单元测试
- 爬虫篇
- 使用puppeteer破解滑动验证码
- 工程篇
- 使用AST语法树手工转译ES6代码
- 编写自己的webpack插件
- 实战篇
- webpack4.0 实战
- Canvas+Websocket 实现弹幕
- canvas 动效
- SVG 动效
- CSS3 实现 Apple Watch 中的呼吸灯效果
- CSS3 实现动态气泡屏保效果
- 算法篇
- 基础知识
- 服务器端
- 分布式架构中的幂等性
- TCP/UDP
- Docker
- V8
- 动画篇
- 贝塞尔曲线
- requestAnimationFrame
- 框架篇
- 随记