【 面试算法5分钟 - 序】



算法和工程, 这是很多初级程序员最头疼的选择。

更多时候,会选择去做回报周期更短的工程,而暂时搁置更基础的算法。在接下来的几年中,或许压根就没用上什么高深的算法,数据结构什么的也是封装好的工具。所以很多人直到经历了笔试的失败才会重视算法的问题。


但凡大一点的公司都会在面试中筛选算法能力。

在本专栏中,我会选择一线的公司面试题目来讲解。

题目的类别大致分为:

  •  图论问题
  •  动态规划
  •  字符串问题
  •  数学问题
  •  模拟问题
  •  计算几何问题
  •  数据结构问题
  •  ···

有些算法的理论基础很好掌握,比如树和图的概念等。有些就比较难,如动态规划,数学问题。

以微软的面试为例, 面试一般持续40分钟左右,谈完一些基本情况就要开始写代码了。此时就是面试界常说的,面对白板写代码。

你需要将你对问题的解决方案清晰的传达给面试官, 并在白板上写完算法的代码。(还有的时候你要迁就一下面试官。。因为他可能只会某些解决方法,而并不理解你的更优秀的方法,所以要知道常见问题的常用方法!)

面试的算法问题一般会有三个,难度依次递增。你要做的就是在这个过程中思路清晰,目光如炬,精神攫烁。。从代码到原理滔滔不绝,“如果。。。就会浪费多少的时间复杂度,我们可以。。。”!! 


千万不要一开始就上最优解法,要一步一步讲完自己的优化,因为很多面试官会问你:“有没有什么优化的方案。。”, 你要跟面试官有的聊才行!


那么问题来了,你的面试官会问什么样的问题?

首先,作为面试官,一定会去做点准备工作的,所以一些常用的面试题目他们都会知道。


其次,面试官本身有可能是学算法出身的!所以会见多识广,如果你在简历里有写道自己对算法颇有成果,那可能就要被来个下马威试试深浅了。当然如果你也真的有所研究,就轻轻松松了。但是如果真的不会,注意不要直接说不会,要尽力的分析一下题目,实在搞不定也要跟面试官请教一下。你分析问题的思路和对问题的好奇也会是加分项。


最后,最难的问题是,作为工程师,他在工作中的问题也可能会被抽出来出给你。可能他自己也不知道好的方法是什么。遇到这样的问题,你就需要有点基本功了。什么样的问题有解,什么样的问题无解, 目前解决该类问题的最好方案是什么,这些你要有概念,然后再仔细分析问题,找不到答案也要跟面试官交流,说不定他就想到了呢。。。


公司想要的,无非就是解决问题能力强的人。



(这是一个任重而道远的专栏!因为它有一个更响亮的名字:《爆照基金》!!)


Paladnix   Algorithm

教我吉他
     扫一扫立刻加入iGeekBar会员QQ群(545980198)
    和更多iG客会员交流分享吧~