交流面试的时候,经常有朋友会问一个问题:我正确回答了90%的面试题,为什么被拒?

我们就来探讨这个问题。

先回答我一个问题:假设一次面试满分是100分,你正确回答90%题,该得多少分?如果你认为该得90分,那说明你还没有理解面试,区分不开面试与考试的区别。考试是看你是不是合格,面试是要选拔最优。用考试的思维应对面试,哥们儿你南辕北辙了。

现在回答我第二个问题,如果某个职位,有10个人都能正确回答90%题,凭什么要求对方把offer给你?如果想不通这个问题,那你将来的面试成功率将永远是1/N(N表示竞争同一个岗位时,与你水平相当的人数)。

你有没有想过,你的竞争对手中,发生如下情况:

  • 有人能在满分100的面试中,得到150分,甚至200分
  • 有人能把一道10分的题回答成50分
  • 有人能用错误的回答,击败你正确的答案
  • 有人能用他不会的题,从你手中抢走offer

对我来讲,面试题都答正确只能算是及格。如果想在面试中占据优势,就要做到:走出题目、走出正确答案、走出自己的局限。

如何走出题目?

再一次面试交流会上,我问过道很俗的题目:你擅长独立开发还是合作开发?现场有90%人选择合作开发,他们认为合作是现代企业需要的。有10%选择独立开发,表示能力强可以独挡一面。在我的提示下,终于有人壮着胆子选择两个都擅长。我反问:“你两个都擅长?谁信呀”。那位同学立刻哑口。

当90%的人与你回答一致时,无论你的回答多么正确,也一文不值。当遇到选A还是选B的题目,你有没有想过除了两个最直接的选择外,你还可以:

  • 两个都选
  • 两个都放弃,而选C
  • 30%选A,70%选B
  • …….

对于这道题,我的回答是:我既擅长合作开发,也擅长独立开发。某年某月在某公司我参与某项目,与多方合作,达到极好效果。某年某月领导让我独立完成一项工作,我经过N多努力,取得惊人效果。

顺便说一句,我在面试中从来不会说“我参加的一个项目”,我提到的项目一定有:时 间、地点、人物、事件、结果。

再说一道我经常举例用的题目:写一个SQL在Users表中删除一个用户。

正确答案:DELETE FROM users WHERE id=[userid]

大部分同学正确回答之后,就回家等好消息了。我们冷静下来分析一下,这个语句是不是学过SQL两天的人都能写出来?这样的正确答案即便回答100道题也没用,因为这样只能不断证明你是个初学者。注意,我不是说 “你是个初学者”,我是说“你表现出来是个初学者”

看看这样回答是不是好些:先删除与该用户关联的其他数据,再删除用户数据。好在什么地方?不仅仅是回答更完善了,而且表现出“我有数据库经验”

我会这样回答:根据我的经验,我们从来不真正的删除用户数据,我们只更新用户状态。

UPDATE users SET active=0 WHERE id=[userid]

这样回答明确告诉对方,我不但懂SQL,也懂数据库,有项目经验,能够灵活运用。现在再看看最初那个正确答案还有任何优势吗?

其实我说的这些很多朋友早早就知道,却在面试中说不出来。

有人会好奇,面试官问SQL,会期望你回答项目经验吗?在面试中,如果有可能我会尽量超出对方期望回答问题。只有这样才能把10分的题答成50分。

这其实也解释了一种现象,为什么有人面试感觉很好,拿不到offer?你感觉好是因为题容易,但题容易了你会按照容易的发式去回答,而忽视了可发挥的空间。

我常说,面试中没有容易的题目,因为对你容易对其他人也容易。

一条原则,面试中容易的题要“小题大做”

一道题可以有很多种回答,每种回答又可以有很多种回答的方法。会面试的人可以根据自身情况、对方公司、天时地利而选择最好的回答。

举个例子,我在大四时面试一个通讯公司,面试被安排在晚上。其中一个面试题:你知道OSI网络7层协议吗?我突然意识到我们当天下午刚刚考完了《通讯原理》。也就是说我所有的竞争者(我的同学)都能倒背如流。我于是回答:我知道OSI的7层协议,但具体顺序不记得了。你等我理一下:最下面是网卡网线是硬件层,硬件搭建好了数据就通了,上面是数据链路层,数据连通了就能跑网络协议了,然后是网络层…….。当我的竞争者都会背时,我要展现给面试官我懂。

