数据结构和算法

据我了解的大部分前端对这部分知识有些欠缺,甚至抵触,但是,如果突破更高的天花板,这部分知识是必不可少的,而且我亲身经历——非常有用!

(一)JavaScript编码能力

1.多种方式实现数组去重、扁平化、对比优缺点

2.多种方式实现深拷贝、对比优缺点

3.手写函数柯里化工具函数、并理解其应用场景和优势

4.手写防抖和节流工具函数、并理解其内部原理和应用场景

5.实现一个 sleep函数

(二)手动实现前端轮子

1.手动实现 call、apply、bind

2.手动实现符合 Promise/A+规范的 Promise、手动实现 asyncawait

3.手写一个 EventEmitter实现事件发布、订阅

4.可以说出两种实现双向绑定的方案、可以手动实现

5.手写 JSON.stringify、 JSON.parse

6.手写一个模版引擎,并能解释其中原理

7.手写 懒加载、 下拉刷新、 上拉加载、 预加载等效果

(三)数据结构

1.理解常见数据结构的特点,以及他们在不同场景下使用的优缺点

2.理解 数组、 字符串的存储原理,并熟练应用他们解决问题

3.理解 二叉树、 、 队列、 哈希表的基本结构和特点,并可以应用它解决问题

4.了解 、 的基本结构和使用场景

(四)算法

1.可计算一个算法的时间复杂度和空间复杂度,可估计业务逻辑代码的耗时和内存消耗

2.至少理解五种排序算法的实现原理、应用场景、优缺点,可快速说出时间、空间复杂度

3.了解递归和循环的优缺点、应用场景、并可在开发中熟练应用

4.可应用 回溯算法、 贪心算法、 分治算法、 动态规划等解决复杂问题

5.前端处理海量数据的算法方案

Last Updated: 10/24/2019, 6:12:57 PM