最近几年参与了公司组织的校园招聘工作,每次去都会见到大量的学生,我喜欢和他们交流,观察他们的一言一行。为了进一步考察他们的综合能力和性格组成,我每次都会自己准备面试题,这些题目包括了编程基本概念、算法编程题、操作系统、数据库编程、开源代码阅读、垃圾回收机制、系统架构描述、实习期经历回顾、人生过程中遇到过的挫折、对于工作氛围的想法、未来的职业发展方向设定等。
这些问题中其实大多数都是开放式问题,一些是没有固定的答案,另一些甚至于是完全开放式的,需要学生提出问题。我的这组题目中,可能只有编程基本概念这一条有固定的标准答案,算法编程、数据库编程都有多种回答方案,只不过每一种回答的运行效率不同,这些都属于半开放式的技术问答。
操作系统、开源代码阅读、垃圾回收机制、系统架构描述,这些个问题则属于是自己出题的题目,为什么这么说?因为我会根据你所了解的知识点一点点地深究下去,一点点往下问,所以这是完全开放式的技术问答。
实习期经历回顾、人生过程中遇到过的挫折、对于工作氛围的想法、未来的职业发展方向设定,这四个问题属于非技术领域的完全开放问答,我之所以提出这些问题,是希望能够更加接近学生的真实生活、内心想法,了解学生的过往经历、三观,以及周围环境,这样可以决定是否录用,以及如何更好地发挥学生的能力。其实还有一道题,“你有什么问题?”,这是最后一题,建议面试官一定不要忘记这道题,并且尽可能地完整回答学生的问题。
所有的面试过程实质上是面试官和学生之间拉锯战,它就好像一个天平,只要标准统一、规则公平,那么谁占据优势,天平就像谁这边倾斜,自然这是公平的对决。前面说了,我的面试题包含好几部分,我们逐一来谈谈。
面试官: 你面试的一名即将参加工作的工程师,他具备一定的面向对象、数据结构等非常基础的知识能力,通过这些题目,你能够很客观地评价这名学生的基础是否扎实,记住,你是替工作招募员工,不是去做好人,所以技术基础不行的学生绝对不能收。我一般把这里的题目设定为必会题。
学生: 今年的题目是简述面向过程编程、面向对象编程、面向行为编程、面向服务编程的各自特性、优点。学生们对面向过程编程、面向对象编程比较了解,这可以理解,因为基本都学过编程,不然也过不了笔试,但是对面向行为编程、面向服务编程了解的就不多了,这其实体现了学校老师的实践水平,美国的一些顶级大学之所以伟大,因为它的老师群体很厉害,很多人一边自己开公司、写代码、搞科技创新,一边在学校教书,自身的实践能力会影响学生对于工作的看待,自然而然也愿意待在实验室不断提升实际编码能力,而不是背书。
面试官: 由于我们招聘的对象是即将上岗的工程师,建议你将这道题目也设为必会题,挑选一道难度适中的题目,可以在面试过程中提示学生,让他们写出效率尽可能高的答案。笔试时由于是机器考试,容易借助辅助工具帮助答题,所以我在面试阶段增加了编程题,进一步考察学生的实际动手能力,并可以以此回答作为能力划层的依据。
学生: 今年的题目是在给定的一组数据中找出相加后等于目标值的两个数据,并打印出他们在队列中的下标。面试的学生确实还不错,大多数人在经过思考后都能给出较好的算法实现,少数学生可以快速地回答,证明大家平时还是都在老老实实刷题的。
面试官: 这一题是针对编程题的扩展知识考察,由于我面试的学生是应用软件程序员岗位,所以我针对数据库进行考察,希望他们能够了解相对较为简单的关系型数据库的一些基础知识,而不是能够侃侃而谈一大堆数据库的特性,例如 left join、right join 的差别,但是却不能写出具有一定复杂度的 SQL 语句。
学生: 今年的题目是列出每个部门收入排名前三的员工信息,按照我的表设计,可以通过采用表自连接的方式查询出数据,但是可惜几乎没有学生回答出来,很多人开始和我扯需要使用“group”、“order by”、“top”,甚至能不能用 oracle 的某些函数,却忽视了 SQL 的基础。
操作系统、开源代码阅读、垃圾回收机制、系统架构描述面试官: 这些问题尽量不要限定回答问题、难度,最好能够让学生自己提出他懂些什么知识点,然后快速地深入提问,可以是让他们现场写出答案,比如他说熟悉 Linux 的 sed 命令,那你可以让他写一个分析文本内容的简单示例;如果他说看过 ConcurrentHashMap 的源代码,你可以让他写出源代码的核心部分,或者写出它的算法逻辑;如果他说了解 HashMap,你可以问他为什么 HashMap 不是线程安全的,如果你来设计,怎么可以让它线程安全,顺藤摸瓜地步步为营式提问。
我个人比较偏爱跳跃式提问,比如学生提到自己了解分布式通信协议,我会马上问“什么是 2PC”,他回答正确后立即问“ZooKeeper 里面的 ZAB 的实现原理看过吗?说说看”,回答后可以立即切换到相关的其他技术领域,只要概念类似,你都可以不断地来回切换,考察他的技术基本功。这一栏你可以作为良好以上的考察项,先确保前三个问题类别回答得是否好,再来看这个类别的回答,毕竟系统架构层面的问题,除非有丰富实习经验的研究生,否则一般都不太清楚。
学生: 对于面试官的横冲直撞,你一定不能乱,平时多了解新的技术,不要拘泥于导师的安排,多思考为什么项目需要这么来做,多给自己提为什么,不要很容易满足。Linux 已经发展这么多年了,一般项目都会采用它,但是依然大多数学生会说,不了解 Linux,平时没有用过。对于垃圾回收机制,几乎所有学生都能说出一大堆的术语,并进一步描述它的原理,但是当我问一句,“你打印过 gc 日志吗?告诉我怎么在 eclipse 这样的 ide 工具里面设置打印 gc 日志到一个文件里?”,几乎所有的学生都懵逼了,思考很久后说没有打印过。那你怎么学的???最终面试的学生只有一位回答了这道简单的问题。
实习期经历回顾、人生过程中遇到过的挫折、对于工作氛围的想法、未来的职业发展方向设定面试官: 为什么你需要提出这些问题?因为这些问题能够引导学生说出他的经历,让我们能够更加针对他们的初步回答进行深入地讨论,你要能够理解,公司招聘一名员工,除了他本身的技术基础以外,是否容易管理、是否具有极端心理、是否认同公司问题、是否具有未来发展潜力,这些都属于你的考察范围,而不仅仅是技术能力。其实会针对这些情况进行深入了解的面试官本身自己就是很认真的人,对公司具有归属感,希望能够真真切切地为公司招到可靠、稳定的员工。
学生: 这类问题本身就是非常开放式的,怎么回答取决于你自己。一位同学,面试过程中我问了“你想留在哪里?”,“成都”,他几乎没有考虑就回答了,“为什么呢?不想去大城市发展吗”,“因为家里条件不好,我想在能买得起房的地方就业,所以不考虑华为给的深圳 Offer,留在成都可以长久发展,也能给家里一些帮助”。我深入和他聊了聊家庭情况,他是家里老三,大姐已经出嫁,二姐初中辍学后打工,再回来上学,现在还在念大专,小弟还在家里读书,他自己初中开始住校,一路靠拼进了 985 大学。这类学生一般比较成熟,思维稳定,独立性强,能吃得起苦,技术基础也不错,自然成了选择之一。
每个人都不能决定自己的家庭出生,面试遇到了一位,在谈及“人生挫折问题”时,他慢慢地说出了自己的一些故事,“出生 8 个月父母离婚,跟着母亲单独生活直到初中,忽然有一天父亲来找他认亲,虽然没有感情,但是为了能够继续拿到生活费,即便出现父母分立校门左右两处的场景,我也依然需要独立面对”。我听完后反问他,“这些事一般会和别人说吗?”,“会和好朋友说说,面试官第一次说,因为你问的是生活中的挫折,不仅限于学习”,“那你希望未来的领导能像大哥一样和你沟通吧?”,“是的”。这位学生内心存在较强的不安全感,他的这种不安全感会影响自己的认知和行为模式,内心的一些事情可能会像海浪一样,无休止地拍打自己的心灵,所以,尽量安排成熟、稳重的导师、Leader 给他。
作为面试官,我们需要注意以下几个方面。
有些面试官对于学生的一言一行过于严格,私下交流时容易出现“这个问题他回答不上来就不要了”、“他回答不太愿意加班就不要了”、“他本科不是 211 以上就不要了”等等。尽量不要出现这样的思维和思考问题方式,每个人都是不同的,应该多给对方解释的机会,采用引导式的方式,尽可能地在开放式环境下听听他们的想法,不要过于苛刻,自己给自己画了圈之后,你首先要想想这个圈本身是否准确。这样来看,面试官这份临时性工作,本质是智商、情商、心理学的结合领域,尽量选择合适的人来做面试官吧。
无论是面试官,还是学生,是不是都需要能够做到这些。对于面试官来说,你的敬业、仔细、耐心,对于学生来说都是很好的映像,进而产生对公司的好感,有谁会喜欢一个翘着二郎腿的面试官?对于学生来说,较好的行为举止、准时、提前准备,都会对你很有帮助。我记得很多年前我去参加一家德国企业的面试,总经理是位中国人,50 来岁的老博士,他让我谈谈对于公司情况的了解情况,其实我已经做足了功课,把他们网站上的英文背出来了,我一边背,他一边睁大了眼睛,扶了扶眼镜,还纠正了对于创始人德文名字的发音错误,然后和我说:“你有什么要求,现在就可以提”。
前面提到了格局,做人不要仅限于眼前利益,不要太实际,不要只考虑自己。推荐学生们担任大公司的“校园大使”,这个工作一定要尽自己最大可能做好,积极配合 HR 小姐姐,其实过程中你也在被观察。这次就遇到了三位截然不同的大使,第一位非常认真,两天时间忙上忙下,布置会场、参与宣讲会、电话联系学生、引导学生面试流程等等,还找了几位好朋友过来帮忙,忙到自己没有时间参加免于,虽然他存在不太擅长于沟通的弱点,但是我在晚上 9 点结束面试后,单独给他留出了面试时间,并且和 HR 一起邀请他加入,他很感激地不停鞠躬。人如果能做到对帮助自己的人心怀感激,这人一定不会差。
第二位,面试当天他自己也坐下来面试了,技术一般,他自己介绍是校园大使,我正在犹豫时 HR 小姐姐和我聊起了他,“这个人责任心太差,请他帮忙招呼学生,他都懒得说话,自己管自己玩手机、吃饭,请他打电话联系没有来的学生问问情况,他一脸不屑,好像很看不起我们公司”,“哦,知道了,既然他看不上我么,我们也不用给他机会了”,他就这么错过了一家很棒的公司。第三位,我们面试当天她给自己安排了一天的面试,露了个面后就消失了,等她的事情干完了再跑来想面试,当然,我直接忽视了她。
每个人都有自己的兴趣、爱好,也许你很喜欢旅行,我朋友的孩子明年研究生毕业,拿给我一本他自己做的简历,后面附带了几张自己攀爬雪山的照片,问我是否合适?我给他的答复是,攀爬雪山本身是一件非常具有挑战性的事情,你应该突出这件事的困难,以及你最终是如何打败困难的,继而成功登顶成功的过程、心理变化状态等,这是面试官看重的,而不是你特别擅长旅游。
这次面试遇到了一位女生,跟团骑行绕海南岛一圈,我问了她一个问题,“骑行中如果出现分歧,你们怎么处理?”,“大家会一起讨论”,“讨论过程中,你扮演什么角色?”,“我一般不开始不发言,听大家说,然后归纳大家的意见,做最后的陈述”,再参考他的技术能力(比较不错)、实习经验(京东,半年以上),并且已经拿到了京东 Offer、学校(本科、硕士均 985),综合来看,她具有潜在的 Leader 气质,我给了“Excellent”评价。
这次面试遇到了一位学生,先说结果吧,没有录用。我内心有点小感触。他的简历看起来很正常,但是仔细一看,为什么 25 岁还在念本科?“我先考上了北方的一所 985 大学,后来退学了,重考了”,我必须要弄清楚他为什么退学,“总的来说还是不适应,第一次去报道,自己一个人去的,坐了两天的火车,到了天寒地冻的城市,没有学长接站,接着被分到了其他专业的寝室,只有 2 个同学一起住,读到大二的时候,仅有的两人中还有一人转专业了,人彻底奔溃了”,“你家里同意你退学?”,“父母当时已经失望了”。这段经历成了双刃剑,HR 担心他的内心再次出现奔溃,成为团队的炸弹,毕竟工作中的压力不仅仅是天寒地冻、无人聊天,现场问题处理过程中的压力之大是无法用语言描述的。希望他未来的人生可以走出自己的精彩。
另外还有一位女生,当我请她答题时,她托着腮帮子诉苦:“为什么你们这些公司都要问这些问题?”,“因为这些是技术基础,我们得确保你过来能干活”,“好难啊,不能简单点吗?”,我问了她的兴趣爱好,毕竟本科、硕士都是 985 的,应该能力很强才对。“我喜欢打游戏,生活轻松一点才好”。我和她继续聊了一会,建议她回家乡考公务员,那样应该不需要过多面对大城市生活的困难、责任,祝她成功。
因为那里容易出优秀的人。为什么喜欢优秀的人?有同学问我,是不是到了你们这个年纪就不用拼搏了,可以很舒服了?你错了,越是优秀的人,对于自身的要求越高,他会认同努力是人生的一部分,无论物质上多么优越,他都会持续努力,因为这是自身的定位,追求卓越,站得更高才能欣赏更美的风景,看看吴恩达大师的一周工作 70 小时就懂了。
前面洋洋洒洒说了一堆,最后说一句,仰望星空前需要做好脚踏实地,掌握好基础技术、动手能力强、三观正、具有较强的为人处事能力,这四点是一切可持续发展的基础,致所有正在校招的面试官、学生。