有人会问,把简单题回答那么复杂,后面时间不够怎么办?我再次提醒你,能不能把面试和考试分开?考试时间不够题没做完会扣分,面试时时间由面试官掌握。如果面试官准备了10道题,你在前5道题充分展现了自己的能力素质,后5道题还有必要做吗?

再举一个反例,我的一个朋友在加拿大的蒙特利尔(法语区)面试一个Java职位,问题是一道俗题:Abstract Class与Interface有什么区别?我朋友回答:Class表示“是”什么,Interface表示“有”什么。虽然回答方式有些标新立异,但是忘记了天时地利。一个以中文为母语的应聘者,一个以法语为母语的面试官,两人用都第二语言的英语讨论“是”和“有”的关系。能扯明白吗?如果扯不明白,对方当然认为你概念不清了。

无论是在准备面试,还是面试过程中,还是事后分析,我们必须要明确对方问你什么?你回答了什么?如果你还在想着正确答案,请回到开头重读本文。你必须要分析清楚对方的问题是再考你哪方面的能力,而你的回答都包含了哪些能力,有没有给足,有没有超出,有没有以外惊喜?只有这样准备面试,才可以一道题顶十道题。

我与朋友谈到的一道面试题:现在北京有一套房子,价格200万,假设房价每年上涨10%,一个软件工程师每年固定能赚40万。如果他想买这套房子,不贷款,不涨工资,没有其他收入,每年不吃不喝不消费,那么他需要几年才能攒够钱买这套房子? 供选答案:A-5年; B-7年;C-8年;D-9年;E-永远买不起

这道题的正确答案是E永远买不起。

当我算到永远买不起时,我立刻意识到,我的全部竞争者都会选E。这时就要突发奇想,有没有变通办法。也就是说,当其他人回答“不可能”是,我回答“可能”。

我的一个办法:期权,与房主签一个合同:7年后我以280万买下现在值200万的房子。现实中不是每个人都笃定房价永远高速上涨,会有人愿意和你签这份合同的。

我的第二个办法:分期付款,第一年买下20%产权,第二年买下18.18%产权,到三年买下16.53%产权,….到第7年可以付清全款。有人质疑:你确定法律允许你这样一点一点地买房产吗?我们去面试IT民工,不过是发挥一下创造力,又不是去应聘律师。

我的第三个方法,每年用40万买个很小的房子,到第7年把所有的小房子卖掉,再买大房子。

只要你愿意打破题目的边界,可以找到很多“可能”的方法。我承认我回答的不是正确答案。但要搞清楚,对方想考我的数学能力,我的回答中展现了数学能力、思维的广度、对待问题的灵活。这样,我的不正确回答可以击败正确答案。

另外一个例子,在我大学毕业求职时,一个国内公司说要考我个脑筋急转弯。我说我不擅长这类题,对方公司坚持要考。题目是:一个小孩家在17楼,每天回家坐电梯到15楼,然后再走两层回家,为什么?我想了想,说不知道。到面试结束,对方问我有什么问题,我说 “那个脑筋急转弯能告诉我答案吗?我想输个明白。”对方说答案是:小孩身高够不到17层的按键,只能够到15层。我听后大笑,说:难怪我答不出来,原来这个小孩弱智呀!一个三岁的孩子够不到东西都知道搬个小板凳,这个小孩能自己出去,至少也6、7岁了吧,天天遇到困难都不想一个办法?电梯房块砖头,身上带只笔都能搞定。我转而对面试官说:如果我有幸被贵公司录用,将来咱们就是同事,我周围工作的不会都是这种水平吧?(言外之意,用这么弱智的题目考我,你们的智商也太…….)

对方问这道题不过是考考小聪明,我的回答告诉对方:小聪明没有,但是我有口才、有逻辑、有应变。最后,再鄙视以下这道题,展示一下年轻人的傲气。

面试中,搞清对方要什么,然后加倍地还给他。“投我以木桃,报之以琼瑶”(曲解一下这两句诗)

很多朋友喜欢对面试题分类,什么人事题、概念题、经验题、behavior题。对于我来说,除了代码题要特殊对待一下以外,其他题目基本不分类,回答方法也一样:按照对自己最有利方式回答。你问我技术,我往里混经验;你问我经验,我往里揉智慧;你考我智慧,我展现细心。我的多数面试回答里面都混有附加值,我通过附加值从别人手里抢offer。其实,用不着每样都擅长,只要适当地添加的附加值,就大大地增加的胜算。因为多数人答题都只会在题里面转,你在玩儿附加值,就已经领先了。

