很多同学对数据结构与算法的第一印象,可能是觉得它复杂、深奥、难以理解。之所以会有这种观念,我认为主要是因为没有找到适合自己的学习方法及学习资料。其实学习任何知识点,只要找到对的学习方法和学习资料,都能做到攻克难点,牢牢掌握。

另外,同学们可能还有一个疑问:在平时的开发工作中,一个产品,从开发到上线,似乎都不会用到数据结构与算法,也就是说即使不懂数据结构与算法,也能出色地完成日常的工作任务,照样能拿到高薪。那我们为什么还要学习数据结构与算法呢?

其实,一个很重要的原因是为了应对面试,数据结构与算法,是很多名企面试的必考题。国内外一线的大型互联网公司,在面试的过程中,多少都会问到一些关于数据结构与算法的题目。而且规模越大的公司,就越注重数据结构与算法。甚至,现在很多中小型公司的面试题都会涉及到算法知识。这个我们其实不难理解,无论什么类型的公司,为了筛选出更优秀的人才,面试题的难度都会越来越高。

说到这,同学们可能会觉得很奇怪,平时工作中很少接触的数据结构与算法,为什么会经常出现在面试题中呢?这不是让人很难理解吗?甚至还有人会觉得这很不公平,会导致企业错失人才。比如有这样一个人,他拥有至少5年开发经验,技术实力、业务能力、学习能力都很强,公司安排的每项任务都能出色完成,但可能只是因为他不会数据结构与算法,就被大公司拒之门外,而事实上他的综合能力可能比一些大公司的人都要强。

这样的情况,其实不是没有,2015年,Homebrew的作者去google面试,但不幸的是他被google拒绝了。Homebrew大家应该都听说过,它是Mac平台的安装包管理工具,全世界大大小小互联网公司的程序员可能都在用这个工具。这足以说明Homebrew作者的技术实力了吧?可他还是被拒绝了,当时他发了条twiiter吐槽。

google回应:“我们90%的工程师都在使用你写的Homebrew工具,你却不能白板编程一个二叉树的翻转,所以请滚蛋吧”。不过后来,还是有很多硅谷的大公司抢着要他。

所以说,同学们的担心是有可能发生的,大公司面试着重考察数据结构与算法,确实可能会错失一些人才,那他们为什么还要这样做呢?

其实不管哪个公司,都想尽可能地招到更优秀的人才。但是在短短几个小时的面试过程中,想了解清楚一个人,太难了。所以很多大公司招聘的第一步,就是学历要求:本科、硕士、甚至是博士。因为从概率上讲,高学历出现优秀人才的几率会更大一点。举个例子:一个是毫无开发经验的计算机专业硕士,而另一个是拥有3年开发经验的大专生,很多大公司可能会选择招聘那位硕士。因为他们看重的是一个人的长期潜力,而技术是可以通过培训获得的,潜力却不是每一个人都拥有的。当然除了通过学历筛选人才,在面试时考察数据结构与算法,也是在短时间内考察一个人长期潜力的捷径。

因为数据结构与算法功底扎实的程序员,其技术实力、业务能力、自学能力大多都不会差。其次,如果面试题内容都是平时工作中常用的技术点,其实大家的答案都大同小异,而且还有很多人会靠背题来应付面试。而算法题因为其范围很大,可以尽可能地避免这种情况的发生,而且这种问题考验的更多的是一个人的编程功底和长期积累。所以很多大公司都会使用算法题来筛选人才。

总而言之,要想进入更大的公司,数据结构与算法是你必须要跨过去的坎。

一开始提到,可能在大家平时的开发过程中,不怎么用到数据结构与算法的知识。那是因为我们的很多开发任务,都可以直接用各种第三方框架来完成。然而,很多第三方框架内部都用到了大量的数据结构与算法的知识。如果你懂数据结构与算法,就可以更好地去读懂框架源码,体会作者的设计思想,也能让你更好地使用框架,把框架的价值发挥到最大。平时没用到数据结构与算法,也可能是因为自己目前开发的项目还太小。当开发大型项目,面对海量数据处理,或者要求性能的极致优化时,必然要用到数据结构与算法来优化程序。所以,很多时候,并不是数据结构与算法没有用,而可能是自己的境界还不够高。

另外,在计算机编程领域,数据结构与算法的应用是无处不在。比如图像视频处理、数据库、游戏开发、编译器、搜索引擎、AR、VR、人工智能、区块链等领域,都是以数据结构算法为基石。

扎实的数据结构与算法功底,能让我们站在更高的角度去思考代码、写出性能更优的程序,能让我们更快速地学习上手各种新技术(比如人工智能、区块链等),能让我们敲开更高级编程领域的大门。为什么有些人学新技术这么快?比如区块链、人工智能等,很可能就是因为别人数据结构与算法的功底更扎实。

Pascal之父Nicklaus Wirth曾经凭借一个公式获得了图灵奖(计算机领域的诺贝尔奖)。

  • 算法 + 数据结构 = 程序

由此可见数据结构与算法的重要性!

随着年龄的增长,无论是学习能力,还是体力都会有一定程度地下降。所以,我们更应该珍惜时间,不要在应该努力奋斗的年纪选择安逸,学习和积累都要趁早。如果你想在IT路上走得更远,站得更高,那就必须掌握数据结构与算法。更何况这真的是一种一次掌握,终生受益的技术。

