我是怎么面试的
转行+数据组负责人+裸辞求职的经历让我有了各种各样的面试体验,包括我面别人和被别人面。面过形形色色的人,和被面的真实题目,结合自己的思考,总结一下,就着我个人的经历和认知,看看有没有什么有价值的地方,供众多的求职朋友参考。
1. As an Interviewer
—————————
对于经验比较匹配的面试者,往往表现地更自信,面试过程也会更有效。
例如面试者A,澳大计算机科学的本科,毕业项目用深度学习算法进行人脸和舌头图像分析的多疾病识别。这个项目是他简历上跟数据唯一相关的内容,为了能跟他有效沟通,我提前花了半个小时去思考这个研究的难点、意义以及研究流程,并做了电子笔记。可惜现在找不着了。
面试过程我花了大半时间跟他聊这个项目,我问了很多也学习了很多。聊下来的结果是我认为这些他做的东西虽然没有说多难,但是A在回答我的疑问时都有足够合理的解释,并思路清晰。加分。
一位候选人如果以前的经验不太匹配,在原领域是需要做出令自己骄傲的工作成果的,ta的潜力就得通过历史学习或者工作记录体现。就像有另个面试者简历上写喜欢英语,结果一问四级都没过,这不是搞笑嘛。
类似的情况还有很多个,电话面试的大多是港澳欧美的名校学生,现场也面过不少能力强的浙大在校生。有数据相关经验的,我大多会提前了解下,毕竟我自己基础往往不如他们。万幸虽然我对机器学习深度学习涉猎不深,但经验让我能够从大方向上理解一个相关问题大概要怎么解决,有什么样的难点。这让我能够深挖被面试者简历上内容的真正价值。
好了,到这里你们已经发现我面试别人的套路了。那就是去挖掘被面试者的强点,而非揪出其弱点,在这个过程中去权衡其与我司的匹配程度。当然,前提是来我司找工作或实习的人一般都没有同行业的工作经验,我的关注点必须放在数据挖掘领域的基本能力上。
那我是怎么保证能吸引到优秀的候选人呢?
聊工作经历的过程中,保证聊天过程是有来有回的。每一轮提问要尽量结合前面的回答,这需要我有足够的认知;
对其个人经历表示好奇,了解其个人职业思考;
分享我司该岗位的情况,保证面试过程有双向反馈;
提供个人建议,不管是通过还是拒绝。
但是也有一些面试者,学历和技能往往也不错,但过往可能经历过不太顺利的事情,出现很不自信的情况。这种情况需要尽量克服,越往后越发现,自信几乎影响一切。
现场面过一位南京大学的硕士,是一位女生,非相关专业毕业的。毕业之后在她专业领域内的公司做数据分析。简历上主要写了很多数据分析的学习项目,例如kaggle上的初级项目。
我本来挺怀有期望的,能跟这样背景的人聊一聊,我自己应该也能有所收获。虽然简历上可以看出其对算法的学习比较浅,但也可以进行一次有效的沟通,分享下各自的认识。
结果很不如意,我自己有时候就不太自信,但她表现出来的太太不自信了,不太敢说话,也没有表达欲望。提的问题只能得到很表层很简短的回答,想聊下去都比较困难。最后不欢而散了,她没有获得有价值的信息,我当然也没有。
所以,我的建议是,勇敢点,去展示你自己。除非hr瞎约的面试,面试过程就应该是有来有回的,你跑大半个城市花大半天时间总要想法子搞点收获吧。一个有效的面试过程会让你觉得,面试官可以给你很好的职业建议,因为很少有人能像面试官那样去了解你的专业技能。不管能不能拿下面试,自信地去展示自己,这样少则可以收获到一个较愉快的聊天,多则可以收获一个改变你职业发展的建议。
自信的另一个表现是勇敢,也是好事。还面过一位浙大的实习生,才研一,虽然没什么经验,方向也不太一致,但人很聪明,特别勇敢。
考虑到我们组的技术部分已经足以应付业务需要了,一位没有任何经验的实习生过来,主要时间都要花在熟悉现在的工作成果上,而在以业务为导向的公司,脱离业务学习技术毫无意义。从她的角度上,我认为价值不大。我给出的建议是在学校可以多学一些技术方向,广度和深度上都更有利。
她仍然很固执,觉得愿意去学她就能做的好。在校生在面临工作机会时,总是把自己往公司的要求上去匹配,觉得自己都能胜任。更成熟的做法是去匹配自己的兴趣和成长。
不过,她这样积极的心态和勇敢的作风,让我很有同感。现在我们是朋友,还常常联系,分享各自的认识和思考。
2. As an Interviewee
—————————
下面讲讲我面试的一些经历吧,具体对应的公司我就不说了。对于想转行的人来说,可能更关注的是这些具体的问题了。
主要面试过程都是个人工作经历和硬技能,前者可能会聊的比较深。这部分这里就不介绍了。
然后大部分会深入到技术上,问一两个sql题、逻辑思维题和算法理解。
面试遇到的SQL题
西二旗某司有道sql题如下:取连续3次及以上出现的num数。我大概记住的数据如下,下面的数据只有num=2连续出现了3次,因此结果是2。这个应用场景我没怎么想,不知道为什么有这样的需要。我当时的思路贴在下面,肯定还有其他更优的思路,这类题更偏逻辑思维能力。
另外有一个类似python split的功能问题,数据如下。取出对应的统计次数。大概的应该场景应该是,埋点统计按逗号分隔了,转成行的一个问题。我当时只想到用substring_index,然后遇到逗号数量不一致问题不知道怎么解决。回来重新试了一遍。
实际上,这个问题我以前遇到过,我会用python去做。sql和python解决方案如下:
其他印象深的还有,分层抽样问题。。。我不会。。。没考虑过此类问题。数据量小的往往只想着用python去做,但大数据还是要用hive ql去取数。大家自己去学习下。
面试遇到的逻辑问题
美团二面聊过一个逻辑题,虽然我一直没觉得这种题对算法能力有什么考察效果,但这种题目印象就是会比较深。说的是,有100个硬币,10个反面90个正面,你无法感知正反面,怎么分成两堆使其正面个数一样。这个题目肯定要想到硬币肯定需要翻转正反面,不然啥操作空间都没有。最起码要想到这点,然后找面试官确认,否则我觉得在这道题上肯定是不过关的。最后答案见本节最后。
另一家互金公司一面做扑克牌的概率题,二面有个题挺好,难度也够。有25匹马,5个跑道,没有计时器,最少通过多少次赛跑可以把这25匹马按速度排序。这个题目背后其实就是算法,所以也能看出面试者问题拆解的能力,面试者肯定不是一定要你给出具体的正确数值。第一步25匹马都需要跑一次,需要5轮,第二步就可以对局部排序的再排序了。能想到重要的思路并且敢说,基本就不错了。我也用这个题目问过一些同学,发现还是挺难的,面试当场几分钟甚至几十秒能到完整思路算很不错了。
另有一道,怎么把40g的橡皮泥分成4团,使得能称出1到40任意重量的东西。突然拿到这种题目也可以有很多思路,除非你特别擅长这些总能直接想到正确方向。
就像我最先想到的是,1**2+2**2+3**2+4**2,但是这个结果等于30,所以肯定不是,然后就会想对40进行因式分解,试了半天发现也不太行。最后就会想归纳法,称1g的话,需要1g的橡皮泥,2g的可以通过3-1来得到,所以还需要3g的橡皮泥,这样最多能称4g=3+1的物品,5又可以通过9-4来得到,以此类推,1+3+9能覆盖13g的重要,在需要一个27g去计算14g,所以是1+3+9+27,其实就是3**0+3**1+3**2+3**3=40。
这样的答案摆在眼前的话,跟1到4的平方和,跟因式分解,都是有联系的,下一个数其实就是81,覆盖121g的任意取值。层层递进剖析给面试官听,我觉得能达到这个层面已经很好了。
第一个问题的答案是:随机找10个硬币翻转一下就OK了。
面试遇到的算法问题
因为工作中主要使用了xgboost和lr模型,会让详细解释xgboost的思路,lr的话细问会问推导过程。算法细节这里不说了。
此外,会问数据结构的知识。一般问了就会让写排序算法,选择排序、冒泡排序、插入排序、快速排序等。强烈建议,大家完全掌握其中最基础的几种。
在真实业务中,数据挖掘的内容会基于工作经验提问。例如,数据的来源,特征的处理,模型的选择,label的确定等等等等。
没有工作经验的话,数据分析的要点、建模的流程等等是要掌握的。
3. 总结
————
面试是一个双向的过程,有效的沟通是应聘和招聘成功的前提。希望大家都做好准备,勇敢表现自己。大家求职过程中有时候也难免遇到恶心的面试经历,不用过于在意,重点是要明白是自己的问题,还是面试官的问题。
最后,祝大家求职愉快。
推荐阅读
欢迎长按扫码关注「数据管道」