新智元报道
来源:知乎
编辑:雅新、舒婷
数据结构和算法:决定大厂面试成败的关键
Pascal之父尼古拉斯·沃斯曾靠一个公式「算法+数据结构=程序」获得了冠有计算机界诺贝尔奖之称的图灵奖。从这个公式中不难看出,编程从本质上来说就是算法加数据结构,而算法是编程思想的核心部分。
编程可以将现实世界中的具体需求「翻译」为代码,数据结构和算法为我们如何翻译和解决现实问题提供思路,就能使用编程语言与计算机进行沟通从而实现各种需求。
网友纷纷表示,「应当以数据结构算法为重,一线大厂更多考察的是对数据结构和算法的掌握程度。」
「如果不会数据结构和算法,面试这一关都过不去。」
数据结构和算法为什么那么重要?
1、升职加薪的依据。数据结构和算法能够高效解决面临的复杂问题,是为boss省钱的技术。
2、进入大厂的敲门砖。比起编程语言、框架,面试官其实更看重候选人能否能运用数据结构与算法来高效解决给定问题。
数据结构与算法功底扎实的程序员,其技术实力、业务能力、自学能力大多都不会差。对于大厂招人来讲,如果候选者的算法基础很好,就意味着以后进入公司学习新技术的成本会大大减少。
就如同金字塔一样,数据结构和算法在最底层,而技术只是最上面的一部分。地基没打扎实,将来定会遇到瓶颈。因为脱离数据结构和算法的技术往往门槛低,可替代性强。你会的,他人通过社会培训也可以在短时间内掌握一定的技术,无疑将来会在自己的岗位竞争很激烈。
腾讯安全联合实验室表示,「包括腾讯在内的许多大厂,会把数据结构和算法,特别是算法作为面试中的重点内容,是取得offer的关键。」
「而一个人对数据和算法的理解,可以体现出他是否能在编程工作中灵活选用合适的数据结构和算法,有效降低代码的复杂度并提升任务的完成效率,能够直接体现出一个人对于编程这项工作的理解深度和实力。」
业务和技术挂钩,而非数据结构和算法
选择并不互斥:数据结构算法和技术都可以做的很出色
小孩子才做选择,大人只会说「我全都要」。
知乎用户@maggch就指出,这两个选择不是互斥的。如果真的想要在计算机领域有所成绩,那么两个部分都需要你付出努力。
同时他还指出,刷leetcode并不是仅仅为了应试,有的时候去理解吃透题目的出题知识点和出发点是很重要的。除了会使用工具进行应用开发,还要去了解背后的原理细节。不然学任何方面都只是皮毛。
的确,另一个知乎用户@Ire写了这样的一个比喻:
这和知乎用户@橘猫胖胖的观点不谋而合:
数据结构与算法就是开发者的基本功,很多时候决定了你能到什么样高度的平台。但是,到达这样的平台之后,和工作更贴近的还是技术,这也决定了你的工作上升空间。因此,是否有合格的基本功需要自己判断,究竟需要在哪个方面下功夫是因人而异的。
就像知乎用户@路鹅甲说的那样,这不是一件非左即右的事情。
最后,在这个讨论里面看到了一个很有趣的观点和大家分享一下:
真的没有热爱计算机的程序员吗?
参考链接:
https://www.zhihu.com/question/395908518