查看原文
其他

聊聊面试

老G 技术琐话 2021-08-09



有一些群友最近又集中聊了聊[面试]这个题目,找到曾经的一篇旧文,重发仍然有现实意义。


袁英杰说,作为曾经的面试机器,除了少数强人可以让我一见钟情,大多数都是在努力的找对方能打动自己的点。


刘锟洋说,我主要精力都在问大而全的东西了,后面人进来后发现基础不错,协作能力强,项目合作也还可以,但是主动思考的能力一塌糊涂。


聪哥说,据我观察,在公司里面最能为公司创造价值的开发人员,往往是工作态度认真的人。工作上心的人即使笨一点通过不断练习,还是能很好地完成工作的,而工作不上心的人,做事容易丢三落四,为团队带来麻烦。所以我觉得面试和试用的时候考察应聘者对待工作的态度是非常重要的,技术和思考能力设一定门槛,但也不用太高,现在技术都很公开,认真做事的人,即使进来前懂得不多,进来后也可以学。


那么问题来了,面试应该考察那些因素呢?大部分面试官已经拥有足够的经验,还需要往下看吗?


稳妥招聘法


稳妥招聘法是常见的方式,而且比较有效。比如谁做了互联网金融,就有猎头定向的挖人,可以快速复制一个xx产品,然后薪酬double了!此类招聘的好处是背景经验对口、享受红利。但未必适合开创性事业,招聘目标上对于创造性的考量就不会多。

稳妥招聘中,比较看重项目经验、产品经验。容易出现问题的是面试者做了什么,很可能是在一个NB的产品中打了会酱油,对于细节就特别需要斟酌了。


难题招聘法


还有一种招聘方法就是难题招聘法,展示项目或者技术待突破的难题,招聘可以close相应难题的人员。此类需要规避[赵括]式人物,熟读兵法但尽在纸上。


模板考查法


有些公司的招聘反馈模板包含这几样内容:

1:请描述面试者优势

2:请描述面试者不足

3:请补充其他信息

4:结论:本轮面试是否通过(及岗位层级建议)

so面试官需要通过面试者的case阐述来挖掘足够的信息。


大脸猫同学苦口婆心的给出面试建议:讲项目的时候,一定要阐述清楚来龙去脉,最好能加上做这个项目的时候为什么要这么设计,以及自己的一些思考。项目讲完了,面试官觉得你还可以,就会问一些场景问题,那这时候就是考面试人的应变能力和举一反三的时候了,其实有些问题面试官也没有标准答案,考察的是应试人对技术的感觉和对问题的理解以及解剖能力,那么这时候就是不能紧张,把问题分析清楚并提供解决方案,最好能给出多个解决方案,以及优缺点。还有就是面试的时候一定要自信,做任何事情都应该自信,不要紧张!


笔者也亲身经历过一个不断挖掘解决方案的案例,面试官问了6次,你觉得你现在这个方案有啥问题,有没有更好的解决方案!(一直到入职后我都在怀疑这位面试官自己的答案是什么...,可见印象至深。)



做好准备

面试会有很多情况,会让你觉得不那么痛快,比如:

  1. 面试官不守时

  2. 反复询问你的经历,而这些内容在简历上已经足够清晰了

  3. 一个未准备好的题目

第1、2条让我怀疑面试官对这次面试的真诚与否,但在互联网公司,被干扰亦是常见情况,特别是2面、3面一站到底的情形。第3种情况往往让面试效果大打折扣。当你面试了数百人还得保持非常高的热情,还能做充分[结构化面试]的准备是不那么容易的。我最近就有一个case,有一个设计题目是近期才开始启用的case,由于对于业务背景的剥离不够彻底,需要反复的解决我们想要解决的问题域而导致浪费了不少时间。


知识面与开放性问题


一位做电信业务的技术专家要转到互联网,一位做企业客户的技术人员要转向面向海量C端客户的应用开发,虽然没有积累,但应有相应的准备和知识储备,比如看过几篇架构文档、paper、对于之前做的项目有一些借鉴和思考。


面试者应该思路开阔一些,避免手里拿榔头就满眼都是钉子。比如在之前的工作中都做的是有向图,拿到问题就直接开始设计有向图的解法。这是典型的设计能力问题。都能做有向图了,那些简单的树和链表的问题也应该能正确处理才对。


我习惯在面试中询问近期有看过什么书,无论电子书还是纸质书!如果3个月没有看过,那半年之前呢?主要是考查学习能力和对从事行业的热爱、自我管理等。比如说看过[微服务架构与实践],会聊聊印象最深的是什么,有哪些收获,和工作中使用技术体系的关系等。很难想象,不看书的人是热爱这个行业的!


代码不规范的多半代码能力堪忧


Google的冯老师谈到他的经验。


因为技术面试一定要面算法&Code,所以我都是先讨论问题,最后要求写出代码。表达不好的人通常我会比较小心,因为有些人能两下说明白问题的要点,我就知道该进入下一层了。有些人可能是心里明白但是没讲出来,就不好确定要不要进入下一层。这种情况我通常都是要求对方先写一个简单地程序,关键看边界条件处理的对不对。能力差的人通常都是说这个情况我要单独处理,那个条件可以这样做,但是到写程序的时候就会漏掉或者完全搞不清楚在哪里检查。有能力的人程序通常都是简单清晰的。


还想到一个简单地问题,代码风格不要太差。如果不是应届毕业生,但是代码写出来都是int a,b,c; String str; 基本上就不能让人相信这个人有多少经验。类似的我还碰到过写成 if( a && b || c &&d ||...) 这种代码真的就直接out了。

