前几天团队忙着招实习生。但因为时间紧迫,我这种没有面试官经验的菜鸟也被分配了简历。我在5月26日和27日各电面了一名同学,在电试的整个过程中,有了一些收获和感悟,借此文沉淀一下。先讲故事,再说说我准备电面的套路,最后谈谈想法。如果有说的不对或者不贴切的地方欢迎指正。

讲讲故事

先讲讲我电面别人的过程。是时候展现我的语文水平了。

1

第一场电面,我是从前一天晚上开始准备的。

前一天晚上我在逼乎上搜索“如何做好面试官”等相关词条。搜索结果中,我印象最深的是<如何当一个好的面试官?>(因为这个答案排第一)。该问题的回答大部分都是在讲一些抽象的东西,对于一个新手面试官而言有用但意义不大。后来在百度上继续搜索,发现同样没有“从零开始教你当面试官”的教程。至此,我只能Review自己以前的面经来思考如何准备面试。

当天,我又花了两小时准备电面过程中的面试题。通过简历我了解到面试者是计算机系的本科生,有两次项目经历,第二次项目是实验室项目,有一些亮点。根据简历中对技能树的描述,我判断这是一个有正常项目经历的正常技术水平的本科生,于是我准备的题目都是比较基础和常见的面试题。还有一个重要的问题:“你能实习多久?”

下午6点,我在大脑里简单Review了一下要问的问题,然后拨通了电话,开始面试。

“你好,这里是XXXX,我收到了你的实习简历,现在想和你简单聊聊。”

“哦哦,好的。”小伙子回答挺干脆。但是这个时候我突然脑袋一片空白,不知道该说啥,似乎之前并没有为这种场景做准备。感觉指针跳到了一片混沌区域。不管了,我看向我之前写的草稿,上面记录了我准备的问题。

“好的,那么请问,HTTP中Get和Post有什么区别?”

我就顺着草稿开始问问题了。问的过程中,我发现我身旁的J同学一副欲言又止的样子。我看向他,一边听电话,一边用表情询问。J同学小声说:“你没让别人自我介绍啊。” 我恍然大悟。难怪之前一直觉得不对劲,原来是忘记了这一个重要的环节。但是事情已经发生,我只能想办法在之后的面试过程中弥补一下。

接下来的面试过程,我提问,面试者回答,然后我在听的过程中,针对回答的质量做记录,当面试者回答错的时候,我会重复一次问题,确认一下面试者的想法和思路。

问完基础题之后,我说道,“好的,关于基础的问题就问到这里,现在请你做一下自我介绍吧。” 我厚着脸皮做了一个干瘪的转折。

自我介绍完毕,我继续针对简历里的项目经验进行提问,比如功能点如何实现,在项目中遇到哪些困难,如何解决困难的,同时也在草稿上记录一些关键的点。

电面最后,我说道:“好的,我要问的问题就是这些,谢谢你。”

“好的,谢谢。”

然后我就挂上了电话了。

J同学随后找我聊了聊面试的感受,同时指出了我在面试过程中一些比较严重的问题:1. 面试开始时忘记让面试者做自我介绍;2. 提问结束后,要问面试者有什么问题; 3. 面试结束后,应当以“之后有任何消息,会以电话形式联系你”作为结束。这些确实是我之前在准备的过程中没有注意到的地方。之前我准备的重点放在了阅读简历和准备面试题上,于是我在面试的通用流程上栽了跟头。

2

有了前一次电面的经(jiao)验(xun),我在草稿上列举了从面试最开始一直到挂电话结束面试,这整个过程中需要注意的地方。

这一次我依旧花了两个小时准备,大部分时间依旧花在了面试题的准备上。

同样是本科生,这次的简历比上一封简历要丰富一些:有四到五个项目经验,其中大部分都是课内的作业项目;技能树较广,从python、php、Java均有涉猎;简历有亮点,上面写着“精通JAVA EE”,“精通 SQL”,“精通项目设计及UML”。虽然一封简历出现了如此多的“精通”,让我的尴尬症都犯了,但是我还是很理性的准备了较为基础的面试题,毕竟,一,我不太相信一个如此多“精通”的同学到现在还没有找到实习(现在找实习已经算是很晚了),二,难一点的面试题我也不太懂 : )。

这一次的面试题,我准备了一些稍带套路的问题,比如ArrayList和LinkedList有什么区别? 如果回答没有问题,我会继续问HashMap和HashTable的区别,如果还是没有问题,我会继续问ConcurrentHashMap的基本原理。我认为一个好的面试题就是要这样一点一点的深入,这样才能反应面试者的真实素质。

下午3点半我拨通了电话,开始面试。

“你好,这里是XXXX,我收到了你的实习简历,现在想和你简单聊聊。请问你现在方便么?”

