四、数据结构和算法
这不是考研必备吗
据我了解的大部分前端对这部分知识有些欠缺,甚至抵触,但是,如果突破更高的天花板,这部分知识是必不可少的,而且我亲身经历——非常有用!
JavaScript编码能力
- 1.多种方式实现数组去重、扁平化、对比优缺点
- 2.多种方式实现深拷贝、对比优缺点
- 3.手写函数柯里化工具函数、并理解其应用场景和优势
- 4.手写防抖和节流工具函数、并理解其内部原理和应用场景
- 5.实现一个sleep函数
手动实现前端轮子
- 1.手动实现call、apply、bind
- 2.手动实现符合Promise/A+规范的Promise、手动实现async await
- 3.手写一个EventEmitter实现事件发布、订阅
- 4.可以说出两种实现双向绑定的方案、可以手动实现
- 5.手写JSON.stringify、JSON.parse
- 6.手写一个模版引擎,并能解释其中原理
- 7.手写懒加载、下拉刷新、上拉加载、预加载等效果
数据结构
- 1.理解常见数据结构的特点,以及他们在不同场景下使用的优缺点
- 2.理解数组、字符串的存储原理,并熟练应用他们解决问题
- 3.理解二叉树、栈、队列、哈希表的基本结构和特点,并可以应用它解决问题
- 4.了解图、堆的基本结构和使用场景
算法
- 1.可计算一个算法的时间复杂度和空间复杂度,可估计业务逻辑代码的耗时和内存消耗
- 2.至少理解五种排序算法的实现原理、应用场景、优缺点,可快速说出时间、空间复杂度
- 3.了解递归和循环的优缺点、应用场景、并可在开发中熟练应用
- 4.可应用回溯算法、贪心算法、分治算法、动态规划等解决复杂问题
- 5.前端处理海量数据的算法方案