数极客首页

数据分析了数千个程序猿求职案例,解读程序员面试秘籍

数据剖析了数千个程序猿求职案例,解读程序员面试秘籍

这篇文章将带你重回那些猖獗
又让心惊胆战的编程者求职面试现场。

或许
你大学或者研讨
生刚毕业,正面临第一次求职面试,又或者你是个软件工程老鸟,曾经
有些年没有想过求职面试这种事了。

不论

你属于哪种状况

,求职面试的第一步都是在网上阅读
一堆面试指南(特别
是触及
到你感兴味
的公司),并和好朋友们聊聊他们的面试阅历

(不只
包括作为求职者还包括作为面试官的阅历

)。

在这第一步“探求
性”阶段所学到的有关面试流程的信息,很可能会指导你怎样
展开
下一步的准备工作。

以下干货将通知
你准备这类面试的正确翻开
方式,敲黑板!

大多数面试指南都是从一家公司的角度动身
的。
A公司可能十分

注重程序开发效率,而B公司可能更看重处置

高层次问题的才干

。假定

已你经把目的
瞄准了A公司,那就得好好研讨
他们的看重什么了。

人在不经意的时分
会意
口不一。
在写面试指南的时分
,公司可能会说他们不在乎编程言语
,或者会希望你试着恢复

你的思索

过程,即便

说得可能不太对也没关系。但是事实他们的规范

可能并不是他们说的那样。也不是说那些技术公司是悲天悯人
的骗子,要歹意

误导求职者。有时,人们在毫无认识
的状况

下可能会产生难以察觉

的成见

很多你从朋友或熟人那里听来的“秘籍”可能完好

不属实。很多人以为
面试很短代表没戏了。同样,当他们以为
“我和那个面试官很聊得来,我肯定会进入下一轮面试”的时分
,他们会觉得面试时间很长。之前我们曾经
说到了人们经常会误判自己

的面试表现。这一次,我们就来直观地看看像面试时间长短这种指标能否
真的能阐明

什么吧。

我们公司(interviewing.io)独家推出了一种基于数据的办法

来评价
技术型面试和面试结果之间的关系。
我们有一个平台能够

供人们在上面匿名地练习技术型面试。不出不测
的话,人们能够

解锁并随时匿名练习像优步、Lyft(优步在北美的主要竞争对手)和Twitch(北美的一个游戏直播平台)这些顶级公司的技术型面试。

更凶猛
的是,面试模仿

锻炼
和真正的面试都能在我们的interviewing.io的生态中中止

所以,我们能够

对搜集
到的大量面试数据中止

剖析

,从而更好天文
解技术型面试,如面试中哪些信号是有效的哪些是无效的、以及面试中哪些方面可能真正对结果产生影响。

不论

是真实或者模仿

面试,每一场我们都会确保求职者和面试官在一个可协作的编程环境里,经过
语音、文字和白板中止

交流,期间交叉

着技术型问答。

你很可能会遇到在后端软件工程师的电话面试里经常呈现
的那种技术问题。

我们搜集
了面试中呈现
的一切
数据,包括语音记载
的文字版本,求职者编写并运转
的程序数据、元数据,以及求职者和面试官各自对这局面

试和对对方及这局面

试的反响

意见。

假定

对此感兴味
的话,你能够

看到下面求职者和面试官各自的反响

表 — 除了设置是/否这样单选问题,我们还设置了一些用1-4的梯度来权衡
面试表现的问题。

除此外,我们还对求职者设置了一些附加题,但这些问题不对面试官开放,其中一个问题是:求职者以前能否
见到过这些题。

给面试官的反响

求职者的反响

结果

留意
,下面的结论都是基于察看

数据,也就是说我们不能下很确切的定论…但我们还是想分享我们察看

到的一些有意义
状况

,看完后置信
你自己

能够

得出相应的结论。

以前见过同样的面试题——

“我们谈论

的是锻炼
!”Allen Iverson ( 阿伦·艾弗森前美国职业篮球运发起

,司职后卫(双能卫))

第一
,众所周知,想要在面试中做的更好,最好的办法

