[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
- 框架篇
- 隨記