招聘面试感悟-面试中你所不知道的

前一阶段公司招聘,对应聘者没有工作年限要求。作为所在团队的技术面试官,参加了大概一个周的不同场次的不同技术岗位的面试,感慨颇多。这里结合面试的情况从技术面试官的角度吐吐槽,并说说什么样的面试者更有优势。

我们先从简历说起,大多数简历都是千篇一律,很少会让人眼前一亮。反向思考一下,如果把你自己想象成面试官,你希望看到什么样的简历?从我的角度,简洁的,有效的,仅此而已。简洁的简历给人的一个初步印象是你提炼过你的简历,说明你对你寻找工作机会的重视。说的严重一点,能从你的简历看到你是一个什么样的人。间接的其实你为面试官节省了时间。每次当我拿到一份工作经验3年以内的简历,有时候页数能达到7-10页,里面罗列了各种小的项目,我就头痛。那么拿到一份简历,项目的部分我会看什么呢?看时间最近的项目,或者完成时间最长的项目,再或者技术体系与招聘方技术体系相近的。所以,大多数信息对于某一次面试都是无效的。对我来说,如果你不是应届毕业生,1到2个月的项目,我不觉得对你有多大锻炼价值,所以也不会去关注。

何为有效,首先你的简历是否有针对性,比如你要来面的是Python工程师,但是你的项目以及特长大篇幅的写你的Java的经验。那么这样就会给面试官造成一种印象,你大部分的时间及项目经历都是基于Java的,那么你的Python的水平是不是不咋地呢?这种看似不是问题的问题有时候是很要命的。拿我们自己这边的招聘来说,通常公司内部会有人推送一批简历,供多个团队挑选。这么多的简历要在短时间内筛选出来,自然不会在细节上做过多考量,能做的就是快速的匹配。那么如果简历符合上面说的这种情况,极有可能会被直接刷掉。说到这里,你也许有话要说,简历上写的都是真实的,难道让我在简历上撒谎?其实也不是,实事求是固然重要,但是你需要根据你面试的职位来调整你的简历,这就是我强调的要有针对性,比如上面举例的简历,可以弱化一下在Java相关的经验,突出在Python上的知识和开发经验。

另外你的简历是否能真实反映你的水平,其实面试官都知道,简历稍微带一些水分是可以接受的。但是如果你的简历水分太大,那么在你来面试之前就注定你的面试是失败的。一个好的面试官会根据自身招聘在技术上的需求,来考察你所掌握的是否符合要求。对知识的掌握有不同的等级,比如精通和熟悉就很不一样。虽然说不同的人对什么是精通,什么是熟悉的定义不太一样,但是从我个人过去的面试,如果你觉得你精通某一个技能,并把这个体现在你的简历上,而这个正好是我们需要的,那么我会往“死”里去问,直到扯掉你身上最后一块遮羞布为止。需要说明一点的是,我从来不觉得我这么做的目的是让人难受,来凸显我自己的牛逼,相反我只是想知道你有没有达到我心目中你应该达到的那种精通。所以当你在简历对某一个技能写上精通时,要三思。除此之外,不排除你简历上罗列的一些你不是很精通而被你写成精通的技术恰好是这个面试官所擅长的,那么极有可能面试官会附带跟你探讨一些,当你回答的不好的时候,本来可有可无的东西也会拉低你的分数。所以稍微懂点,平时只是写了点小例子的一些技术如果不在招聘方的技术需求列表里能不写就别写了。

简历这一关你过了,你终于去面试了。面试官的风格各不相同。在我做技术面试的时候,喜欢直达主题,首先抛弃那些华而不实的流程化的东西,比如自我介绍。可能有人会说,这个能考察面试者的组织和表达能力,但是在我看来完全没有必要,与其自我介绍,不如直接来介绍一个项目。在我的面试里,我会从以下几个方面来考察一个应聘者是否能达到这个这个职位的要求

技术

你是来面试技术职位,技术肯定是重中之重。技术是最不可能弄虚作假的,对某一个具体技术问题,回答的对就是对,不对就是不对。对一些描述性,总结性的技术问题,比如给定一个场景,你需要考虑什么问题,针对出现的问题,你会选择什么架构,其实在面试官心里也是可以量化的。所以这部分没有捷径,无论你去哪家公司面试,自身的实力决定你是否可以成功。

另外,面试过程中,你某一部分回答的不好,也未必就是多严重的问题。以我们自己的产品研发过程使用的编程语言Java和Javascript为例,面试过程技术问题肯定会向这两种语言倾斜,但是作为面试官,我知道的是在很多公司Java是用来开发后端,而很多后端的工程师对Javascript实践机会也不是很多。那么基于这个认知,即使一个面试者在Javascript有一些欠缺也不是本质性的问题,前提是他在Java上要表现的非常好。

很多时候,不见的你是通过你强大的技术实力拿到这个职位,而是说你区别于比其他面试者,仅比其他人优秀一点点。举一个例子,有时我会问面试者,你有了解过设计模式?你了解的设计模式有哪些?先想想你会怎么回答这个问题?大多数会提到单例模式,工厂模式。当然这也不是问题,不知道其它模式也不代表你不能设计出一个优秀的架构。但是问题是你跟其他的面试者没有区别,在这个问题上你没有占领面试官的心智。那如果你能说出一个区别于单例,工厂模式的模式,并想想这种模式的应用场景,哪怕你是纯为了面试准备的,都会产生积极的效果。