之一就是中止

面试锻炼
。网上有十分

丰厚
的渠道和资源能够

辅佐

你锻炼
,我们就是其中之一。面试锻炼
最主要的一个益处

就是它能够

帮你减少你碰上历来
没见过问题的可能性。假定

你事前
练习过一两遍,均衡

二叉搜索树问题会变得远没有那么可怕。

回想

我们搜集
的3000+的面试案例,对比

以前见过面试题的求职者与没见过那些题的求职者的面试结果,得到以下结果。

标题:见过面试题的对面试结果影响

横轴:求职者能否
见过面试题

纵轴:胜利

果不其然,见过面试题的求职者被面试官认可的可能性比没有见过的高出16.6%。这个区别在统计学上十分

显著——这篇文章的一切
误差线都是95%的置信区间内的状况

(95%置信区间就是总体参数在这个范围的可能性大约
是95%,或者说总体参数在这个范围,但其可信水平

只需

95%)。

你用什么言语
编程很重要吗?

“不爱自己

母语的人,无论是谁,卑贱堪比禽兽和臭鱼”——荷西·黎萨(菲律宾近代对立

西班牙统治的民族英雄)。你可能会以为用不同的编程言语
会有更好的面试结果
。例如,或许
更易读的Python会助力你的面试。或者觉得特定言语
能有简约
的办法

处置
数据结构

,使普通的面试问题更简单。我们想用统计学的办法

知道

面试表现和运用
不同的面试言语
之间能否
有足够大的区别。

为了研讨
,我们依据

不同的面试言语
将我们平台上的面试中止

了分组,并剔除了面试运用
次数低于五次的编程言语
(这只扫除
了个别几个面试)。之后,我们得到了面试结果与运用
的编程言语
之间的变化函数。

剖析

结果如下表。恣意
非堆叠
的置信区间代表了统计学上很大的区别,显现
了在不同的面试言语
状况

下,求职者有多大几率能够

“经过
”面试。

固然
我们没有对这些编程言语
中止

成对对比

。总的来讲,以下数据显现
,就求职者遇到不同言语
的状况

下的面试胜利

率之间,并没有显然
的统计学上的区别。(我们的平台上列出了更多编程言语
,但越小众的言语
我们能搜集
到的数据就越少。例如,用Brainf***言语
面试保证你百分之百胜利

,开个玩笑。)

面试时运用
的编程言语
与面试胜利

率之间的关系

纵轴:面试胜利

横轴:所运用
的编程言语

我们察看

到的一个最常见的问题是求职者会选择自己

并不熟习
的编程言语
,然后在一些很基本

的问题上出错,例如,查询数组长度,迭代数组,实例化哈希表等等。

当求职者有意选择一个看起来很“高端”的编程言语
,想要给面试官留下深化

印象的时分
,都会让面试官感到很失望

。置信
我们,在每一次面试时,都请运用
自己

熟习
的言语
纵情
发挥,而不是去用你并不熟习
的“高端”言语
炫技。

即便

编程言语
无关紧要……那假定

我选择所面试公司运用
的编程言语
会有优势吗?

“上帝帮帮我,我是原住民”– Margaret Blaine注:暗指求职者运用
的编程言语
所面试的公司也在用,是想要让面试官以为
自己

已具备成为公司一员的才干

普遍来说,面试时所运用
的言语
与面试表现之间似乎没有特别的关联
。但是,大家可能还是会以为
假定

面试时运用
对方公司习气
的编程言语
会对面试结果产生一定的影响,比如

Ruby Shop招聘时可能会说,“我们只招Ruby的开发人员,假定

你在面试时运用
的是Python,我们很可能不会录用你。”

另一方面,假定

一个公司一切
的代码都是用Python完成的,那么他们在面试时关于
Python的央求

会十分

苛刻,由于
他们对这门编程言语
里里外外都很分明

。同时,他们也会在面试中评价
对求职者的一切
非Python相关的才干

下面的图表与之前展示

面试胜利

率的差别

