前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分析了数千个技术类面试,我们发现成功面试的背后有这样的规律...

分析了数千个技术类面试,我们发现成功面试的背后有这样的规律...

作者头像
CDA数据分析师
发布2018-02-26 16:05:00
6240
发布2018-02-26 16:05:00
举报
文章被收录于专栏:CDA数据分析师

原作者 Aline Lerner 编译 CDA 编译团队 本文为 CDA 数据分析师原创作品,转载需授权

准备技术类面试时需要注意些什么?也许你是刚毕业的大学生,第一次参加面试。也许你是一位经验丰富的软件工程师,面试经验丰富。不管怎样,准备面试的第一步通常是看在线面试指南(尤其是你感兴趣的公司写的),并看看其他人在面试过程中的经验。

准备面试中一般有以下几点值得注意:

• 大多数的面试指南都是从一个公司的角度来写的。A 公司可能重视高效的代码,但 B 公司可能更强调解决问题的技巧。除非你很想进 A 公司,否则无需不太看重他们的要求。

• 人们有时会撒谎,即使不是故意为之。有的公司可能会说他们不侧重编程语言,更为重视你的思维过程,但是有时事实并非如此。

• 你从朋友和熟人那里听到的许多“常识”可能根本就不存在。很多人认为简短的面试意味着厄运。同样,面试时间长会令许多人感觉良好,认为:“我真的很喜欢那个面试官,我肯定会进入下一个轮。”然而,人们在评估自己面试表现时表现并不理想。

这次,我们想通过分析一些面试的指标,比如面试时长等,看看这些指标在面试中是否真的重要。

开始

interviewing.io 是一个平台,人们可以在那里以匿名的方式练习技术面试,如果进展顺利,可以随时解除匿名,直接参加 Uber、Lyft 和 Twitch 等顶级公司的面试。无论是练习面试或者实际面试,面试都在 interviewing.io 系统中进行。因此,我们能够收集大量面试数据,并进行分析,从而更好地了解技术型面试,如面试中的传递的讯息哪些是有用的,以及面试的哪些方面会实际影响结果。

无论是练习面试或实际面试,面试官和面试参加者都处于协作编码环境,在当中进行语音、文本聊天等,到一定阶段会进入技术问答环节。我们收集面试中的各种数据,包括音频文本、面试者写的以及试图运行的代码,以及来自面试官和面试者的反馈,了解他们对面试过程以及对彼此的看法。

面试官和面试者的反馈形式如下——除了回答是否的问题,还有用1—4 分来描述面试表现的问题。

面试官反馈表

面试者反馈表

分析

值得注意的是,以下的结论是基于观测数据,并不证明绝对的因果联系。

是否之前看过面试问题

毋庸置疑,在面试中表现出色的方法之一是多练习。练习面试的主要好处是,减小遇到从未见过的问题的可能性。

在 3000 次面试的样本中,我们将面试成功率与面试者之前是否看过面试问题进行了比较。

所掌握的语言重要吗?

你可能会认为掌握不同的语言会带来更好的面试结果。比如,易读的 Python 可能让你在面试中获得优势。或者,某些语言以其简洁的处理数据结构的方式会更胜一筹。那么不同的编程语言在在面试表现上是否存在显著差异呢?

调查中,我们对平台上面试者使用的编程语言进行筛选,并过滤掉了面试中使用少于 5 次的语言。

分析结果如下图所示。任何不重叠的置信区间均代表面试者面试中使用的语言。数据表明,一般来说,不同编程语言进行面试时成功率差异并不显著。

选择面试公司的语言进行编程是否有优势?

总的来说,面试时使用的语言和表现并没有什么特别的联系。但是你可能会认为,选择面试公司的语言进行编程会造成影响。你可以认为一家使用 Ruby 的公司会说“我们只雇佣 Ruby 开发者,如果你在面试总使用 Python ,我们不太可能雇佣你。”另一方面你会想,一家所有代码均使用 Python 的公司,对在面试时使用 Python 的面试者更严格中,并且可能对面试中完全不使用 Python 的面试者另眼相看。

下图显示了使用 C++、Java 和 Python 语言的面试成功率的差异。之所以选择 C++、Java 和 Python 这三种语言,是因为这三种语言在本次的数据中更据代表性。面试中使用 Python 或 C++ 时,面试成功率与选择语言是否为公司的语言间没有统计学上的显著差异。然而,面试使用 Java 的公司时,面试中使用 Java 者的成功率更高(p = 0.037)。