“好的,现在方便。”

“首先请做一下自我介绍。” 我有条不紊的说道,心力松了一口气,总算这次没有忘记自我介绍环节。

自我介绍完后,我开始提问,面试者回答。和上次面试不同,这次面试者回答错问题的时候,我不是重复再问一次,而是会进行引导。比如我问,String是值传递还是引用传递?他回答说值传递,同时解释,“因为String进行操作的时候原先的对象不会跟着变”。于是我说:“但是String不是Java基础类型呀,他是一个对象,传递的不是引用么?” 然后他改口道“String传递的是引用的值,把引用的指针的值传递给新的变量。” 对错姑且不论,这样的问答更能展示面试者的思考过程。

基础题问完之后,便是对项目进行提问。在对项目进行提问的时候,我总会问项目中使用到的设计模式(划重点!),也会让面试者讲讲某个功能模块的实现或者是架构。

这次面试让我较为印象深刻的是,当我结束提问的时候,面试者主动和我进行了沟通。他说:“可能因为我准备不足所以之前有些问题没有回答上来,所以现在我想主动说下我有哪些优点,有哪些比别人强的地方……”他以简历上某个我没有提问到的项目为例,证明自己的学习能力强,解决问题的能力高,有主观能动力。这个场景是我之前没有见过的,也没有遇到到的场景。我静静的听完他对自己的优点的介绍,然后简要的记录了一下。虽然他的论点并不能让我信服,不能让我认同他的解决问题的能力以及学习能力,但是他的主动自信还是让我眼前一亮。

面试最后,我按照流程问道:你有什么想问的问题么?

他问,有那么多人面试,那你们想招什么样的人,有什么评判标准?

这种问题对于经验丰富的面试官一定不陌生,但是作为一个无多少经验的新手,我只好说一些官方话:我们需要的是有培养潜力的人,基础要求可以降低,但是学习能力、解决问题的能力要好,沟通能力好……

“那你觉得我之前面试的表现如何呢?”他接着问道。

“挺不错,那你觉得你的表现如何呢?” 我心中呵呵,小子和我玩套路么?已经有人提前告诉我怎么回答这个问题了。

诸如“之后会电话通知你面试结果”的面试套话讲完,面试过程到此为止。第二次面试的效果比第一次好,没有忘记面试的基本步骤,该说的东西都说了,并且客观来说我作为面试官的表现比上一次要好,比之前冷静,比之前更能把控面试的节奏。

说说套路

现在站在面试官的角度,总结一下准备一次电话面试的基本套路。

  1. 阅读简历,对面试者做一个最初的了解。

    通读一遍简历之后,对面试者会有一个大体的印象。是本科生还是研究生?项目经验如何?技能树的广度和深度如何?在阅读简历的过程中,心里有个预估:这位同学技术实力应该是属于及格,不错,优秀还是牛逼?然后准备相应难度的面试题。

  2. 了解招聘的目标

    此次面试的目的是招实习生。在面试中的直接体现是:1. 不要求基础知识非常扎实,但是基本工具需要会使用 2. 要有较强的解决问题的能力 3. 要有较强的学习能力 4. 实习时间不能太短。

    所以在面试过程中,不问深的技术问题,最好结合项目提问,了解面试者思考问题的能力以及沟通能力。同时需要知道面试者可以实习的时间。

  3. 准备面试题

    了解了这次面试的目标及定位后,需要开始准备相应类型的面试题。我比较喜欢各个常见类型的题目各准备一道,然后把答案复制粘贴到一个文本里,以免自己面试的过程中大脑一片空白。 准备的题目的套路如下:

    • 一道HTTP的题目 (Get和Post的区别?还有什么其他类型?)
    • 一道Java的题目 (ArrayList和LinkedList的区别)
    • 一道Spring的题目 (什么是AOP、IOC,实现原理是什么)
    • 一道数据库的题目(数据库的事物隔离级别)
    • 一道TCP/IP的题目 (三次握手,四次挥手)
    • 一道算法题 (排序?时间复杂度?)
    • 一道Git的题目 (什么是Git FLow? 如果不知道,你的项目中是如何进行代码版本管理的?遇到什么问题,怎么解决问题?)
    • 结合项目提问
      • 项目中使用了哪些设计模式?
      • 某些有亮点的功能点如何实现?
      • 项目中印象较深的问题,以及如何解决问题的?
    • 能实习多久?

    至此,估算面试时间大概在20分钟左右,是一个比较理想的面试的时间长度了。

  4. 面试过程

    面试过程中,要注意提问时,语速中等,吐词清晰,表达准确,不要因为口音或者说话太快干扰面试效果。

    还有一些要注意的地方:

    1. 尊重。我理解我能做到尊重就是:花时间仔细阅读简历,仔细准备合适的题;面试的过程中要像自己去面试一样的严肃认真,重要的点记笔记;面试者和面试官在沟通过程中平等的,所以语气不能太严厉或者有压力。
    2. 摆正自己的位置。在这次交流中,我扮演面试官的角色,所以在面试过程中,我主要负责提问和听,引导这次交流的方向,所以尽量的把发言机会让给面试者。
  5. 总结面试结果

    面试完毕后,需要对面试者的表现作出评价,通常从以下方面进行评价:技术实力、学习能力、解决问题能力、沟通能力。此外,除了对面试者作评价,对自己也可以做出评价。作为一个技术人员,当面试者与当面试官是逃不过的事情。利用每一次面试来锤炼自己的能力,及时总结,沉淀经验,也是不错的。

