讲师Ramroll根据多年前端开发+架构经验,总结出一套完善的学习方法,针对已经有javascript基础的同学进行集训,在2-3个月内突破瓶颈达到大厂资深岗的算法要求(阿里P7,百度T6)。
课程的主旨是提升学员的思考、专注能力,开阔视野并提升技能,课程取材自国内外优秀的教材、经典代码、实战问题、面试题等,包括: 1. 课程取材自《算法导论》《算法》等经典书籍 2. leetcode、codewars等算法网站 3. 开源社区的源代码(React/Redux/Ramda/Rx等) 4. 讲师ramroll在多年前端架构过程中遇到的问题 5. 近年来大厂的前端面试题目
课程中除了有大量的理论知识,还有100多个例子和100多道习题,习题都有详细地解答,部分困难的习题会在习题课上讲解。通过这样的训练,可以在短短2-3个月内提升到「资深岗」的程序和算法水平。课程除了帮助学员在面试「高级」「资深」岗位时,获得优势外,学习算法对提升coding速度、质量,阅读源代码、提升架构能力都有很大的好处。
其实相比应用和创造,对于大多数「菜鸟」们来说,学习算法还有另一个重要的目的,就是「写好程序」。看似简单的四字,却需要耗费数年寒暑。境界提升之后,编码的速度和质量都会有一个大的飞跃,这就为「就业」和「创业」提供了一大依恃。当然对于笔者而言,之所以一直学习算法还有一个显而易见的原因——兴趣!看到复杂的计算过程,被自己写的算法替代,变成一个「规范」的计算过程,效率是别人的几十倍,是一件非常开心的事情。
课程结束后,会安排学员参加「珠峰算法I考试」。「算法I」考试,每隔半年一次考试,届时,会邀请业界大牛共同出题。同时,会有严格考场秩序。通过后,证书可查。通过考试的同学,将被证明拥有「资深工程师」相当的算法能力,同时学员会得到珠峰和讲师本人的重点培养。除了长期指导、面试辅导辅导外,还会在未来1-2年内创造机会进入大厂相应岗位的机会。没有通过考试的同学,可以免费在后续算法课程中学习,并争取在下次考试中取得好的成绩。
课程大纲
第1章:前端数据处理
- 前端处理数据的场景
- 数据的流处理(map/reduce/filter/zip/flatten/permuations…)
- 排序和分组
- 用函数式编程库Ramda更好地处理数据
- 用ES6 Iterator+Generator提高算法的健壮性
- 其他数据处理问题精选
- 倒排表
- 笛卡尔积
- 习题
第2章:递归
- 前端递归的场景
- 用科学的方法思考递归——分段函数
- 经典问题
- 斐波那契数列
- 数组的flatten
- 全排列
- 前端递归问题精选
- 深拷贝/深比较
- DOM遍历(获取元素的绝对坐标)
- DOM的查询(CSS选择器)的实现
- 习题
第3章:字符串操作
- KMP算法
- 正则表达式
- 前端问题精选
- 输入验证
- 替换HTML
- 构建模板引擎原理
- 路由解析引擎原理
- 习题
第4章:闭包和函数式编程
- 闭包
- bind/call/apply
- 函数节流
- 柯里化
- Y-组合子
- 函数节流
- 基于柯里化的函数式编程框架ramda的原理
- 作为框架基础的柯里化
- Hindley-Milner 类型系统
- 部分高阶函数精选
- 习题
第5章:算法的分析方法
- 什么是算法?
- 算法的计算模型
- 内存/CPU/线程/进程/缓存
- 时间复杂度
- 空间复杂度
- 复杂度分析
- map/reduce的时间复杂度
- 笛卡尔积的时间复杂度
- 计算DOM元素绝对坐标的时间复杂度
- 全排列的时间复杂度和空间复杂度
- 排序算法精选
- 插入排序
- 冒泡排序
- 合并排序和分治策略
- 快速排序
- 桶排序
- 算法的分析方法(归纳和演绎)
- 习题
第6章:前端常用数据结构
- 栈和队列
- 链表
- 树
- 哈希表
- Facebook Immutable框架介绍
- 问题精选
- 操作系统调度问题
- 循环链表和轮播图
- 字典树和输入提示问题
- 习题
第7章:回溯算法——游戏编程基础
- 应用场景介绍
- 集合产生问题
- 八皇后问题
- 解决数独问题
- 寻路和A*
- 习题
第8章:动态规划 (造轮子必备 DOM-DIFF算法的基础)
- 应用场景介绍
- 钢条切割问题
- 最长子串/子序列
- 最优二项搜索树
- 习题
第9章:前端相关问题
- DOM-DIFF 算法和树的编辑距离
- 超大瀑布流和虚拟化
- 插值、运动函数和贝塞尔曲线
- 数据可视化基础算法介绍
- 习题
第10章:面向未来——机器学习算法扩展
- 机器学习简介
- 模型、测试和训练
- 分类问题
- 神经网络介绍
- 习题