代码要有一点优化,虽然面试的时候都比较匆忙,也还是要多考虑一下。比如类似的代码要不要有一个函数,函数之间的职责是否清晰。要写code的题目通常不会很复杂,多考虑1分钟就能理清这些的。


关于态度和技术


有人说态度很重要,技术达标就行了,甚至态度比技术还重要。这些判断都取决于公司在什么发展时期,需要招聘什么样的人。在初创时期,本不太可能招聘到清一色的专家人才,这个时候活下来比啥都重要,态度和味道是重点看的。在高速发展之后,可能需要引进能带来新思路的一些人才,这取决于业务、技术、组织三者的对齐。那么这个时候,就是[既要]高技能,[又要]好的做事态度、习惯。




对标招聘目标


在态度和技术这个权衡之后,其实背后的因素是需要什么样的人,是要跟根据整体业务和组织发展的需要的。它山之石,照搬可能就把自己的脚砸到了。


tw的钟源同学说,对于中小型团队来说,在人才考察纬度上,其他公司的纬度只能仅供参考,因为每个组织的业务特点和职业发展路径不太一样,只有根据自己组织特点设计出来的考察要素才是最适合的。因为面试需要关注的不只是人才采购的问题,更根据组织特点,需要兼顾后续的发展和保留。


再有,招聘工作必须谨慎,一旦有人加入就等于在上了一艘船,其中的纠结、痛苦、欢喜都要一起面对。招募一个不合适人员的成本不仅仅是薪资,fire掉那么简单。所以请一定要放过那些经验不错、资质不错但是很犹豫匹配度、落地融入堪忧的面试者,其结局大部分都是彼此痛苦。


招聘到[合适]的人


小新同学很热情的介绍了AMD的情况,来阐述对于不同岗位的人,合适是如何具体操作的。


我在AMD主要做Tool,又分为自动化和diagnostic。其中自动化对解决方案有要求,必须有独立设计架构能力,但对代码质量要求没那么高,能用就行也不需要重用,更侧重快速开发,很多都是一次性辅助项目。调试tool对代码质量要求高,不能出差错,对cpu/gpu底层要求了解深入。所以,针对两种情况,分别对不同候选人要求不一样,基本从背景,功底,人品,沟通,视野去考察。大企业的产品比较成熟,很少从头造轮子,所以技术不太差就过关,人品等其他因素反而很看重。

对于调试工具招聘,如果是某个领域负责人,我们会考察对系统底层功底,架构设计能力和编码质量,会做题,如不是负责人,那么上进心重点考察,确保不是过来混的。而对于自动化工具开发,主要看方案设计能力,和沟通能力。

背景: 基本我会先筛选简历,找类似背景的人,特别是优先从竞争对手过来的人,其次是同行外企跳槽的,这是背景考察。我认为私企和外企工作风格就是两种方式,我见过私企过来不适应外企文化走人的,这点当参考,大部分人灵活点适应问题不大。

功底:主要考察语言,语言还是很看重的,因为长期做c和长期做java思维方式还是有区别的。这块也不会太为难,基本做过几年还是问题不大。

人品: 通过看简历和面谈闲聊,比如为了加薪跳槽,职业生涯无规划。这类我一般不会要,太不稳定了。因为业务的关系,新人过来到独立开发,要几个月磨合期。

沟通: 我不知道私企如何,沟通能力在外企很重要,技术再牛,沟通弱寸步难行。外企做事和私企不太一样的地方,我觉得私企等级比较分明(不知道对不对),开发只管编码,业务有人跟进,架构有人负责,外企(我经历两个五百强外企文化基本大同小异),任务分配下来后面基本靠自己沟通,比如你的任务是改善驱动提升3d显示帧数,那么也许你会去和做硬件设计的人打交道,默认是你自己去找人的,也许人家忙的不鸟你,因为人家只对老板负责,这时候就靠自己的沟通能力和私交。

视野: 这点作为参考,作为加分点。因为我们除了做c ,偶尔也会帮其他部门做java开发,还有改现存框架,会用到python,ruby,帮测试部门做bash,不是主要业务但也会有。特别是做自动化测试,会混合语言开发,招聘的人懂的话是受欢迎的。

总之,
我的思路就是只找合适的人,不要最牛逼的人。曾经我们招过几个超级牛掰的,结果人家待了半年留不住走了。薪水有时候不是主要因素。到了一定级别,钱已经不是主要问题了。


招聘比自己优秀的人


有文章描述了Google如何招聘人才,聪明和优秀都是蛮重要的。招聘比自己优秀的人才,如何来理解?招聘进来,自己会不会被替代?这背后有几个思考。一是成就个人和成就团队,作为一个Team Leader应该抱着如何成就团队的发展思路,不能让自己成为天花板!二是兼容并蓄,发展多样性。刘邦善用汉初三杰,单项能力不如韩信、张良。Team Leader不要已自己的长短来衡量招聘的人,而是看团队技能视图的缺口和发展项。


再逆向思维一下,如果一个TL招聘的接班人是他水平的80%,而该接班人继续炮制,那么未来接班人的接班人只有64%的战斗值了!


ps:如果遇到不会做笔试题的时候,无偿奉献一招。大卫张讲了一个段子,就是某年某月某日,他去面试。看到试卷之后,沉默半晌,试卷合上,到前台和妹子客气的说,我是来面试管理岗位的!


往期推荐:


技术琐话 



以分布式设计、架构、体系思想为基础,兼论研发相关的点点滴滴,不限于代码、质量体系和研发管理。


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存