现实的面试中,并不是每个面试官都能从你的答案中正确解读里面的附加值,但他会感觉到你的回答比其他人的好,至于好在哪有时他也说不清。当然,也有面试官对你添加的附加值毫无感觉,这种情况你还有必要以后跟他混吗?

多数情况,你不用走太远,只需要走一两步,比其他应聘者多走一两步。假设大家的水平相当,当遇到一道题时,你能想到的其他人也能想到。这是不要急着回答,多想一步,找到一个更好一点的回答,多一半的人就这样被甩掉了。

再举一个例子,又是一道俗题:你为什么要选择我们公司?

多数人都会用家庭原因、个人爱好、朋友介绍之类的理由。这些回答都属于搪塞,回答了和没回答没有任何区别。

我会这样回答:现在IT界的格局正在发生变化,未来的5-10年mobile device和online service将会成为IT业发展最迅猛的两个领域。我认为贵公司的产品,在未来世界会占一席之地的。这是我应征的主要理由。有分析、有远见、有决定,同时还不温不火地拍了对方的马屁。

不要浪费任何一道题,不要浪费任何一次机会,几乎每道题都有发挥的空间。

我们在从另外一个角度看面试。 比如某饭店要招聘一个大厨,有如下厨师应聘:

A. 可以在网上查配方,做出味道不错的菜
B. 刀工纯熟,配料精湛,掌握主流菜系
C. 掌握各菜系,可以根据时令、地区、客人,对配料进行调整
D. 可以根据已有菜系的特色,不断开发新菜品。
E. 了解各个菜系的起源和发展,以及对各地区文化的影响

现在分析一下谁最有可能拿到offer呢?

  • A或许某几道菜能比B做得更好,但是A几乎没有offer的可能。
  • B或许是个好厨师,但很难成为大餐馆的主打。
  • 当B在面试中与C或D竞争一个名店职位,胜算不大。
  • E虽然高高在上,但对多数餐馆来说似乎用不上。也就是说并不是玩得越大,机会越多。

再看看几个有趣的现象:

  • A能看得到B比自己强
  • 在B看来,苦练刀工,掌握更多的菜品是王道
  • 无论B怎样练刀工,都不可能成为C,因为思想没走出来
  • 在B看来C的某些错作是“错误”的
  • 人们对C和D的刀工要求并不高

对于B来说,必须要满足两个情况,苦练刀工才有意义:

  • 店家只想招个切墩的
  • 竞争者也是玩儿刀工的

对多数人来说,我们很难成为C和D,但是在面试中装扮一下总可以吧。从C和D的角度考虑一下问题,用C和D的语气说几句话,成功率就会上升。

现在说说代码题。我以前从没准备过代码题,我知道DP也是近一年的事。我不是说代码题不重要,但不要只盯着代码题。如果你认为代码题是王道,你的思维会被“封顶”,如同前面那个苦练刀工的厨师。

很多朋友对算法题只盯着两个东西:核心算法和bug free。对我来说,核心算法固然重要,但也不过20%。我从来不考虑Bug free,原因很简单,我做不到,即便做到了所展现的不过是bug free。相比之下,下面这些条目更重要,因为它们关联你的经验:

  1. 动笔之前,是否理解问题,是否问了该问的问题
  2. 思路是否在正确的轨道上
  3. 良好的命名习惯
  4. 是否考虑了通常情况和特殊情况
  5. 有没有针对性的优化(时间、空间或其他)
  6. 代码中涉及的概念是否都使用正确。
  7. 代码的可读性、可维护性、可扩展性(可测试性)
  8. 代码完成,清楚地知道代码的优势、劣势以及什么时候会出错

有时会遇到一种情况,某道代码题,如果保守写法比较稳妥,优化写法会有风险。我的抉择原则是:看那个保守写法是不是足够展现自己。如果只是个入门级,那么我宁可冒险优化。还是那句话,面试不是考试,对错不重要,对很多面试官来说,我在努力优化比把题作对更重要。有时即便你没有真的去优化,只说一句“让我看看,还有没有优化的可能”。也能给面试官留下不错的印象。

我常说,如果你发现代码的核心算法是多重循环,那干脆就别动笔了。

网上有个帖子提到“见自己,见天地, 见众生”,对我来说:

  • 见自己——给每道题找到最正确的答案
  • 见天地——根据天时地利,为每道题找到对自己最有利的答案和回答方式
  • 见众生——搞定面试官,挤死比自己学历高、能力强、经验多、做题猛的竞争者。

原文地址https://www.mitbbs.com/article_t/JobHunting/32327557.html