(依据

面试官能否
愿意雇佣求职者来权衡
的)与在面试时运用
不同编程言语
之间的关系的图表相似

(C++,Java,Python)。无论怎样
,这个图表也阐明

了面试表现与所面试公司能否
运用
某种言语
之间并没有必然联络

我们将剖析

范围限定在C++,Java和Python,由于
我们能够

基于这三种言语
构建一个良好的面试组合,有些公司运用
这三种言语
,有些公司不用。调查的结果并不分歧
,当面试时运用
的编程言语
为Python或者C++时,所求职公司能否
运用
这种言语
与面试胜利

率之间并没有统计学上显著差别

。但是
,当所求职公司是运用
Java的,那么面试时运用
Java更可能面试胜利

。(P=0.037)

为什么所求职公司运用
Java关于
面试胜利

率有正向影响,而运用
Python和C++却没有呢?一个可能的缘由
是运用
特定言语
(如Java)的组织关于
该编程言语
的历史实施

阅历

有较高的认可度。依据

这些规则,假定

面试官所在公司运用
Java,那么他们在面试时更可能盘绕
Java自身

已有的学问
体系中止

提问

面试胜利

率与所运用
的编程言语
的相关性

纵轴:面试胜利

横轴:编程言语

图例:公司运用
某种言语
,公司不运用
某种言语

你运用
的编程言语
和面试官对你的沟通才干

的评价有什么关系呢?

熟练

的控制
一种言语
,就像是练习一种唤醒巫术一样。- Charles Baudelaire (夏尔·皮埃尔·波德莱尔,法国十九世纪最著名的现代派诗人,意味
派诗歌先驱,代表作有《恶之花》)即便

运用
哪种言语
关于
面试表现没有大的影响(除了运用
Java的公司),我们依然

很猎奇
选择不同的编程言语
关于
其他面试调查
点而言,能否
会有不同的结果。

例如,假定

求职者选择的是可读性很强的编程言语
,例如Python,面试官可能会对他的沟通才干

有很高的等候

。假定

运用
的是比较

底层的言语
,例如C++,那么他可能在技术才干

方面会取得

更高的分数。

此外,可读性很强的言语
和底层言语
可能影响这两项分数的相关性。(例如,运用
C++的求职者所编写的代码的执行效率可能很高,但却不能分明

地解释他(她)在做什么)。下面的图表阐明

关于
运用
不同言语
的求职者的技术才干

和沟通才干

的评价
结果,二者间并没有显著性差别

运用
不同编程言语
的人的沟通才干

和编码才干

的对比

剖析

横轴:编码才干

纵轴:沟通才干

图例:经过
面试的百分比

此外,从图表中看来不论

是运用
什么言语
,假定

编码才干

差的人,很可能沟通才干

也很差。而编程才干

很强沟通才干

弱的人相对很少(反之亦然)。这在很大水平

上(也很侥幸

地)拆穿

了工程师都讲话语无伦次,语速很快,而且看起来很蠢笨

的谣言。

(我见过的最好的工程师不只
十分

擅长将复杂的概念中止

合成
,并且能够

解说

给非专业人士听。不是很懂为什么总会有那些关于工程师都具有社交恐惧,是语无伦次的技术宅这样的传言。)

面试时长

当你年轻的时分
,面对灾难性差评、拒绝

以及其他一切
负面事务时,你能够

很快满血复生
。- Harold Prince我们都有过面试完后觉得自己

表现不太好的阅历
。通常,这种不好的觉得
源于我们给自己

或听他人

重复

说的攻略的心理暗示。你可能会想,“为什么这次面试时间这么短,这是一个不好的信号……”或者,“这次面试我似乎

什么都没写,肯定会被淘汰了”。经过
数据剖析

,我们想知道

这些攻略关于
求职者的面试表现能否
有受用。

第一
,我们来看面试时长。一个很短的面试能否
意味着你的才干

很弱所以面试官决议
提早
终了

?或者能否
是由于
面试官这次只需

比较

短的时间中止

面试,或者他(她)能否
曾经
在很短的时间内就认定你是一个优秀的求职者?下图显现
了胜利

