贰.0 本章导读

贰.0.1 为什么要学习数据结构和算法?

数据结构和算法是编程的内功,对于编程能力提高和职场之路进阶至关重要。

深厚的内功可以有效保障写出的代码性能良好,可以提前预估代码运行达到预期目的,提高工作产出,也能让学习其他编程语言和框架变得事半功倍。

而且现状是,数据结构和算法如今已经是国内外一线互联网公司面试的必考知识点。

贰.0.2 会调框架API和CRUD还不够

如果仅仅满足实现日常开发中调调框架API和做做CRUD(Creat,Read,Update,Delete,也即数据库增删改查),那确实大多数时候不太用要数据结构和算法知识,但长期这样下去,就会沦落为吃青春饭的coder(俗称“码农”),到一定年龄之后体力速度跟不上,便会遭受就业排挤。

并不是说调框架API和CRUD就代表低水平,实际上复杂的软件都是可以分解成若干个简单的子模块来组成,每一个子模块里边做的事情可能也就是调用API然后CRUD,但是这些子模块组合在一起是可以实现很复杂业务逻辑或者说流程。

互联网前端领域这几年发展非常快,很多非科班的学生也都进入了这个行业。在转行的时候,大家考虑的都是经济效益。那么放在最重要的就是熟悉一门编程语言、会调一些框架的API、然后会一些数据库CRUD操作,以遍快速找到工作,因此不会有太多时间去专注学习数据结构和算法。的确,一些中小型企业也无需求简单的话,可以应付。

但是,当你进入一线互联网企业,项目越来越大越来越复杂,就会发现不是所有的项目都是调API和CRUD就可以搞定了。比如说一些广告后台、搜索、排序推荐的系统,还是有一些数据结构的;再比如说搜索引擎里边,最后对召回的结果要进行合并,很典型的合并k个有序的数组算法;再比如说热搜词的实时统计,你怎么实现?直接调前端框架API?直接拿数据库进行增删改查?那不行的。

贰.0.3 为什么面试官都喜欢问数据结构和算法呢?

因为数据结构和算法最能体现前端工程师的编程基本功。

基本功扎实的人,无论是做业务实现还是去做算法,都不太会差到哪里去。我们以前在百度招人的时候都有一个标准,就说招进来的这个人至少要排到team里面前50%。只有这样招进来的人才能够让我们的team更加强大,不能招一个很差的人来拉低平均水平。怎么评判这个人能够在team里面排到前50%呢?其实是有很多标准的,比如说算法数据结构就是里边很重要的一部分;其次,他的逻辑思维能力,系统设计能力,他的职业素养等等。但是算法和数据结构占的比重还是最大的。

如果连数据结构和算法都不会,有没有什么影响?有的,要知道程序员这个群体也是有金字塔结构的。如果连基本的算法和数据结构都不会,基本上属于比较底层的程序员。比较底层的程序员就意味着比较低的薪酬待遇。同样是出售脑力劳动和时间,你比别人少赚。

所以就算是从薪资待遇的角度来讲,也要重视数据结构与算法。

贰.0.4 结语

如果想在前端领域有长足的发展,就扎实学好数据结构和算法,需要成长为领域专家,从coder升级到架构师甚至更高阶的技术专家,成为有思想、有策略、有创新能力的前端精英。由于数据结构与算法内容庞大,一本书根本写不下,所以本章只挑选一些我认为相对更有用的内容放入。