算法基础篇(12)------理性

来源:互联网 发布:手机聊天php源码 编辑:程序博客网 时间:2024/06/07 09:12

● 每周一言

时间,是杀死理想的帮凶,而主犯是我们自己。

导语

算法基础系列的讲解转眼间便迎来了尾声,感觉这十二期像一次OI培训。一些用户朋友不禁会问,在平时的工作之中,研发工程师接触工程较多,数据工程师接触大算法较多;而无论是研发还是数据,基本上鲜有用到这些基础算法的时候。既然如此,我们为什么需要去了解它们,尤其是在面试的时候还把它们当做考查的重点方面呢?抱着这个疑问,本文将从理性的角度出发,给基础算法正本清源,帮助大家理一理它的重要性。

理性

从理性角度看待事物,能帮助我们不迷信盲从,有助于加深对事物的理解,充分释放其价值。在这里我提出四个角度,帮助大家解读一下基础算法的重要性。

fig1

角度一:可以体现程序员的专业基本素质。

研零有一次和实验室众师兄们讨论学术,我问林师兄什么样的状态算是专业学术状态,林师兄转身问大虫师兄,“数据库三大顶级会议是哪几个?”大虫师兄不假思索地答道,“SIGMOD、VLDB和ICDE。”“没错,就是这种状态。”林师兄接着说,“也并不是只记住这三个顶会的名字就具有了专业学术状态,这种状态是经过漫长的理解与思考过程,潜移默化才能形成的。”

同理,对基础算法的了解可以体现程序员的专业基本素质。作为一个计算机工作背景的人,不管是在工作中,还是在平时的阅读中,还是在和同事的交流沟通中,多多少少都会接触到一些涉及基础算法的话题。如果真的一点都不知道,只能说明其专业不过硬。当然,通过死记硬背记住的基础算法是没有意义的,因为死记硬背不能让我们对算法思想触类旁通,举一反三。一旦遇到相似的问题,死记硬背的人通常会傻眼犯愣。

fig2

角度二:面试考算法,可以看出一个人是否聪明细心。

虽说都是一些小算法,终究算是一类比较智慧的话题。基础算法除了对逻辑思维要求比较高之外,一些边界条件的考查是非常能体现出一个人的心思是否足够严谨细致的。总之,讨论基础算法的过程可以清楚地反映出一个人是否聪明,是否能够快速反映学习,做事情是否细心周全,以及性格上是否浮躁不够沉稳,基本功是否不够扎实等。

这里特别提出一点:面试考算法,其实并不是考查算法本身,而是考查一个思考与解决问题的过程。就是说,即使对所考算法只是一知半解,如果能在面试中通过沟通与讨论,推导出标准解法,甚至推导出比标准解法更为有效的解法,这通常会是大大的加分点。因为这不仅体现出一个人的聪明才智,还展现出了其强烈的求知欲和主观能动性。

fig3

角度三:是一种方便的面试手段,提高了面试效率。

很多被拒的面试者通常会说,考官为什么不多问问工程项目方面的问题,而总问一些算法相关的问题。除开上述两个角度能回答这个问题之外,一个很关键的原因是,面试官从事的领域往往与面试者从事的领域并没有十分契合,因此对于工程项目的考察,到最后往往只能对一个方面下结论,那就是这个人的工作经验是否丰富。却并不能充分评估这个人其他方面的能力。

而相比于长篇大论先铺垫好一个大项目的背景而言,基础算法的考题描述显得十分简捷。它让考官和面试者之间不仅没有了工作领域上的代沟,在沟通讨论中还能帮助考官对面试者的基本素质能力一览无遗,节约了面试时间,也提高了面试效率,可以说是最方便快捷的面试手段。当然,也不能为了考算法而考算法,标准答案也并不是那么重要。就像前文所说,算法只是一类比较智慧的话题而已。

以上,便是我对基础算法的态度。敬请期待下节内容。

结语

感谢各位的耐心阅读,后续文章于每周日奉上,欢迎大家关注小斗公众号 对半独白

face

0 0