谈谈想法

在我看来,面试别人和参加面试,都是一件让人紧张的事情:担心自己在面试的过程中表现不好。面试者回答不了面试官提出的问题,没有展现自己的思考力,说话断断续续没有条理,是表现不好;面试官问偏怪难和没有意义的问题,不能正确引导面试的节奏,也是表现不好。为了避免这种事情,为一场面试做充分准备是十分必要的。在准备的过程中,面试官需要注意的点比起面试者要多,就如同考试,老师准备的总是比学生多。

在紧张之余,扯扯一些我的想法。

  • 互联网公司到底需要什么样的人才?

    不同阶段的公司需要不同类型的人,同时应届生与实习生的要求也不完全相同。一个创业公司需要的是立即就能保质保量干活的壮丁,成熟的企业,需要的是有培养价值的新人。何为有培养价值?这是一个抽象的问题,它不像考试的分数一样直观。既然它不是直观的,那么就需要别的一些手段来进行考察,这个手段就是“面试”。

    根据我(少得可怜的)面试官的经历,考察面试者是从以下几个维度:

    1. 技术实力

      这是一个比较客观的指标,通过回答技术问题,能够大致了解面试者的技术实力。这里的技术实力不宽泛的拓展开来,而是特指的对现有技术栈的掌握情况。

    2. 学习和解决问题能力

      这两个维度我认为在面试中通常是绑定在一起的,都是面试者思考力的体现。直观的考察,可以对面试者的项目进行提问,了解项目的一些难点以及解决问题的过程;间接的考察,需要一定的时机,比如当面试者在回答技术问题时回答错误或者没有思路时,面试官应该引导面试者进行思考,在这个过程中,面试者的思路是否清晰,考虑是否周全,是否能利用已有的知识储备进行思考,都间接展现了面试者的思考力。

    3. 沟通能力

      沟通能力的考察贯穿整个面试的过程。从开始的自我介绍,到技术问答的来来回回,再到介绍项目经验,面试官会对面试者有一个主观的感受:在表达想法时,是否说着说着就偏题了?说话是否含糊不清?是否有条理性?沟通过程中面试官同样需要注意,在提问的时候,问题一定要清晰明了,表达准确,不要有歧义。

    4. 其他方面

      一些与个人能力关系不大的方面。实习生一个重要的指标是能实习多久。价值观的考察也是一个方面,不过这应该是HR面的范围。

    在以上的指标中,最重要的是学习和解决问题的能力以及沟通能力,其次是技术实力。对于应届生和实习生来说,技术的不足是可以在之后的工作中进行补足的,但是解决问题的能力和沟通能力不是那么容易就能提高的。

  • 如何做一个优秀的面试官?

    做什么事情都要想着做好,所以在当了两次面试官之后,我开始思考这个问题。

    1. 面试官的技术实力

      好的面试官,技术实力一定不差。有较强的技术实力,面试官可以在面试过程中,随时调整提问的难度,保证面试的节奏,不会出现一问三不知,或者问的问题太简单,否则无法考察出面试者的水平。同时,面试官技术实力越强,面试过程中会越有底气。

    2. 提问技巧

      提问技巧是一个积累的过程。目前我认为有两类提问技巧,一种是基础知识的问答环节,面试官需要有技巧的引导面试者思考,当答案错误时,巧妙的对其进行纠正,当答案正确时,设一个小陷阱,看面试者是否中招。另一种是在对项目经历进行提问时,选择一些关键点进行提问时,多用特殊疑问句,少用一般疑问句。比如不要问“在你的项目中,是否用到了UML、设计模式?”,可以问“在你的项目中,当业务逻辑复杂化,你是如何整理业务逻辑、优化代码的?”

    3. 把握节奏

      面试时间大约在20分钟左右,在面试之前,就应该有一个大体的时间分配。如果简历的项目经历有非常多的亮点的时候,可以分配10到15分钟到项目经历的提问上。如果简历的技术栈很广并且都与公司的业务相关,而项目经验没有多少亮点,则可以花更多时间在基础知识的提问上。

      另外,在沟通过程中,如果提问卡壳了,面试官可以引导面试者思考,也可以继续下一个问题,不能两边一起沉默。当面试者跑题太远时,面试官要打断和提醒。

    4. 尊重与沟通

      面试官是面试过程中的主导者,但不能是主角。因为主角是面试者,而配角要留给足够的空间给主角。

      提问完毕后,面试官要耐心的听,不能因为面试者回答的质量不好就烦躁或者笑场。而面试官的每一次发言都应该是有目的性的,不要说废话,不要问涉及到个人隐私的问题,更不要无形装逼。

  • 如何做一个好的面试者

    从当面试官的经历里反推,我应该如何做一个好的面试者呢?

    首先是好好准备简历(如何准备简历请自行搜索)。虽然只面试了两个人,但是我阅读了好几份简历。过程中我觉得大部分简历都有一些明显的问题。其中印象最深的一点是项目经历的描述要么废话太多,要么描述不够。在描述项目经历时,最好是一句话描述项目的作用,一句话说明自己在项目中的分工,一句话记录过程中使用的技术和功能完成情况。描述要精练,准确,最好有数据上的支撑。

    其次,交流的过程中一定要有条理,说话要清晰。当我作为面试官,我希望面试者在回答问题时,有一个明确的脉络,比如描述项目的功能点时,能够先对项目整体用一两句话做个介绍,然后说明功能呢点解决了什么问题,用了什么技术,如何解决了问题。

    最后是淡定,不要太紧张,人一紧张,说话就会忽然快,或者断断续续的。其实面试官在面试时也不是期望所有提出的技术问题都能被完全正确的回答,在回答过程中,如果不知道,就坦率的说自己不会,如果有任何思路,可以大胆的说出来,说对说错都能展现自己的思考力。面试不是应试,应试的结果是一个死板的得分,而面试的过程,很多细节都能成为你的加分项。

