交流面试的时候,经常有朋友会问一个问题:我正确回答了90%的面试题,为什么被拒?
我们就来探讨这个问题。
先回答我一个问题:假设一次面试满分是100分,你正确回答90%题,该得多少分?如果你认为该得90分,那说明你还没有理解面试,区分不开面试与考试的区别。考试是看你是不是合格,面试是要选拔最优。用考试的思维应对面试,哥们儿你南辕北辙了。
现在回答我第二个问题,如果某个职位,有10个人都能正确回答90%题,凭什么要求对方把offer给你?如果想不通这个问题,那你将来的面试成功率将永远是1/N(N表示竞争同一个岗位时,与你水平相当的人数)。
你有没有想过,你的竞争对手中,发生如下情况:
对我来讲,面试题都答正确只能算是及格。如果想在面试中占据优势,就要做到:走出题目、走出正确答案、走出自己的局限。
如何走出题目?
再一次面试交流会上,我问过道很俗的题目:你擅长独立开发还是合作开发?现场有90%人选择合作开发,他们认为合作是现代企业需要的。有10%选择独立开发,表示能力强可以独挡一面。在我的提示下,终于有人壮着胆子选择两个都擅长。我反问:“你两个都擅长?谁信呀”。那位同学立刻哑口。
当90%的人与你回答一致时,无论你的回答多么正确,也一文不值。当遇到选A还是选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呢?
再看看几个有趣的现象:
对于B来说,必须要满足两个情况,苦练刀工才有意义:
对多数人来说,我们很难成为C和D,但是在面试中装扮一下总可以吧。从C和D的角度考虑一下问题,用C和D的语气说几句话,成功率就会上升。
现在说说代码题。我以前从没准备过代码题,我知道DP也是近一年的事。我不是说代码题不重要,但不要只盯着代码题。如果你认为代码题是王道,你的思维会被“封顶”,如同前面那个苦练刀工的厨师。
很多朋友对算法题只盯着两个东西:核心算法和bug free。对我来说,核心算法固然重要,但也不过20%。我从来不考虑Bug free,原因很简单,我做不到,即便做到了所展现的不过是bug free。相比之下,下面这些条目更重要,因为它们关联你的经验:
有时会遇到一种情况,某道代码题,如果保守写法比较稳妥,优化写法会有风险。我的抉择原则是:看那个保守写法是不是足够展现自己。如果只是个入门级,那么我宁可冒险优化。还是那句话,面试不是考试,对错不重要,对很多面试官来说,我在努力优化比把题作对更重要。有时即便你没有真的去优化,只说一句“让我看看,还有没有优化的可能”。也能给面试官留下不错的印象。
我常说,如果你发现代码的核心算法是多重循环,那干脆就别动笔了。
网上有个帖子提到“见自己,见天地, 见众生”,对我来说:
原文地址https://www.mitbbs.com/article_t/JobHunting/32327557.html