知乎热议:数据结构算法至上还是技术至上?网友:数据结构算法是决定大厂面试成败关键

2020 年 7 月 14 日 新智元



  新智元报道  

来源:知乎

编辑:雅新、舒婷

【新智元导读】近日,一位网友在知乎上发起提问:计算机学生在大学四年应是以数据结构和算法为重还是技术为重?引来网友纷纷围观,侧重数据结构算法、技术侧,还有两者兼顾的呼声皆有。

读计算机专业的你,大学四年是否还在迷茫是以数据结构和算法为重还是技术为重?
 
要想解除疑惑,先要知道计算机科学与技术这个专业都包含了什么。
 
顾名思义,科学与技术是构成这一专业的主要两个部分,所学课程也主要这两部分内容为主:像操作系统、计算机网络、数据结构与算法等课程都属于科学侧,而web网页设计、C++程序设计等课程则属于技术侧。


数据结构和算法:决定大厂面试成败的关键


Pascal之父尼古拉斯·沃斯曾靠一个公式「算法+数据结构=程序」获得了冠有计算机界诺贝尔奖之称的图灵奖。从这个公式中不难看出,编程从本质上来说就是算法加数据结构,而算法是编程思想的核心部分。

              

编程可以将现实世界中的具体需求「翻译」为代码,数据结构和算法为我们如何翻译和解决现实问题提供思路,就能使用编程语言与计算机进行沟通从而实现各种需求。

 

网友纷纷表示,「应当以数据结构算法为重,一线大厂更多考察的是对数据结构和算法的掌握程度。」

                

「如果不会数据结构和算法,面试这一关都过不去。」

              

数据结构和算法为什么那么重要?

               

1、升职加薪的依据。数据结构和算法能够高效解决面临的复杂问题,是为boss省钱的技术。

 

2、进入大厂的敲门砖。比起编程语言、框架,面试官其实更看重候选人能否能运用数据结构与算法来高效解决给定问题。

 

数据结构与算法功底扎实的程序员,其技术实力、业务能力、自学能力大多都不会差。对于大厂招人来讲,如果候选者的算法基础很好,就意味着以后进入公司学习新技术的成本会大大减少。

 

就如同金字塔一样,数据结构和算法在最底层,而技术只是最上面的一部分。地基没打扎实,将来定会遇到瓶颈。因为脱离数据结构和算法的技术往往门槛低,可替代性强。你会的,他人通过社会培训也可以在短时间内掌握一定的技术,无疑将来会在自己的岗位竞争很激烈。

 

腾讯安全联合实验室表示,「包括腾讯在内的许多大厂,会把数据结构和算法,特别是算法作为面试中的重点内容,是取得offer的关键。

 

「而一个人对数据和算法的理解,可以体现出他是否能在编程工作中灵活选用合适的数据结构和算法,有效降低代码的复杂度并提升任务的完成效率,能够直接体现出一个人对于编程这项工作的理解深度和实力。」

             

业务和技术挂钩,而非数据结构和算法


讨论中,「数据结构和算法」的支持者似乎占了大半,只有零星的开发者站在了技术侧。
 
当然,这样的场景也合乎常理。这就好像你问高中教育是「应试教育」重要还是「素质教育」重要,我相信会有超过一半的人站在「应试教育」的一侧,原因很简单,应试能力决定了你是否能进好的大学。
 
同样,在开发者程序员的领域,数据结构和算法掌握的牢固才能过大厂的面试,不然你也没机会展示你的技术能力。这就直接导致了凡是有「转码」念头的求职者全民刷leetcode,这盛况让我想起了高考时期的《五年高考三年模拟》。
             
然而知乎用户@老张的一针见血了:虽然大厂用leetcode来考面试者的数据结构和算法,但那本质也是「应试」——你刷的那些算法之后大概率也不会接触到;接触到,你也不会用。
                   
换而言之,你掌握的leetcode层次的数据结构和算法,很可能只是让你做个题。真正讲到学术性的数据结构和算法的时候,你也得哑然了。
 
另一个知乎用户@清寰就指出了, 真正的算法,入门门槛很高 ,并不是刷题就能解决的,需要你有很强的逻辑思维能力。同时他还表示, 技术是为业务去服务的,没有业务要求的算法毫无意义。
               
