数据结构与算法专场直播 | 青训营笔记

103 阅读3分钟

青训营笔记.png

这是我参与「第五届青训营 」笔记创作活动的第13天

一、重点内容介绍:

1、为什么要重视数据结构与算法
2、数据结构与算法的实战案例

二、详细知识点

1、为什么要重视数据结构与算法

1、我们经常遇到数据结构与算法

  • 作为一名 IT 从业者,在我们求职或者刷各种面经的时候,经常会看到数据结构和算法相关的字眼,比如leetcode 刷题 xxx道、面试手撕算法题 等等。

  • 不管是前端、后端、客户端还是算法岗,好像数据结构和算法已经成为了一个公认的评价程序员技术水平的标准。

  • 实际上数据结构和算法也是大学计算机专业的一门(甚至是好动态规划等等,甚几门)专业课,时下也有非常多的资料来介绍这些专业知识,比如 链表、二树、图论、至有专门的刷题教程。

2、那么为什么数据结构与算法那么重要呢?

  • 作为一名开发工程师,我们在日常工作中免不得要写很多代码实现需求,但实际上你会发现,最后整个项目的产物代码量是远远高于你自己的代码量的。换句话说,有相当大一部分的代码是第三方库的代码,而你自己的代码只能算很小的一部分。
  • 即使是我在编写一些框架级别的项目时,也免不了很多调包的操作,使得原本十分复杂的逻辑在自己的项目中变得十分简单。
  • 而这些复杂的逻辑,很多都与数据结构与算法息息相关。

3、数据结构与算法的真正用处

  • 但作为一名专业的开发人员,我们需要知道并且了解数据结构和算法的相关知识,因为这样才能具备解决复杂问题的能力,不然即使是业务写的非常熟练,也会很快遇到职业的天花板。
  • 这个世界上很多问题符合二八定律,80% 的问题可以通过第三方库调包解决,但不意味着剩下 20% 的问题不存在。
  • 这 20% 的问题可能无法通过现有的库解决,这个时候我们就需要接触复杂的数据结构以及算法来解决,也正是这个时候我们的核心价值才得以体现。

2、数据结构与算法的实战案例

1、用node.js扫描指定目录下的文件

  • 可以通过一个非常基础的递归程序实现。而递归是许多算法的重要实现基础,也是编程新手进阶的门槛。
  • 我们还经常在页面侧边栏和文件树中用到递归。

2、AST解析器

  • AST 即抽象语法树,通过AST 解析器,我们可以将代码解析为一棵对象树的结构,每个语法都对应树里面的某些节点。
  • 这样,我们可以很方便地进行语法分析和转换。无论是 HTML/CSS/JS,背后的解析算法都是差不多的。

3、模块打包器

  • Bundler 是前端工程化中非常核心的一环。
  • Bundler背后的原理是通过依赖图建立和循环依赖分析实现的。

4、缓存淘汰处理

  • 对于缓存不够用的场景,我们经常使用 LRU 算法(最近最少使用原则)。
  • 即把最近使用频率最低的节点删除掉,尽可能保留使用频率高的缓存,这个算法可以应对绝大多数的情况。

小结

通过今天课程学习,我了解到了数据结构和算法是一门长期伴随我们职业生涯的学科,我们需要持续地去积累和思考,触碰到编程的本质,这样才能更加有效地提升自己的技术水平以及自己对于技术的理解。