造成该差异的可能原因是,基于某特定编程语言(如Java)的社区对之前使用过该语言存在偏好。使用 Java 的公司的面试官更可能青睐那些之前使用过 Java 的面试者。

编程使用的语言与沟通能力有什么关系?

即使语言选择对整体表现(除去java公司)并不重要,但我们很好奇,在其他的面试因素中,不同的语言选择是否会导致不同的面试结果。例如,可读性高的语言,如 Python,可能会导致面试者被认为沟通能力强。下面的图表表明,在不同编程语言间,面试者的技术和沟通能力之间并没有什么明显的区别。

此外无论何种语言,技术能力差似乎与沟通能力差密切相关,在技术上表现良好但不能有效地传达他们所做的事情这种情况非常少见,反之亦然。

面试时长

我们都有面试结束后感觉表现很糟糕的的经历。通常,这种表现不佳的感觉是由经验法则驱使的。有时你会想:“面试没有持续多久?这可能是一个不好的预兆…”或者“面试中我几乎没有什么写!我肯定不会通过。”通过数据,我们想看看评估你面试表现的经验法是否有价值。

首先,看到面试时长。较短的面试是否意味着你表现不好?或者面试时长比一般短就意味着你是一个很棒的候选人?以下图表显示了面试成功者和面试失败者的面试时长(以分钟计)、分布情况。数据证明这两者之间并没有特定联系。面试成功者的平均面试时间为 51.00 分钟,而面试失败者的平均面试时间为 49.95 分钟。几乎没有差别。

编写的代码量

你可能经历过,在面试中你完全被难住了。面试官问你一个你几乎不懂的问题,在面试过程中你基本上没有写代码。下图显示了面试成功或失败时,代码字符长度分布情况。两者的区别显而易见——失败的面试中往往代码更少。有两种原因可能导致这一现象。首先,面试失败者可能一开始写的代码就不多。此外,他们可能会删除写过的大量代码,这些代码要么无法运行,要么无法得到预期的结果。

成功面试的面试最终代码平均为 2045 个字符长,相反失败的则平均为 1760 个字符长。这是一个很大的区别!

代码模块化

除了看写了多少代码,还可以考虑所写的代码类型。一般认为优秀的程序员不会循环代码——他们编写的模块代码可以一次又一次的重复使用。我们想知道在面试过程中这种行为是否能得到相应回报。为此,我们分析了使用 Python 的面试,并计算了面试的最终版本中出现了多少函数定义。

下图显示面试者所定义的 Python 函数数量。根据数据,面试成功者的函数定义了更多的功能。

Python 面试中,面试成功者平均定义了 3.29 函数,而面试失败者平均定义了 2.71 函数。

代码能够运行是否重要?

在技术面试中常见的一种说法是,面试官实际上并不关心你的代码是否运行,他们关心的是解决问题的技巧。在面试中,代码的正确率与面试成功与否有联系吗?而且,即使面试者的代码中有大量语法错误,他们仍然可以被雇佣吗?

我们研究了那些面试时长大于 10 分钟,期间执行至少 5 个的代码实例的数据。

下图中 x 轴指面试中代码没有错误的百分比。因此,一个包含 3 个代码执行和 1 个错误的面试将归类为“30% - 40%”组。y 轴表示所有面试的百分比,包括成功的和不成功的面试。观察下图发现,面试成功者运行的代码更多错误更少。但这一差异有统计学意义吗?

平均而言,面试成功者的面试中 64% 的代码能够成功运行(没有产生错误),而面试失败者为 60%。虽然我们不能给出明确的因果关系,但主要的结论是,通常面试成功者写的代码更好。

是否应该理清思绪再写代码?

面试成功者是否在面试中更为从容。面试问题往往很复杂,在提问之后,最好能够后退一步并思考解决问题的方案,而不是马上开始。因此我们计算了面试中,面试者到开始运行代码所花的时间。可以看出面试成功者在开始运行代码前的等待时间稍长。

结论

总而言之,这篇文章中我们分析了在技术类面试中哪些行为能够带来好的结果。但是很难保证其因果关系。成功的面试者可能采取了某些行为,但这些行为并不能一定保证成功。

ref:

http://blog.interviewing.io/what-really-matters-in-technical-interviews-we-analyzed-thousands-of-interviews-on-everything-from-language-to-code-style-heres-what-we-found/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-06-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CDA数据分析师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档