经过
面试和面试失败的求职者的面试时长(以分钟计时)的散布

状况

一眼就能够

看出,顺利经过
者和面试失败者的面试时长散布

并没有很大不同。顺利经过
者的平均

面试时长是51分钟,面试失败者的平均

面试时长是49.95分钟,这两个数据并没有显著的差别

(关于
本篇文章中的一切
散布

的对比

,我们都将运用
Fisher-Pitman排列检验法来对比

散布

的平均

值的差别

。)

标题:面试时长和面试结果能否
相关

横轴:面试时长(分钟)

纵轴:面试数据量

图例:面试官愿意雇佣、面试官不会雇佣

编写代码的长度

“言以简为贵” – 威廉 莎士比亚(英国诗人、作家)很多人可能都阅历
过面试时僵住的状况

。面试官问了一个你不太懂的问题,然后你问回他(她)“运用
二分法查询什么?”,而且在整个面试中你可能一句代码都没有写。但你还是想心血来潮
,展示

出很好的问题处置

才干

,从而胜利

经过
面试。为了评价
这能否
有效,我们剖析

了求职者最终提交的代码的字符长度。下图显现
了面试胜利

者和面试失败者的字符长度的散布

状况

。快速地阅读
下就能够

看出这两种方式的不同,面试失败者最终所提交的代码长度会更短。有两种可能的状况

与之相关,第一种,面试失败的求职者在一开端
就只写了很少的代码;第二种,他们很可能在代码没有运转
胜利

或者运转
后没有返回预期结果时删除了大段的代码。

标题:代码的长度和面试结果能否
相关

横轴:最终提交的代码长度(字符数)

纵轴:面试数据量

图例:面试官愿意雇佣、面试官不会雇佣

胜利

的求职者最终提交代码的平均

长度是2045个字符,而面试失败者最终提交的代码的平均

长度是1760个字符,二者间有很大不同!这个结果在统计学上是有很大的差别

的,也是我们预料

之中的。

代码模块化

一个成熟的程序员的标志是,当认识
自己

花时间写的代码没有意义时,就将它丢弃

除了求职者编写的代码长度,我们还调研了代码类型。

业内公认的观念
是好程序员不会重复

写同样的代码 — 他们写那些能够

被重复

应用
很多次

的模块化代码。

我们想知道

这种行为能否
也能在面试中取得

喜欢

。于是,我们看了那些调查
Python5的面试,并且在面试代码的最终版本里统计了呈现
的定义函数数据量

我们想要知道

胜利

的求职者是招认

义了更多的函数—固然

具有
更多的函数处置
程序并不是代码模块化的定义,但据我了解

,这曾经
很能阐明

问题了。

照例,这里也很难得出强因果关系的结论,由于
求职者有可能会在面试官的提示下增加或者减少函数。但是,这次的察看

还是很有趣的。

下面这张图展示

了面试官表示会录用的求职者和不会被录用的求职者他们代码中的Python定义函数数据量
的散布

粗看这张图就能发现定义函数的散布

曲线在两类求职者之间是不同的。

胜利

的求职者倾向于定义更多的函数。

胜利

的求职者能编写更多的模块代码么?

纵轴:面试经过

横轴:定义函数数据量

在Python面试中胜利

的求职者平均

定义了3.29个函数,而不胜利

的求职者只定义2.71个函数。这个差别

在统计学上十分

显然
。也就是说,面试官们真的会像他们说的那样喜欢那些他们在指南中让你写的代码。

代码能否运转
对面试结果影响大么?

快速行进
,自然会搞砸一些事情。没有犯过什么错,就是阐明

你行进
地不够疾速
。—— Mark Zuckerberg (Facebook(脸书)的开创

人兼首席执行官)最有效的调试工具就是认真地思索

,再加上详尽精确

的批注阐明

。—— Brian Kernighan (一位加拿大计算机科学家,同时它也是开发Unix的主要贡献

者)

技术面试中常常听到的评论是,面试官并不关怀

你的代码能否
能够

运转
—他们真正关怀

的是你处置

