查看原文
其他

你都读985大学了,为啥还要磕算法?

findyi findyi 2022-05-12

阅读本文大概需要5分钟。

今天有一个读者问了我一个问题,感觉挺有意义,跟大家分享下。


这位读者在某985大学读计算机专业,因为身边很多同学天天刷算法题感到很疑惑,于是跑来问我:


回答完这位读者,感觉要不要好好学算法,要不要刷算法题还真是一个计算机学生和程序员们都会思考的问题,跟大家分享下我的想法:


1.算法是大厂的敲门砖


算法是大厂笔试和面试必考题,这点毋庸置疑。而算法可以通过刷比如Leetcode得到不小提升,刷题的本质是强化,能更高效夯实基础知识,同时也属于刻意训练的范畴。


别说现在了,我毕业那会儿大厂就开始考核算法和数据结构了,面试就要求手写各种奇葩算法问题了,写出来的就能通过面试,反之就被无情淘汰。


其实不光是中国这样,在北美,在硅谷刷题进大厂的现象更普遍,在硅谷无论科班出身、文科转码、无学历转码,要想进大厂就得疯狂刷题。


从实习,到全职,跳槽,一路上硅谷码农都在刷LeetCode。在可以预见的未来,中国程序员的面试状况会不断接近美国,这几乎是不可避免的趋势。


2.大厂考核算法背后的逻辑


其实大厂的初中级工程师在工作中的95%以上的时间里,的确不需要用算法,有的朋友会说:这是面试造火箭,入职拧螺丝钉。


但思考一个问题:能造火箭的人拧螺丝钉自然不是问题,只会拧螺丝钉的人遇见造火箭的需求,能行吗?


大公司对程序员的算法能力有更高要求的原因也很简单:算法要产生巨大价值,往往基于海量的用户和复杂的业务场景。


海量的用户就需要千人千面、需要智能推荐,这样才能最大程度让用户黏在平台里,让企业获取更大的用户商业价值。反过来说,如果用户量很少,供给给算法程序的训练库都不够用,更别谈精准了。


海量的用户就意味着对性能的追求,高并发/高可用/低延时往往就需要用算法调优,最起码你得知道时间复杂度、空间复杂度吧?这也算是算法基础对不对。


业务越复杂,它对应的产品形态和代码实现也就越复杂。这种情况下,代码的任何一个微小的优化,都会产生巨大的生产力。比如阿里云对服务器策略的一点点优化,都会节约成千上万的服务器资源。


所以,大厂尤其重视算法,这个真的很理所当然。


其实不光是算法工程师要好好研究算法,在大厂混的或者要想进大厂的朋友,算法都是重中之重,关键中的关键。


当然有人可以说:我就不想去大厂,就要混中小厂,但很遗憾也只有中小厂的底层码农不需要算法,一旦想成为架构师,算法还是不可回避。


我在360带研发团队之际,部门做了一个o2o的新产品, 某一次大型活动,并发量增长10倍,服务器直接卡死,紧急带领部门几个架构师,对整体的代码做了重构,用算法数据结构疯狂优化了好几个性能卡点,在没增加服务器的情况下解决了故障。


这就是学好算法的作用。


3.算法体现代码和架构之美


踏上了编程之路也就意味着你选择了一种终身学习的生活方式。每一个程序员都要练就十八般武艺,而掌握算法就像修炼了九阳神功。换句话说,掌握了算法,你的内功修炼速度就会有质的飞跃。


无论你是从事业务开发,想要评估代码性能和资源消耗;还是从事架构设计,想要优化设计模式;或者想要快速玩转热门技术,比如人工智能、区块链,都要先搞定数据结构与算法。


因为任凭新技术如何变化,只要掌握了这些计算机科学的核心“招式”,你就可以见招拆招,始终立于“不败之地”。


真正掌握算法的工程师对计算运行有更深刻的理解,比如对cpu执行的理解,对多线程/多进程编程,对高效存储读写的理解。


以b+树算法举例,只有精通了b+树底层原理:以块存储分割换总体读写性能,这种底层理解才会驱动你对计算机原理的全方位理解,你才能从学会cpu cache优化到精通并行编程,再到精通服务器体系架构。


写在最后的话:


如果你是计算机专业在读学生,又或者是工作三年内的职场萌新,感觉自己对算法还很陌生,那么在它身上花再多时间都是值得的。


无论是进大厂还是成为高级工程师/技术专家,算法都是你要攻克的第一个难关。


另外,我的公众号上收录了一份经典算法资料,是一位阿里大佬撰写的,大家回复【01】即可获取:



其他原创:


来看看一位阿里P9的年薪和资产


最近要出绩效了


程序员的天花板


PS:最近弄了一个新微信号,欢迎大家围观,洋哥是个不错的段子手、鸡汤大师:



你好,我是findyi,毕业于华科、清华,在腾讯做过码农,在360做过技术总监,在独角兽公司做过技术VP,点击蓝字查看我的成长之路
创业五年虽未获成功,但心中的小火苗一直还在燃烧,看尽南山&西北旺的风光,但依然有着内心执着的追求。
目前我是一位大厂的业务负责人,同时,也是一位信奉终身成长的职场人。
同时,我也是知乎博主:findyi,日常分享高质量职场认知、技术干货欢迎围观。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存