

最近几年,团队一直在扩招,先后面试过的技术人员已有数百人,在之前的一些文章中也有聊过面试的一些感悟和想法。这篇文章,既是之前面试经验的一个梳理,也新增了一些近期新的感悟和看法。
在面试的过程中,最多的属于后端开发,其次是前端开发、客户端开发、运维、测试等。虽然岗位有所不同,但筛选人才的基本标准都趋于相同。下面分三个大维度来聊聊。
一、简历筛选
站在招聘的视角,面试筛选有几个核心维度:项目经验、职场履历、其他基础项(毕业院校、专业、年龄等)。
项目经验作为首选项,项目要与目前项目所需人才有一定的匹配度。比如,目前的项目都是To C的,但面试者的经验都是To B或To G的,那么从技术经验和实践经验来说,匹配度就比较差。
针对这一点,有一些提供简历优化服务的技巧中会提到一条:针对你面试的公司所需,针对性的编写简历。
但这一项有利有弊,站在面试官的视角,如果看到HR打印的简历和面试者携带的简历是两个不同版本,那种感觉,可想而知。技巧可用,但慎用,即便用了,也要保持统一。
项目经验的另一项指标就是项目相关度和项目质量。项目完全不相关,或者一直在做外包项目、CRM、ERP等类项目,这些项目是会影响简历通过率的。原因大家都知道,就不过多解释。所以,要提前规划好你的职业路径,保证项目的丰富度和技术含量。
另外就是简历本身的文案描述,尽量避免错别字,套话,尽量提升丰富度和用心度。这涉及到简历优化的第二条:数据化项目成果。比如明确描述,通过自己的方案改进或参与,某项指标得到了多少的提升。
作为面试官,这条不排斥,多少在简历筛选时有一些优势,但看多了,感觉也就没有太大的参考意义了。
关于职场履历方面,不要走两个极端:
第一个极端,不停地跳槽,平均一年左右一跳。如果你是这样,谁又能保证你来之后不会依旧保持之前的跳槽频次呢。
第二个极端,在一家企业待超过5年及以上。这一条的弊端在于技术停滞,在一个舒适区太久,就容易陷于惯性,不思进取。在这一条上还有一个buff就是“还是被辞退的”。大家可以自己想。
另外补充一项就是,待业时间最好不要超过三个月。如果三个月都没找到工作,能说明什么呢?比较挑,还是没人要?都不是好事。
关于基础信息方面,有些年龄大的应聘者会有意的把年龄忽略掉,就是简历上不写年龄。这样有一个好处,就是在筛选简历时,让筛选人忽视年龄这一项,获得更好的面试机会。这种技巧有一定的用处,但前提是你得技术能力足够好,不然在最后考量阶段,只会浪费彼此的时间。
最后就是不写毕业院校和专业的,个人感觉纯粹是多此一举,欲盖弥彰,减分项。这些信息,大大方方的写上就好。
二、面试的核心指标
由于经常面试各个岗位的人员,不同的岗位技术栈又有所不同。所以,当到二面的时候,对于面试者的提问会侧重三个方面:解决问题能力、基础知识以及软实力。
解决问题能力这一项比较容易考察。无论是否哪个岗位,只需要出一个场景化的题目即可。
举例一个简单的例子。无论面试前端、客户端、后端的开发人员,都可以设想一个场景:
目前有一个需求,需要实现一个类似思维导图的绘制,其中包含根节点、子节点和叶子节点。当你接收到这样一个需求时,你会如何设计数据结构,(如果是前端和客户端)如何将其渲染出来,且支持增删,在设计和渲染的过程中需要注意什么事项。
后端人员如果能把握和解决数据结构的设计以及如何进行查找和增删(考虑时间复杂度等),前端人员能把握住如何渲染,渲染过程中的布局、遮挡、动态变动等核心点,基本上就是不错的。但真实情况是,大多数人是没有思路的,只能说经验不足或通常只是被动执行者。
对于基础能力,无论哪个岗位的技术,对于基于的网络通信,比如HTTP、Websocket等是必须掌握的。如果它们的特性、适用场景、基本实现,能够调理清晰的描述出来,基本上就没什么大问题。
在后端面试时,主要是招聘Go语言,Go语言在微服务上有天然的优势。有很多面试者简历中会提到自己拥有架构能力等。那么,一个很简单的问题就能看出是否真的有架构能力。
在微服务的架构中网络通信是非常重要的一项考量指标。此时,会延伸问一下:在微服务的架构选型时你为什么选择了gRPC,而不是HTTP呢?它们有什么区别?
针对此项,重点考察的是HTTP协议与RPC协议的区别,适用场景,以及优缺点。很多面试者要么说,大家都这么选就这么选了,认为这是默认选项。要么就是回答一个是传输的是文本,一个传输的是二进制等相关又没那么重要的因素。很显然,这些都属于不懂的。
类似的问题,条理清晰的描述协议本身定义的区别,技术实现的区别,性能的区别,使用场景的区别,以及在实践中对开发者的可读性和可调试性等维度的考量才是重点。
无论上述的哪种面试方式,最基本都是:应聘者必须能够条理清晰地描述一个功能/技术项/设计方案的实现思路和原理。
以一个知识点为例,如果一个面试者不能够用简单、清晰的话把这个知识点的原理和实现讲述清楚,而是不停的在说,不停的在用各种似是而非,相关又不相关的内容来描述,那么他对这个知识点一定是不懂的。这一条,在后来的招聘中已经被验证了,屡试不爽。
软实力相关的重点是关注这个人的职业规划、预期目标、对做事所抱持的态度(比如加班、协作的看法)。通常有明确目标,有清晰或务实预期,有一定的解决问题方法论的人,更受青睐。
三、不同语言者的优势
后端面试人员最多,面试的语言为Go语言。Go作为相对新生的语言,开发者大多由PHP、Java等语言开发者转过来的。当然,对于编程年限不长的开发者也有一开始就从事Go语言开发的。
针对上述三类开发者,有一个直观的感受(没有大量数据统计,只是基于小量样本中的结论):Java转型者优于一开始就从事Go的开发者,一开始就从事Go的开发者优于PHP转型者。
观察到的原因如下:
Java是面向大型应用的开发语言,拥有复杂的架构体系、编程体系、语言特性(包括语法糖等),有更多的开源框架和解决方案,使用受众也比较广。对于Java开发者,可以说是见多识广,理论知识相对丰富,行业和面试也更卷。
从Java语言转Go语言,多少有一些向下兼容的意味。同时,两个语言又都有面向对象的思想,容易融会贯通。转型者还具备了多语言横向对比的视角。所以,在相对概率上,Java语言的转型者要相对优秀一些。
再说自始至终都是Go语言编程者,他们没有其他编程语言的拖累,从开始就适应了Go语言的简单、高效、面向对象等特性,没有负担,同时又具有深耕的特性。所以,这类应聘者,也非常不错。
最后,是PHP转型Go语言的应聘者。Go语言与PHP的设计理念、应用场景等相差较大,虽然也很容易上手,但在编程思想,基础实践的过程中,很容易将PHP的编程思想运用在Go上,导致程序本身的设计和实现混乱。反而有一些副作用。
当然,上述关于语言部分只是个人的经验和感受,每个编程语言都有非常优秀的开发者,这里讲的也只是相对的概率。
以上便是在面试了数百人之后,一些不同视角的看法和方法论,希望对面试官以及面试者有所帮助。尤其是对于面试者,如果有哪一点触动了你,那么就赶快提前行动吧。
全文完,感谢阅读,如果喜欢请三连。