也有计算机系的学生现身说法。知乎用户@yuantailing就指出,数据结构与算法在本科课程中的比重寥寥,最后真正在科研中选择算法也很少。
                
诚然,想要斩获大厂offer你需要在数据结构和算法的题目上有出色的表现,但要在实际落地中表现出色,则是考验开发者的技术能力。


选择并不互斥:数据结构算法和技术都可以做的很出色


小孩子才做选择,大人只会说「我全都要」。

 

知乎用户@maggch就指出,这两个选择不是互斥的。如果真的想要在计算机领域有所成绩,那么两个部分都需要你付出努力。

               

同时他还指出,刷leetcode并不是仅仅为了应试,有的时候去理解吃透题目的出题知识点和出发点是很重要的。除了会使用工具进行应用开发,还要去了解背后的原理细节。不然学任何方面都只是皮毛。

 

的确,另一个知乎用户@Ire写了这样的一个比喻:

          

这和知乎用户@橘猫胖胖的观点不谋而合:

      


数据结构与算法就是开发者的基本功,很多时候决定了你能到什么样高度的平台。但是,到达这样的平台之后,和工作更贴近的还是技术,这也决定了你的工作上升空间。因此,是否有合格的基本功需要自己判断,究竟需要在哪个方面下功夫是因人而异的。

 

就像知乎用户@路鹅甲说的那样,这不是一件非左即右的事情。

              

最后,在这个讨论里面看到了一个很有趣的观点和大家分享一下:

            

真的没有热爱计算机的程序员吗?




参考链接:

https://www.zhihu.com/question/395908518



登录查看更多
1

相关内容

在数学和计算机科学之中,算法(Algorithm)为一个计算的具体步骤,常用于计算、数据处理和自动推理。精确而言,算法是一个表示为有限长列表的有效方法。算法应包含清晰定义的指令用于计算函数。 来自维基百科: 算法
打怪升级!2020机器学习工程师技术路线图
专知会员服务
96+阅读 · 2020年6月3日
【经典书】数据结构与算法C++,第二版,738页pdf
专知会员服务
165+阅读 · 2020年3月27日
19年腾讯、阿里、网易等各大厂实习生薪资曝光!
互联网架构师
9+阅读 · 2019年5月5日
最难求职季如何斩获算法岗
AINLP
3+阅读 · 2019年4月25日
AI岗位秋招纪实:算法原理扎实才是王道,而不是调参
算法与数学之美
5+阅读 · 2018年10月20日
2年Java经验,真的就拿不到30万年薪吗?
程序员观察
3+阅读 · 2018年4月8日
数据挖掘与人工智能学习进阶指南
数据挖掘入门与实战
4+阅读 · 2018年1月19日
拜托!年薪低于30万,请不要说自己是AI工程师!
全球人工智能
3+阅读 · 2018年1月18日
难?不难?机器学习套路就这三个!
聊聊架构
3+阅读 · 2017年10月25日
Area Attention
Arxiv
5+阅读 · 2019年5月23日
Arxiv
9+阅读 · 2018年5月7日
Arxiv
5+阅读 · 2018年3月16日
Arxiv
8+阅读 · 2018年1月25日
VIP会员
相关资讯
19年腾讯、阿里、网易等各大厂实习生薪资曝光!
互联网架构师
9+阅读 · 2019年5月5日
最难求职季如何斩获算法岗
AINLP
3+阅读 · 2019年4月25日
AI岗位秋招纪实:算法原理扎实才是王道,而不是调参
算法与数学之美
5+阅读 · 2018年10月20日
2年Java经验,真的就拿不到30万年薪吗?
程序员观察
3+阅读 · 2018年4月8日
数据挖掘与人工智能学习进阶指南
数据挖掘入门与实战
4+阅读 · 2018年1月19日
拜托!年薪低于30万,请不要说自己是AI工程师!
全球人工智能
3+阅读 · 2018年1月18日
难?不难?机器学习套路就这三个!
聊聊架构
3+阅读 · 2017年10月25日
相关论文
Area Attention
Arxiv
5+阅读 · 2019年5月23日
Arxiv
9+阅读 · 2018年5月7日
Arxiv
5+阅读 · 2018年3月16日
Arxiv
8+阅读 · 2018年1月25日
Top
微信扫码咨询专知VIP会员