写在最后

其实说了这么多,讲得也都是些大道理。现在讲点别的。

我个人是十分害怕和讨厌面试的,一如我讨厌英语课在讲台上演讲。但是两者相比,明显面试更可怕,因为当你英语课演讲失败,你失去了一些分数,面试如果失败,你失去了一次工作的机会。一次机会,有可能改变一次你的人生走向,不管怎么说都是有些残忍的。

那应该怀着怎样的心情准备面试呢?

当然是平常心啊!无论平时的你是一边看电视剧一边肝手游,还是默默在图书馆和工作室敲着代码,到了准备面试的时候,你都要客观理性的接收现在的你。面试前夕,仔细分析自己的优缺点,展示自己好的一面,不要对自己有过高的要求,毕竟你不可能一个晚上的时间就精通JAVA PHP PYTHON C。这里我说的“平常心”,指的是看淡面试的结果。有面试官喜欢你,就有面试官讨厌你,面试是一个充满了不确定的过程。有不少技术大神含恨跪在了HR面,也有不少技术渣渣顺利通过了整个面试过程。不以物喜,不以己悲,每次面试之后客观的复盘,找准自己的不足并进行补足,这个才是正确的面试姿势。

毕业后很长的一段时间内,我经常会感到焦虑。我会为这个周末一直在看视频而没有看书感到愧疚,会为这个月没有完成既定的博客目标感到失望。翻开书,一小时也看不了几页。不知从什么时候开始,驱动我学习的不再是对新知识的好奇,不是实现心中idea的欲望,而是市场竞争的枪林弹雨。我不停的告诉自己现在竞争很激烈,不学习就会被淘汰,但是总是事与愿违,越逼自己,效果越差。这让我想到了RE零里的一个场景,男主角为了帮助公主,每天和老爷子练习剑术,每天都弄得伤痕累累,但是老爷子则一针见血:你这样训练,只是为了让自己看起来很努力罢了。

生活中的我们,有多少人是为了实现目标而不断努力,又有多少人是为了让自己看起来很努力而不得不努力?

所以还是对自己真诚点吧,我们可以对自己克制,但是不要对自己虚伪。你不是一个勤奋的人,那就不要想着每天都看书学习;你不是一个外向的人,那就不要拉着别人叨逼无营养的话题;你不是一个聪慧的人,那就不要想着一天从入门到精通。你不是上帝的宠儿,那就不要想着每次面试都会让你通过。

说了这么多,除了为了弥补学生时期我没有得过高分作文的遗憾之外,就是强调一下平常心。人生充满了恶意,在看清了现实,了解到自己有将近100%的几率无法change the world,有极大几率努力工作却碌碌无为之后,也只有平常心能够让我们还有勇气笑着活下去。