两年前写了两篇有关如何写简历的文章(一、二 ),今天重新再看,仍然觉得很有价值。有时候回顾一下这些文章会发现自己仿佛正在退色,或者说发现自己在这方面有点不思进取,很少再写这种思想迸发的东西。(哦,其实,我的思想都付出在公司里面了,比如搞点培训,应用点新技术什么的。)既然有这种感觉了,那我不能再这么坐着不写点什么了。
今天,我来接着两年前的文章,再说一下如何面试。
我呢,并不打算在这里谈一些诸如要守时啊,要注意礼貌啊这种人尽皆知、假大空的问题。同时,也不会告诉你一些难以掌握的语气、手势等技巧,这些技巧需要长期磨练才能获得,对于不是频繁跳槽的人,或者需要换一个高端如CTO的人来说,我觉得是没有太大意义的。我打算从两个方面去着手讲解:被面试时一些被面试人容易犯下的、可能自知的问题;以及,面试官可能会犯的错误。我先从“被面试”开始说起。
假如你正在投简历、换工作,如果想要成功,你必须至少经过“写简历”和“去面试”这两个阶段。关于如何写简历,我在两年前已经写过,这里就不再重复了。如果你很幸运,拿到一个面试的机会,那么面试过程也许就会决定着最终的结果会如何。不过,其实在这两个阶段之前,还有另一个阶段,叫做“预习准备”,而这一个阶段却是绝大部分人所忽视的部分。“哦!不就是看看’面经’之类的东西,做做练习题么。”如果是若干年前的我读到这篇文章,可能也会这么想。不过实际上我想说的是,你需要预习一下你打算去的那个公司的情况。比如说:该公司主营业务是什么,该岗位将会做什么事情(有的时候主营业务和招聘你的部门没有关系),所使用的开发环境是什么,团队规模之类的。不要小看这部分工作的作用,虽然面试官不会因为你对这种问题的熟悉程度,而评判你的技术水平,但可以肯定的是,一定会对你的个人印象有所加减。比如说,如果你不准备这些问题,则可能会没有复习好该复习的技术,或者一不小心问了一个很蠢的问题,我会在后面的蠢问题一节给大家一些具体的例子。
其实,在中国的程序员(包括其它职业)其实真的很幸福,因为大部分的单位对这一点要求都不严格,只要你对你要应聘的单位和岗位有一点了解,面试官就该两眼放光了。如果放在国外,你需要的不仅仅是了解这么简单,你还需要针对你要投的公司和职位重写一遍你的简历,否则你是根本不可能得到面试机会的。而放在中国,几乎没有人这么干,也不必这么干。(面试官的水平限制,不会这么认真的看待招聘工作。)
面试的过程,很可能会千差万别,有的会纯问技术问题,有的纯聊天,还有的可能会很复杂。我只说我们所应用的面试流程:答题、提问、以及回答。在面试之前我们会给一份简单的题目,要求应聘人员在一定时间内作答,考核的是各个方面,包括基础知识、新技术了解、编程素养、以及逻辑能力。严格来讲,这应该是笔试部分,不过由于我们是随即立即面试的,因此面试的时候有的时候会据此展开一些提问。比如说:你对泛型了解吗?能否说一下泛型的作用和意义是什么?也就是说,在你答题结束之后,你其实是有机会对你即将要面试的内容进行一些猜测。当然了,这不一定凑效,因为有人也遇到过明明应聘c++职位,却给一份java题,而随后立即展开的面试又与这些完全无关。那么,这时候只能说该公司的招聘人员不够专业,你提前进行的思路整理没有发挥作用并不是你的错。而我在实际的面试过程当中,也会发现一些人没有很好的利用这些关键的信息来做好调整,以至于随后的面试中没有充分发挥。这个在接下来的蠢回答一些中,也会给大家一些示例。
在开始讲解具体的示例之前,需要给大家澄清一点,到了面试阶段,真正考核的不完全是你的技术问题,沟通能力的考察如果不占2/3,至少也会占到1/3。所以说,你在面试的过程中,要点不是展示你有多牛X,而是要展示你的人品与沟通能力。
蠢回答
案例一
问:请问,你对测试这项工作是如何理解的?比如说,你觉得这是一个创造性居多的工作,还是重复性居多的工作?
答:我之前的一份工作是美工,我觉得测试跟美工应该差不多吧?我挺喜欢美工这种工作的,因为会需要很多的思考。我觉得测试也是一样的,要想很多不合理的地方,而且每次面对的产品,需要想完全不一样的问题。
问:你是如何规划你的职业生涯的?或者说,你为什么打算转行做测试,或者说美工这个工作对你来说存在什么问题?
答:其实因为我哥是做测试的,他说做测试挺好的,他建议我转行做这个。
点评:这是一个相当失败的回答,因为不仅仅表明你对未来完全没有规划,而只是听从他人的随意指点,而且还表明你对你所投职位的工作、指责、性质等统统不了解。面试官,也就是你的未来上司,绝对不会找这样的人当手下,因为搞不好会三天两头表达不适应,甚至没过几天就会辞职。(很奇怪吧,我居然经历这样的面试,这其实也是一种招聘方的失败案例,后面会详解。)
当然啦,一般能回答道这种地步的还只是个别经验极不足者。不过大家不要偷笑,犯这类错误的人还不在少数,只不过是程度的问题而已。这类回答的错误在于,对你所投职位的了解不足,或者是没有基本的职业规划,以至于没有一个明确的自我升级改造的规划。比如我还遇到过有创业经历的人,后来做了一段时间销售,来我们这里面试做程序员。当我问到职业规划的问题时,他说未来准备走Team Leader -> 架构师 -> CTO。这个时候我还觉得有点意思,结果他话锋一转,就更有意思了。他说,最后再回去管理我们家的工厂(其父母是开厂的)。这一个回答也挺让我无语的,当然也是一个极端案例。那么我们往不那么极端的方面说,你应该提前想好:我要专研哪一个方向?数据库?桌面应用?工作流?网络通讯开发?网站系统?我以后要做一个技术专家呢,还是管理专家,还是架构专家,还是……?你的思路越清晰,面试官愿意招你的可能性就越大。
挽救:其实这个问题需要你在投简历之前就要准备好。很多高考考生填专业之前,也没有想过这些问题,选的什么专业是父母代劳的。就比如我们公司里面有人学的化学材料工程,结果毕业后做UE设计。她就说专业都是父母选的,等开始学了才觉得很不喜欢。如果因为这种蠢问题你被刷下来了,你应该感到幸福,因为那个未来对你来说,也许是很可怕的。简而言之,先想好了要做什么,然后再讨论找什么工作的事情。
案例二
问:既然你说之前的这个项目当中的权限系统是你负责开发的,那你能否讲一下,你的权限系统的机制是怎么样的?
答:哦,是这样的,我们有一个页面,是给管理员分配角色的,然后有另一个页面是给角色分配权限的,然后这个用户就有权限了。用户要首先在首页上面点击一个链接进行注册,然后访问那个页面就会根据权限来输出。……(讲了很久如何使用该网站,涉及技术实现的几乎很少。)
问:不好意思,我打断一下,你可能误会我的意思了。我想问的是,你的技术是如何实现的。比如说,某个用户是普通用户还是管理员这是如何识别的?
答:是这样的,这个需要管理员在一个页面中指定这个用户的角色,如果分配了管理员角色,那就是管理员,否则就是普通用户……(后面来往若干个回合,还是没有明白问的是什么。)
点评:这也是一个很悲剧的回答。该回答的错误在于,沟通失败。虽然说沟通失败一般是双方都有责任的,但是你不可能要求面试官如何如何吧?所以,你只能要求自己在这方面做得更足一些。其实该案例主要问题在应聘者身上,因为很显然,面试官所关心的肯定是你的技术实现,而不是这个产品是如何使用的。
挽救:面试的时候也许你会紧张,这是正常的。但是你需要不停地提醒自己,集中精力听清楚面试官的问题是什么。如果你发现你不能确定面试官的问题是什么,宁愿先反问确定问题的用意,然后再作回答。当然了,最高境界是我一问,你就知道我想要什么。但如果做不到,也不要发生风牛马不相及的情况。
案例三
问:(某个技术问题)
答:(等待了10秒钟)是这样的(开始解答技术问题)
点评:这个相对前面那两个案例来说,没有那么悲剧,不过也足以导致被刷。这种回答情景给人感觉不好的原因在于,你让人觉得你总是慢半拍。
挽救:如果你是需要很多时间思考的话呢(或者说是超慢性子),最好先说一句“这个问题有点复杂,我需要稍微思考一下”之类的,这比尴尬的等半天总强很多。我还遇到另外一个人,在快面试完毕的时候说“抱歉,昨天晚上通宵工作,所以反应有点慢”。这也是一个较好的做法,假如你真的是加班了。当然,如果能在面试刚开始的时候就说出来会更好,因为第一印象还是很难改变的。
案例四
问:能否说一下泛型的作用是什么?
答:泛型就是一个不同类型的数组,然后又增删改的功能,还可以直接foreach。
问:那ArrayList和泛型的List<T>又有什么区别呢?
答:ArrayList就是一个object数组。
点评:这种回答挺悲剧的。因为我能得到的结论除了你不是很了解泛型之外,还得到了另外一个结论:要么是不爱学习,要么就是想混过去,甚至两者皆有之。其实不了解不一定会被刷,但如果是态度有问题,那是铁定会被刷的。类似这样回答问题的,还真不是极个别现象。也许是觉得鸡毛蒜皮的东西漫不经心,又也许是因为心里面确实没底但又想要这份工作,无论如何,都给人一种不踏实的感觉。(哦,也许你不是不爱学习,不是想混的人,那么你更应该注意了,因为这会给人以错误的印象。)
挽救:如果你知道这个知识,不妨稍微详细解释一下,不要因为过分简化的总结,给人以错误的印象。如果你心里不是很有底,可以谦虚的表示“我不是很确定,我们可以探讨一下看看我的理解是否正确。我是这样理解的……”。如果你其实是不知道的,你可以大方的回答“这个我真不了解”。如果真因为你不了解而没有招你,那么你试图蒙混的结果也不见得有什么改变,即便真招了你,在试用期也能暴露出问题来。如果要进一步改善,就需要平时多积累知识了。
这里也给一个我认为比较成功的真实案例:
问:能否说一下泛型的作用是什么?
答:很抱歉,能不能给我讲一下泛型是什么,我工作中应该是用到过的,但是我不知道那一个是指泛型。
问:比如说List<T>。
答:哦,这个是泛型啊,那我大概知道了。不过我实际工作中要求用,我就用,并没有仔细研究,所以说的可能不是很对。我是这么理解的,就是相当于一个模板,写代码的时候不用惯性具体的类型是什么,只管写逻辑,到具体运行的时候给的是什么类型就自动变成那种类型了。
问:那你现在能否再说一下泛型的好处是什么?
答:这个真的很不好意思,我工作中没有要求了解里面的原理,所以我也没有很仔细的研究过。
点评:这个案例中的候选人,在技术上可能是有待改进的,但是这一个回答从面试技巧上应该是比较成功的。我不排除会有更好的回答方式,但是至少这个回答告诉我:
1、我不懂,但我没有打算隐瞒;
2、我不很了解,但是还是有一定的自信的;
3、我可以尽可能的把我所了解的内容告诉你。
如果说还要进一步的改进,我觉得应该是技术知识的积累,回答技巧方面已经不需要再做更多的改进了。
其实蠢回答还有很多,一时半会儿可能没办法总结完。但有一点是可以肯定的,就是看你对招聘过程是否态度认真。如果你真的很认真仔细,那么问题顶多就是你不知道自己犯的错误,只要有人告诉你了,应该是可以改善的。另外,还需要提醒一点,这些回答技巧的改进,好比只是可以让你腰板站的更直,能让人看清你的真实高度(而不是自己直接就趴下了)。这个做到了,接着你还要多摄取营养长高点,否则一米六的个子要办再直,也很难和姚明竞争。
接下来,我们还会继续讨论“蠢问题”。(待续)