问题的才干

由于我们搜集
面试代码中无法检测它能否
编译胜利

,我们想在数据中看看能否
能够

找到相应的证据。

那些没有出错的编译代码影响面试的胜利

和失败的概率吗?此外,假定

求职者的代码中呈现
很多语法错误,他还会被雇佣吗?

为了解

答这些疑问,在察看

完数据后,我们把数据集限定在那些面试时间超越
10分钟并且运转
了5次以上代码的面试中。

这辅佐

我们把那些面试官不想让求职者运转
代码和由于某些缘由
面试时长被缩短的面试过滤掉。

我们统计了运转
过程中呈现
错误的代码比例。

当然,这个办法

有一些局限性——比如

,求职者的确

给出了能够

编译的代码,但给的答案不完好

正确。也可能他们给出了正确的答案,却规范

输出到了设备上。固然

如此,这样的剖析

还是能让我们有一个直观上的大致感受。

下图给出了这些数据的总结。X轴表示一局面

试中代码正确运转
的比例。比如

,一局面

试中运转
了三次代码,其中有一次错误,它的正确率就会减少“30%-40%”。

Y轴表示在特定百分比区间里胜利

和失败求职者的各自的比例。大致阅读
下面的图,我们能够

看到,胜利

的求职者平均

来看代码错误率更小。但这种差别

在统计学上显著吗?

平均

来看,胜利

求职者的代码有64%是胜利

运转
的,而失败的求职者只需

60%,这个差别

的确

挺显著的。

还是跟之前说的一样,我们无法得出任何因果关系的结论,但这里主要的信息是,固然
面试官会通知
你代码的正确率与面试结果无关,但是胜利

求职者编出的代码的确

能够

更好的运转

你应该想好之后再写代码吗?

永远不要遗忘
缄默

的力气
,这种重复

而烦人的停顿可能会使对手慌张
地唠唠叨叨并改动
主见

。— Lance Morrow我们还猎奇
胜利

的求职者在面试中能否
擅长
应用
时间。

面试的问题通常很复杂!在拿到一个问题后,不急于上手答题,而是理顺思绪
可能会更好。

为了弄清事实的真相,我们丈量
了求职者从面试开端
到第一次运转
代码所需求
的时间。

下面的直方图显现
了胜利

的求职者和失败的求职者在面试中止

多久之后第一次运转
代码。

扫一眼下面图表,你能够

发现胜利

的求职者的确

会多等一会儿再开端
运转
代码,固然

差别

不是特别显然

胜利

的求职者会更快运转
代码么?

纵轴:求职者数据量

横轴:进入面试多久后求职者运转
代码

图例:面试官愿意雇佣、面试官不会雇佣

讲得更细致

一点,胜利

求职者平均

在面试中止

了27%之后开端
运转
代码,而失败的求职者则是在23.9%之后就开端
运转
代码。这个差别

是显然
的。

当然,这里也会有很多不同的说法。

比如

,胜利

的求职者可能更擅长跟面试官交流感情。

而我们无法做出因果关系判别
的声明在这里也同样适用——假定

你只是在面试中缄默

地多坐了5分钟,这不会进步
你的面试胜利

率。但两类求职者的回答

时间在数据上确有差别

总结

总而言之,这篇文章是我们的第一次尝试用数据去了解

面试官在什么状况

下会“你知道

吗,我真的很想雇佣这个人。”由于
我们的数据都是表象,所以很难做出因果判别

固然
胜利

的求职者会表现出某些特定的行为,但采取这些行为并不能保证面试的胜利

固然

如此,它的确

证明
了很多你在网上看到的关于怎样
胜利

面试的倡议

也就是说,在这方面需求
做的事情还有很多。而这只是我们第一个数据量化的剖析

(在很多方面,它是面试秘籍宝库),但我们特别等候

做一个更深化
的,定性的研讨
,并且开端
对不同的问题中止

分类,了解

哪些要素
最有用,并着手去研讨
经过
以前编码剖析

或面试时长丈量
并不能测出的内隐行为。

发表评论

评论已关闭。

相关文章