由“面经”引起的思考

所谓“面经”,就是面试经验了,求职者把本身的面试经验和教训写下来,供后来人参考。程序员

 

提及“面经”, 我不禁得想起新东方刚刚起步的时候出现的所谓“机经”,通过几千年考试的中国人在考试这一起很是有天赋,即便是上机考试,那些聪明的同窗也能把题目背下来,考完之后整理成题库, 中国人的雅思和GRE成绩常常是高得使人咂舌。面试

 

电影《中国合伙人》算法

 

我记得我找工做的那时候,“面经”并很少,市面上流传的都是微软面试的那些经典题目,好比为何下水道井盖是圆的? 估计一下一个城市有多少加油站? 等等。编程

 

拜互联网/移动互联网所赐,如今针对程序员的面经实在是太多了,不只仅是面试经验,还有不少面试题,尤为是BAT的面试题。浏览器

 

聪明的程序员们会把这些面试题分门别类地整理,写成文章,或者放到著名的同性交友网站GitHub去,作得好的还能得到很多小星星。服务器

 

更进一步,还有人创建专门的网站,出专门的书,教程序员们怎么面试,怎么应付HR。网站

 

存在即合理, “面经”的出现充分说明这是个火热的市场,有不少程序员在进入软件开发这个领域,仅仅是求职这个细分领域就能够热闹非凡。设计

 

我也看了一些面经,从中也查漏补缺学了很多知识,不过我更大的感觉就是,这些面试官问的问题怎么都差很少啊3d

 

好比对于Java有这么几个著名的问题:blog

Spring AOP是怎么实现的?

类加载机制,双亲委派模型是怎么回事?

HashMap的原理?

Java内存模型

volatile关键字的做用?

Java 的垃圾回收机制?

......

再好比基础知识的著名问题:

从浏览器输入URL到服务器返回结果,中间经历了什么?

TCP三次握手,滑动窗口

TCP和UDP的比较

实现个LRU算法。

......

我甚至想,能考察的技术点都被聪明的程序员们给挖掘完了,都端到了桌子上,悲催的面试官也想不到别的招数,只能从中选取了。

 

我也作过不少次面试官,其实也有这样的苦恼,到底问什么样的技术问题呢?如何才能区分出哪些是更好的程序员呢?

 

有这么几种招数:

 

1.  对于每一个知识点往深处挖掘,看看面试者是否是“知其然而知其因此然”,若是只是背会了面经的题目,不了解本质,最终仍是会露馅的。

 

2. 我记得原来IBM Db2部门经理在招聘时采用过这样的办法: “咱们就找一个Db2相关的问题,对Db2,面试者接触的很少,更不用说底层的技术了。 咱们请他和咱们一块儿讨论解决方案,若是他在思路上能一直跟着咱们,不掉队,那就说明这人技术和思惟就不错。”

这招其实挺厉害的,可以很好地考察一我的的总体能力。

 

3. 现场编程,在规定的时间内完成一个小题目,这对于大多数人来讲压力很大,可是这种考察方法时间过短,只能考察一小块能力,何况这个小题目也颇有可能在面经题库中。

 

4. 给一个相对大一点的题目,让面试者线下完成,时间能够拉长到几天,而后看看面试者的设计能力,代码能力。不用太担忧做弊, 面试者做弊的话,在复盘的时候仍是容易被发现的。

 

这些都是技术层面的东西,还有一大块难于在面经中出现的就是软技能。好比不少公司都看重的沟通和团队协做。

 

拿沟通来讲,若是面试者在回答问题的时候,不能把握提问者的意图,不可以答到“点子”上,而是在外围打转,甚至跑偏,那确定要失分了。

 

因此,理解面试官的问题,自信而准确地表达很是重要,其实面试官最终要造成一个印象:这我的到底行不行。

 

也许你的技术能力差点,可是从你对问题的分析和清晰的表达,让面试官以为是个可塑之才,招了吧。

 

总结一下,“道高一尺,魔高一丈”,在技术层面,面试官群体和面试者群体是个互相博弈的过程,双方的层次都在不断提高。 有时候,软技能反而能成为决定性因素。

相关文章
相关标签/搜索