数据结构与算法真的那么重要么?相关推荐

  1. 数据结构和算法真的“难”吗?其实也不见得...

    在各个技术社区或者技术上,我们总是喜欢谈论一些高大上的话题,比如高可用架构.人工智能.云原生应用.跨平台框架.区块链.虽然这些时髦的词代表着行业的趋势,但也在无形之间给我们传递着焦虑,我们不知道怎么才 ...

  2. 【数据结构与算法】起始篇

    持续学习&持续更新中- 守破离 [数据结构与算法]起始篇 什么是数据结构和算法 什么是数据结构 什么是算法 为什么要学习数据结构和算法1 为什么要学习数据结构和算法2 为什么要学习数据结构和算 ...

  3. 数据结构和算法一定要背算法的代码嘛_我们为什么要学习数据结构和算法?

    对于我们来说,数据结构和算法是那么熟悉,又是那么陌生.作为计科院的学生,大学里都接触过,但是进入社会以后,我们看起来很少会用到这个.这时候不仅会想到一件问题,学习数据结构和算法真的有用吗?不学习这个就 ...

  4. diff算法阮一峰_【重学数据结构与算法(JS)】字符串匹配算法(三)——BM算法

    前言 文章的一开头,还是要强调下字符串匹配的思路 将模式串和主串进行比较 从前往后比较 从后往前比较 2. 匹配时,比较主串和模式串的下一个位置 3. 失配时, 在模式串中寻找一个合适的位置 如果找到 ...

  5. 大量的数据做字符串匹配_【重学数据结构与算法(JS)】字符串匹配算法(三)——BM算法...

    前言 文章的一开头,还是要强调下字符串匹配的思路 将模式串和主串进行比较 从前往后比较 从后往前比较 2. 匹配时,比较主串和模式串的下一个位置 3. 失配时, 在模式串中寻找一个合适的位置 如果找到 ...

  6. 重学数据结构与算法(02)--将时间复杂度转换成空间复杂度

    将时间复杂度转换成空间复杂度 1)时间昂贵.空间廉价 2)数据结构连接时空 3)降低复杂度的案例 例一 例二 4)总结 面试的过程中,常常会遇到考察手写代码的场景,通常面试官会追问:"这段代 ...

  7. 你真的知道如何系统高效地学习数据结构与算法吗?

    文章目录 前言: 什么是数据结构?什么是算法? 学习这个算法需要什么基础? 学习的重点在什么地方? 一些可以让你事半功倍的学习技巧 1.边学边练,适度刷题 2.多问.多思考.多互动 3.打怪升级学习法 ...

  8. 重学算法第三期|数据结构与算法001

    目录 强烈推荐一个数据结构可视化工具:https://www.cs.usfca.edu/~galles/visualization/Algorithms.html,点击B+树即可模拟B+树的动态插入过 ...

  9. 从大学入门到研究生拿大厂offer,必须看的数据结构与算法书籍推荐,不好不推荐!

    点个赞,看一看,好习惯!本文 GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了3个月总结的一线大厂Java面试总结,本人已拿腾 ...

最新文章

  1. Linux下tomcat内存溢出分析及优化
  2. 学习EF4的一些基础参考资料
  3. Go 语言编程 — net/http — 支持 HTTPS
  4. 《maven官方文档》5分钟开始Maven
  5. 微商谋定重整纠正错误走路-经信研究:李玉庭谈微商营销
  6. 【转】采购提前期概述
  7. 计算机丢失d3dcompiler,win7系统提示缺少D3DCompiler_47.dll文件怎么办
  8. C#算法设计查找篇之04-斐波那契查找
  9. 计算机网络通信选择题,计算机网络教(学)案通信技术选择题试题题库完整
  10. (可行方案)mysql5.7.9安装教程
  11. 东南大学成贤c语言试卷,成贤高数(下)期中试卷参考答案
  12. polardb mysql 事务隔离级别_事务的四种隔离级别
  13. php excel导入数据库显示乱码,php修改excel表格数据库数据格式-使用phpexcel导入excel表格数据到MYSQL,乱码怎么解决...
  14. su灯光插件_V-Ray for SketchUp渲染外部照明快速入门
  15. 数据库的核心和基础、DBS三级模式结构、关系模型、数据、数据库、模式、内模式、外模式
  16. 在Ubuntu18.04上编译SWASH模型
  17. opporeno5k怎样关闭乐划锁屏锁屏杂志
  18. 国产小家电品牌如何用dtc模式打造新中产超爆款?
  19. MATLAB小技巧(25)竞争神经网络与SOM神经网络
  20. 工控机的日常维护方法及步骤

热门文章

  1. HTML,CSS 三角形制作案例(等边三角形 直角三角形)
  2. 软件测试面试题:如何测试一个纸杯?
  3. C#汉字转拼音(npinyin)
  4. 萌新带你开车上p站(二)
  5. 解决Request processing failed; nested exception is com.sun.jersey.api.client.UniformInterfaceException
  6. html5 arc 椭圆,html5 Canvas画图教程(11)—使用lineTo/arc/bezierCurveTo画椭圆形
  7. 2020年雅思机考考点将覆盖全国14城
  8. 如何保持长时间高效学习
  9. Selenium学习 - WebElement接口
  10. 技巧 | 把光驱拆了,装个固态硬盘,让渣渣电脑复活