算法谎言:兄弟,醒醒!

1,053 阅读5分钟

2年前,我的算法专栏上线,现在订阅人数超过10万人,估计还有更多白嫖客。这里要@一下杨哥,再鄙视你一次😂。现在,各大知识付费平台一股脑儿都在搞算法,各种课程、训练营、刷题营,也成功“忽悠”了一批又一批的程序员。仰望着FLAG、BAT的大牛,以为自己只要努力刷题就能进大厂,做梦有一天能像他们一样成功。

最近有好几个朋友,微信上说,努力看懂了专栏,也刷了几百道题,结果去面试,面试官一个算法都没问,问我该怎么诱导面试官问算法?还有一些小厂的朋友,微信上问我,如果掌握了80%的算法,那是不是就可以去BAT试一下了?还有一些刚毕业不久的朋友,问我,编程能力很差,是先补一下算法,还是操作系统等其他计算机基础知识?

看到这样的问题,我挺哭笑不得的。2年前,很多人根本就不重视算法,每次跟他们讲算法重要的时候,他们都反驳说,算法也就Google重视,而且算法好也并不一定开发强。而现在正好相反,矫枉过正,很多人盲目过度重视算法,总以为会了算法就什么都会了,职场就一马平川了。

实际上,根本原因还是,很多人没有自己思考的能力,容易被洗脑,随大流。算法重不重要,要不要学,什么时候学,花多长时间学,学到什么程度,还是得结合自身来考虑,不可一概而论。

结合刚刚提到的几位朋友的问题,我来说说我对算法的认识,也纠正一下你对算法的认知!

实际上,算法面试主要还是集中在校招、1~3年初级工程师的招聘上。因为这些人并没有太多的项目经验的积累,没啥可问的,而且,刚毕业没多久,几乎是一张白纸,经验可以培养,潜力更重要,说白了就是更看重这个人聪不聪明,基本功扎不扎实,所以面试官就爱问些算法问题。但是,如果你已经工作很久了,或者面试的是稍微高端一点的职位,那面试官更看重的是你的经验、项目履历等,而不是从最基础的算法考起。

还有,算法面试主要集中在BAT以及同等级别的大厂。除此之外,即便二三线大厂,面试算法的几率也很低。说出来怕你不信,这些公司里面的面试官可能本身对算法也不是很熟悉、不是很重视,基本数据结构懂点,排序、二分查找懂点,但再难点的,比如动态规划之类的,就几乎不懂了。所以,你还期望他去面试他本身都不擅长的东西吗?即便他会问,但因为他自己对算法的理解也没有太深刻,所以就容易问出:请说一下红黑树的左右旋,请写一下快排,这样尴尬的问题!

而且,如果面试官不问算法,也千万别诱导让他问。如果你故意给面试官说,我刷了500多道leetcode,面试官估计会嗤之以鼻的:都多大岁数了,还跟小孩一样,以多刷题为傲,工作做好了吗?划水你老板知道吗?😂如果万一遇到一个算法大牛面试官,听你说刷了500多道leetcode,还不得出个图论的问题虐挺你!😂

一般来讲,大部分程序员还是在BAT以外的公司工作,在这些公司之间跳来跳去。在这些公司的面试中,项目经验、框架用的熟不熟,这些更重要!所以,如果你现在只是在一个很小厂,那踏实点,下次跳槽去个更大点的厂就行了,别太好高骛远了,老想着BAT。而且,能进BAT的人,绝对不只是算法好。只有算法好,也绝对进不了BAT。项目、履历更重要。从一个超级小厂,刷刷题就想进超级大厂,几乎是不可能的。做梦的成本很低,但现实往往会打脸!说句你不爱听的,圈子差别太大,你再牛逼,别人也看不起你,hr关都过不了。曲线救国,先进大点的厂,作为跳板,一步一步的往大厂靠近,最终就能进超级大厂。Dream Big,Act Small。既要有梦想,也要脚踏实地!

对于那些刚毕业、平时的项目开发都吃力的同学,你们就先别刷算法、补基础了,先把框架玩熟练,CRUD做到跟玩一样再说吧。算法、基础很重要,但没法立马转化成生产力,是一个长期积累的过程,没法像各大训练营中宣传的那样速成。你成天刷算法,结果项目做的一塌糊涂,就是为了自嗨吗?工作还要不要挣钱了啊?话说的有点重,骂醒你了吗😂

算法、计算机基础很重要,但绝对不要有速成心态,不要急功近利、抱着应付大厂面试的心态去学习。那种3、5个月就让你拿下xxx的,多半是忽悠!学习这些基础知识,就是要有日拱一卒、细水长流的心态,没事就看看,别耽误工作,也别期望以此就能一夜之间“鸡变凤凰”。

你觉得我说的对不对呢?你对算法学习的认识跟我的一样吗?欢迎来怼!😂

作者王争,前Google工程师,15万人订阅的《数据结构和算法之美》《设计模式之美》作者。微信公众号:小争哥,关注微信公众号回复PDF,获取100+页Google工程师的算法学习和面试经验分享。