“语言只是工具,算法才是程序的灵魂。”这句话相信每一个程序员都听过无数次。
然而在实际的工作中,一个产品从开发到上线,似乎哪一步都用不到数据结构与算法。
于是很多程序员都有这样一种错觉:就算我不懂算法,只要语言写得溜、开发框架用得熟练、封装好的各种接口、库调用得熟练,照样能实现老板“天马行空”(傻逼)的需求,照样可以混到高薪。
但是作为一名开发工程师,你真的愿意做一辈子的crud boy 吗?
三流才比招式,高手只拼内功
如果把一个程序比作一辆车,那么语言就是启动这辆车的钥匙,而算法则是这辆车的发动机。
你可以在不懂发动机的运作原理的情况下依然把车开到飞起来,但等车出现了问题,你只能干瞪眼。
而写程序这件事情,就像开车一样,经验能帮你很多,但如果你对数据结构与算法完全不了解,那么你永远只能当一个代码搬运工。
举个例子,如果你不知道列表,堆,栈,树,图等算法原理,不懂得时间、空间复杂度分析,在存储某个数据时,你是用ArrayList 还是 LinkedList呢?要知道在不同的情况下选择ArrayList 还是 LinkedList ,可能会产生成千上万倍的性能差别。
数据结构与算法存在的意义就是让程序员们在更高的高度下思考如何用更少的资源产生更快的运算结果。
其实程序员的世界就像金庸先生的武侠小说一样。普通人只在乎招式,绝世高手之间比拼的是内功,而数据结构与算法就是程序员们的《九阳神功》。
算法是大厂的敲门砖
如果你还坚持认为仅凭一手牛逼的代码就能轰开BAT的大门,那你可以听听下面这个故事。
2015年,Homebrew的作者去google面试,(Homebrew是Mac平台的安装包管理工具,全世界有无数互联网公司的程序员们都在使用它。)然而就是这样一个大神却倒在了算法上。感觉备受侮辱的大神,立马发了条twiiter吐槽谷歌的面试制度。
然而谷歌的回应是:“我们90%的工程师都在使用你写的Homebrew工具,你却不能白板编程一个二叉树的翻转,所以请滚蛋吧”。
谷歌回应
对于BAT、FLAG这样的大公司而言,他们的产品线可能遍布图像视频处理、数据库、游戏开发、编译器、搜索引擎、AR、VR、人工智能等等领域。这些领域可能使用不同的编程语言、不同的工作方式,但却有一个共同点:以数据结构算法为基石。
而从算法中能更容易了解到一个人的编程能力和应变能力,因此大公司重视算法也就不难理解了。
如果你想进军BAT,或者想打开高级编程的大门,那么数据结构与算法这项短板一定要补上。
咨询热线
400-0731-162