设为书签 Ctrl+D将本页面保存为书签,全面了解最新资讯,方便快捷。 您也可下载桌面快捷方式。点击下载 | 新浪科技 | 新浪首页 | 新浪导航

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

2020-07-14 13:22:35    创事记 微博 作者:   

读计算机专业的你,大学四年是否还在迷茫是以数据结构和算法为重还是技术为重?

要想解除疑惑,先要知道计算机科学与技术这个专业都包含了什么。

顾名思义,科学与技术是构成这一专业的主要两个部分,所学课程也主要这两部分内容为主:像操作系统、计算机网络、数据结构与算法等课程都属于科学侧,而web网页设计、C++程序设计等课程则属于技术侧。

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

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

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

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

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

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

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

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

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

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

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

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

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

讨论中,「数据结构和算法」的支持者似乎占了大半,只有零星的开发者站在了技术侧。

当然,这样的场景也合乎常理。这就好像你问高中教育是「应试教育」重要还是「素质教育」重要,我相信会有超过一半的人站在「应试教育」的一侧,原因很简单,应试能力决定了你是否能进好的大学。

同样,在开发者程序员的领域,数据结构和算法掌握的牢固才能过大厂的面试,不然你也没机会展示你的技术能力。这就直接导致了凡是有「转码」念头的求职者全民刷leetcode,这盛况让我想起了高考时期的《五年高考三年模拟》。

然而知乎用户@老张的一针见血了:虽然大厂用leetcode来考面试者的数据结构和算法,但那本质也是「应试」——你刷的那些算法之后大概率也不会接触到;接触到,你也不会用。

换而言之,你掌握的leetcode层次的数据结构和算法,很可能只是让你做个题。真正讲到学术性的数据结构和算法的时候,你也得哑然了。

另一个知乎用户@清寰就指出了,真正的算法,入门门槛很高,并不是刷题就能解决的,需要你有很强的逻辑思维能力。同时他还表示,技术是为业务去服务的,没有业务要求的算法毫无意义。

也有计算机系的学生现身说法。知乎用户@yuantailing就指出,数据结构与算法在本科课程中的比重寥寥,最后真正在科研中选择算法也很少。

诚然,想要斩获大厂offer你需要在数据结构和算法的题目上有出色的表现,但要在实际落地中表现出色,则是考验开发者的技术能力。

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

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

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

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

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

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

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

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

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

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

(声明:本文仅代表作者观点,不代表新浪网立场。)

分享到:
保存   |   打印   |   关闭