最后谈一下基础,做技术我们总要掌握一门或者多门编程语言。语言本身没有优劣之分,关键是看你对这门语言掌握到什么程度。很多时候,你选择一家公司,没办法选择业务,架构,技术框架等等,但是一个房子的搭建总是从地基开始,地基的重要性就不言而喻。那么,能不能掌握这个地基是怎么搭建的,并为下一次地基的搭建贡献你的力量,你是可以决定的。为什么基础这么重要呢?举个例子,比如你在传统行业或者小型互联网公司做技术,你现在想找一个大的互联网平台去拓宽你的技术视野,你锁定了BAT,那么当你去和BAT的技术面试官对话的时候,想想会是个什么样的场景?他们会抛给你一个问题让你说怎么设计一个系统能撑住双11那么大的访问量?我觉得不会,他们会基于你所处的公司及行业做一个基本的判断,然后问一些系统背后一些共通的东西,比如网络编程,JVM优化,分布式,一些你也经常用的框架比如Spring的实现原理等等,你看,这些东西在你工作中也会用到,只是程度深浅而已。即使工作没有涉及到的,你也可以通过自己的学习中得到。所以,这些基础的东西无论在什么公司都是相通的。最后要告诉你的是,上面我说的跟BAT面试官的交互其实真实的发生在我的身上。

项目

当面试官要你介绍一个项目的时候,你要当心了。面试官要你介绍某个项目之前,他肯定是看过你的简历,筛选过你的项目,觉得某个项目具有代表性,希望从中了解你的一些情况。我个人会从以下几点来考察,

  • 能不能说清楚你的项目到底是在做什么,包括业务,技术,架构,客户等等。
  • 你在里面是扮演什么角色?你是纯编写代码还是架构设计,是需求分析还是其它的角色,并且基于你的角色平时的具体日常工作是什么。
  • 谈谈某一个技术在项目里的应用,比如在架构层面或者业务编码实现
  • 如果你是做开发的,你了解你们项目或者产品的架构?
  • 你会在参与项目过程中遇到那些问题,并且是怎么解决的?

从上面这些考察点,你会发现我想了解的是你真实的参与一个项目,你在项目里做了什么,项目的技术架构是什么,你是否参与了系统架构的搭建,即使没有,你是否有心的去学习和了解,你的解决问题的能力怎么样。从这些考察点,还可以延伸出一些别的问题,比如你解决一个问题的时候,是否和别的同事合作过,是否跟业务部门打交道等等,这也能看出你的团队合作以及跨部门沟通的能力如何。

理想是丰满的,现实世界总是残酷的。从我个人面试的经历看,很多人连自己参与的项目都描述不清楚,很多时候,我会问很多问题,才能搞清楚这个项目到底是干什么的,甚至夸张一点的说,直到最后,都不知道这个项目是干什么的。当然这种例子比较少,但也不是没有。

学习

你不得不承认,不同的人的生活和工作的轨迹是不一样的。很多人不是不努力,只是说在某一个节点上选择上不同于其他人,那么他能得到的锻炼和机会就很不一样。所以这也会造成面试的人呈现出很大的差异性。在基于当前招聘职位要求和应聘者自身已有的技能的匹配不会出现较大的偏差的前提下,一个人的学习能力其实至关重要。因为经验和技能只代表过去,学习代表将来。两个人应聘同一个职位,入职后,都要从头学习,当然之前的经验也会发挥一定的作用。这个时候,学习能力的高低,无论是主观还是客观会发挥很大的作用。

面试中,我通常会问一些跟学习相关的问题,跟项目相关的,比如有没有主动去了解项目的架构,架构中有什么能改进的地方。非项目相关的,比如,最近有没有看什么样的书,对现在的一些新的技术的看法,或者考察对一些基础性知识的看法,如设计模式,敏捷开发等等。

沟通能力

很多人以为,面试中沟通能力强指的就是侃侃而谈,在我看来这种说法不准确。我们不能单独谈沟通能力,它一定是建立在其它的技能上,比如你面试技术,如果技术不过关,你沟通能力再强,也没用。简单点说,就是你要言之有物。

面试过程中很多因素会影响沟通,环境,自信心,甚至不合格的面试官等等很多不可控的因素。作为面试者能做的就是面试前积极的准备,在增强自身硬实力的前提下,多进行一些实践,在每次面试后,回想一下自己在这方面做的怎么样,那些方面做的不好,原因是什么?总结以后,做针对性的改进。

面试要保持平常心,这点很重要。但是不能拿这个当挡箭牌。认真的对待每一次面试,把准备工作做足。成功通过面试固然令人欣喜,但是失败的面试在我看来价值更大,它更像一面镜子,照出我们那里有不足的地方。而这些如果不改进,即使一次面试成功,问题总是放在那里。不是有一句话吗,出来混的迟早是要还的。最后不管怎么样,希望看到这篇文章的你,能若有所思,在面试这条路上过关斩将,到达胜利的彼岸。

发表评论

电子邮件地址不会被公开。 必填项已用*标注