聊一聊面试(一)
前些天一些叔伯辈的小孩大学要毕业了,可能感觉计算机行业赚的有点多,一些不怕加班的也想进入这个行业,于是就辗转找到我,希望帮忙做一些这个方面的面试辅导;而我趁着这个机会,对过去的一些思考进行沉淀,分享出来和大家交流一下。
在我看来,面试主要考察能力项包括:专业能力、沟通能力、思维能力、学习能力、思考能力和抗压能力五大方面;投射到实际面试,就对应于专业知识考察、过往经历考察、思维能力考察三大部分。
专业知识考察
针对后台开发岗,专业知识考察主要包括:编程语言、操作系统、计算机网络、数据结构和算法和数据库这几个维度。在编程语言这个维度,社招和校招思路还不太一样,社招更加看重于技能栈的契合度,而校招则更加关注候选人学习的深度;即参与校招的同学,不必因为熟悉的语言和职位的常用语言不太契合过于忧虑;大厂的校招,更加欢迎对某种编程语言能熟练使用并深入理解的候选人。
专业技能考察还有一个十分讨喜的点是优秀开源项目的使用和源码研读经历,这个分为两个部分,一个是使用经历,因为计算机行业是一个需要动手的学科,将开源的项目进行编译、部署和使用过程中,必然会遇到很多问题,这个本身就是对分析问题能力和解决问题能力的训练;另外一个是源码研读经历,开源的代码通常有优秀的代码设计、编码风格、以及编程语言特性的巧妙使用,因此源码研读不仅锻炼受试者的代码理解能力,而且对于其编码能力和编码习惯的提升有着很大的帮助。这一点对于校招和社招都是很重要的加分项。
另外一个需要关注的点是,现在很多大厂校招面试都得先过机试,因此在准备面试过程中,除了看书还得多实践,敢于写代码。
过往经历考察
过往经历考察一般是指面试官会针对受试者的简历内容,对其中的若干经历进行深入的考察,这个分为两个维度:其一是通过项目经历的深入细致的交流,判断其经历是否是真实的;其二面试官可以从这一部分实现对受试者的沟通能力、表达能力、逻辑思维能力、学习能力、抗压能力、思考深读等的考察。
而对于受试者,对于写在简历的每一个经历,需要想清楚以下问题:
1. 项目背景是怎样的?
2. 其他公司有没有类似的产品,他们采取怎样的方案,以及为什么?
3. 这个项目采取怎样的技术方案,为什么采取这样的技术方案?相比其他产品,这个方案的优缺点在哪?
4. 你在这个项目中承担有怎样的角色?
5. 这个项目推进过程中遇到哪些困难,你是怎么解决的?
...
其实不仅针对于受试者,对于工作的每段项目经历,上述罗列也是需要经常思考的问题。
思维能力考察
所谓思维能力说白了就是看受试者是否思维灵活,是否善于举一反三,触类旁通,或者是是否善于去拆解问题并运用自己的书本知识进行解决;这类题目一般形式比较多样,没有定法,比如怎么在1E个数字中间,找到第k个数字,就是堆排序的使用;一堆球中找到一个质量较重的,就是二分法的使用;怎么样从一堆数字中,找到唯一一个只出现奇数次的数,就是异或规则的使用等,这些可以通过一些面试书籍和一些面试博客进行训练。
关于于面试暂时想到就是这些,后面有新的感悟再更新吧。