做为一名程序员,须要精通高深的算法吗?

前言

如今因为互联网时代的到来,愈来愈多的人去学习互联网开发,成为程序员大军中的一员。也正是由于程序员大军中人数众多,致使了如今对于技术人员的要求也愈来愈高了。技术不断的更新变化,所以技术人员也每一年都在跟着时代不断的学习。今天移动开发火热,一群人去学习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上刷刷题目,在练习当中才能有所提升和进步!数据结构和算法

相关文章
相关标签/搜索