前言
现在由于互联网时代的到来,越来越多的人去学习互联网开发,成为程序员大军中的一员。也正是因为程序员大军中人数众多,导致了现在对于技术人员的要求也越来越高了。技术不断的更新变化,因此技术人员也每年都在跟着时代不断的学习。今天移动开发火热,一群人去学习Android、iOS开发,明天人工智能火热又一群人去学习Python、人工智能技术。但是很多时候,我们在学习完成了一门技术之后去面试找工作,一些公司在面试的时候往往需要考察算法知识。但是很多技术人员都知道,其实在工作中算法知识用的其实很少很少,那么就产生了一个疑问,作为一名程序员,数据结构和算法知识到底有没有必要去学习?
首先回答你,如果是一般岗位其实不用;如果是进BAT这种大公司,是需要会但是不用特别精通,如果是去国外加入Google、Facebook这种公司或者想拿高薪作为一名算法工程师拿就必须精通。下面我对这三种说法结合自身来分别说下。
一般型中小公司
对于小公司或者一般的公司来说,其实按照我的说法是不仅不需要精通,甚至可以说你完全无知也没关系。因为小公司或者一般的公司入门门槛低,不要说算法了,就算是面试官可能都不太懂技术,他主要面试的是人,也就是看人,觉得你合适就来,而且真正牛逼的人根本就不是靠小公司走招聘市场招来的,大牛一般都是靠挖来的。而且在一般的小公司都是专注去写业务逻辑代码,很多公司只需要你实现了这个功能就OK,对于代码编写规范或者时间空间复杂度等最优实现根本就不会去管你。所以你在这里面其实会不会算法都没有任何必要,会算法不会为你加分,不会算法也不会为你减分。
BAT
如果你是一个有追求的程序员,不甘心满足天天在小公司待着,而是想去BAT或者TMD这种大型公司或者超级独角兽公司的话,那算法是绝对绕不开的一个话题。就拿本人还有周围去面试过大公司的朋友来举例子。BAT面试全都要涉及到算法。腾讯我去面试过,在二面挂了,一面和二面其实都有算法题目,一面相对而言简单一些,二面的算法就有难度了。而我有一个朋友,拿到了腾讯和阿里的offer,他回来说腾讯五轮面试中有一轮面试是专门考察算法,总共六道算法题目给了你两个小时时间作答。阿里的电话面试里面也有一轮视频面试专门考察算法,也是当着他们的面手写算法。光讲思路在腾讯行不通的。本人曾面对腾讯的题目跟面试官说我谈谈思路吧,面试官直接怼回来说不要谈什么思路,直接写出来给我看,平时怎么敲代码现在就怎么写出来。可见对待算法完全没有任何商量的余地。至于头条公司那就更是如此了,因为头条就是一家以算法驱动的公司,对算法要求也比较高。但是即便如此,BAT对待算法还远达不到称之为精通的地步。
硅谷形公司——Google、Facebook
其实最凶残的公司是硅谷这些公司,例如Google和Facebook这类的公司。他们面试你问的全是算法,从来不会去问你专业知识,而且他们的算法问的是超级难得地步。只要你通过了Google、Facebook公司的算法面试,那么你进入公司想做什么技术岗位都可以。比如,你一个从来没学过Android的人,只要通过了他们面试,进去做Android也完全没问题。因为在老外眼里,算法是非常难得东西,你连这么难的东西还能通过他们的面试,那么其他的编程知识进去给你时间学也能够马上学会。所以你想通过他们Google和Facebook的面试,那么算法确实要达到精通的地步,如果只是初级水平可能只有进去参观的份了。而不管时代如何变,算法工程师永远是市面上的稀缺物种,稀缺就代表值钱,所以学好编程不如学好算法,语言只是编程工具,算法才是编程之魂!
如果需要去面试考察算法的,这里可以推荐一般本书《剑指offer》,这本书基本上涵盖了国内所有公司面试考察的算法题目,只要把这本书上的代码敲一遍,相信在算法领域面试基本应该没啥问题。或者想要动手操作的话也可以去LeetCode上刷刷题目,在练习当中才能有所提高和进步!
image
网友评论