专栏名称: 量化投资与机器学习
公众号主要介绍关于量化投资和机器学习的知识和应用。通过研报,论坛,博客,程序等途径全面的为大家带来知识食粮。版块语言分为:Python、Matlab、R,涉及领域有:量化投资、机器学习、深度学习、综合应用、干货分享等。
目录
相关文章推荐
爱可可-爱生活  ·  [RO]《DemoStart: ... ·  5 天前  
宝玉xp  ·  //@赏味不足://@王大力如山://@凯喜 ... ·  5 天前  
宝玉xp  ·  //@时蝇喜箭:Repost-2024091 ... ·  5 天前  
宝玉xp  ·  //@今天WB倒闭了吗:@互联网的那点事 ... ·  1 周前  
51好读  ›  专栏  ›  量化投资与机器学习

LeetCode刷题哪家强?揭秘大厂面试背后的秘密

量化投资与机器学习  · 公众号  · AI  · 2024-09-19 16:51

正文


量化投资与机器学习微信公众号,是业内垂直于量化投资、对冲基金、金融科技、人工智能、大数据领域的主流自媒体公众号拥有来自公募、私募、券商、期货、银行、保险、高校等行业40W+关注者,曾荣获AMMA优秀品牌力、优秀洞察力大奖,连续4年被腾讯云+社区评选为“年度最佳作者”。


附赠全球对冲基金

LeetCode面试题汇总

文末下载


核心结论


  • LeetCode是一个汇集了诸多算法题库的编程网站,许多开发者在初学算法时,都会跑到LeetCode网站上面刷题,也有一些开发者为了过微软、Google、Facebook 等国际大企的面试,选择刷LeetCode来快速提升自己的编程能力与算法能力,以便顺利通过面试。


  • 近期一项新的研究分析了LeetCode上30多万用户的档案,我们看到谷歌、Facebook、彭博成为全球面试严格程度排名前三的公司,这也反映了其员工的平均能力水平。同时,那些目标是硬件导向公司的求职者可能不需要像那些以软件为重点的公司那样投入大量的时间来解题。


  • 至少参加过一次周赛的LeetCode用户已经解决了88.9个容易问题、133.2个中等问题和26.2个困难问题。需要注意的是,这个平均值只适用于参加过比赛的用户。


  • 大家可以基于每家公司解决各种类型问题的数量推断哪些问题需要更多的关注例如,平均谷歌开发者解决了93.8个动态规划题目,相比之下只有22.9个与图相关的问题。一个用心的求职者,在面试谷歌的时候可能会优先准备动态规划题目。练习每种类型的问题是一项艰巨的任务,因此优先考虑成功候选人经常解决的问题是一个实用的方法。

数据介绍

对于数据的收集,仅限于至少参加过一次周赛的用户,因为只有这些用户才会从网站获得评分和排名。共收集了474场比赛,涵盖302,785个用户档案,其中有30,627人公开其所在公司信息,数据截至2023年7月。为了进一步分析,我们选择了20家知名科技公司:
下图展示了一个LeetCode用户的公共档案。图中用绿框围起来的单元格对应表(左)中的字段,而红框内的字段详细说明在表(右)中。表(左)中,蓝色的单元格是我们在研究中的关键指标,它代表了每个用户的Elo评分,由LeetCode排名系统根据他们每周比赛的表现计算得出。
用户档案示例
表(右)的第一行显示了LeetCode每个用户所使用的所有编程语言。LeetCode将其编程问题分为三个不同的级别:基础、中级和高级。表(右)的第二、第三和第四行分别列出了这些级别的问题主题。
Elo评分系统:最初是为了评价像国际象棋这样的游戏中玩家的相对技能水平而引入的。自1960年被美国国际象棋联合会(USCF)首次采用以来,该系统为每个玩家分配一个初始评分,随后根据与其他竞争对手的比赛结果更新。对手之间的评分差异以及对手的评分本身决定了玩家在比赛结束后获得或失去的评分点数。例如,如果一个评分较高的玩家击败了一个评分较低的玩家,他们获得的评分点数将比他们击败一个评分相当的对手时少。相反,一个评分较低的玩家击败一个评分较高的对手将获得比击败一个评分相当的人多的积分。随着时间的推移,随着玩家继续竞争,他们的比赛结果变化,他们的Elo评分也会变化,代表他们与其他系统内玩家相比不断演变的技能水平。

分析方法

首先计算了皮尔逊相关系数及其相应的p值,以了解用户评分(表(左)蓝色)与他们解决的每种编程语言和问题类别的问题数量之间的线性关系。此外,还评估了评分与用户解决的容易、中等和困难问题的数量之间的相关性。同时应用Bonferroni校正来调整p值。Bonferroni校正的本质是将置信水平从α调整到α/n,其中n表示测试的数量。具体来说,我们通过将每个给定集合内的皮尔逊相关系数乘以相关性测试的数量来调整每个p值。如果调整后的p值仍然低于0.05,则表明存在统计学上显著的相关性。
此外,对于302,785名用户的每个指标,我们计算了其平均值、标准差以及第25、50(中位数)和75百分位数,这使得我们能够得出一个“平均档案”,有效地概括一个典型的LeetCode用户。
为了进一步丰富分析结果,对于筛选的20家知名科技公司,我们确定了每个上述指标的平均值,这使我们能够为每个公司创建一个“平均公司档案”,为有抱负的求职者提供一个基准。

研究结论

下表展示了指标相关性(降序):
表中列出的所有相关性均具有统计学意义(p < 0.01)。虽然一些相关系数较小(小于0.3),但它们都在统计学上是显著正相关。
我们选择了三种最流行的编程语言(C++、Python和Java)和二十个通常在各种计算机科学课程中的共通问题。这些指标对应每个公司的平均值详细列在如下:
上面两张表同时列举了每家公司解决各种类型问题的平均数量。家可以利用这些数据来推断哪些问题需要更多的关注例如,平均谷歌开发者解决了93.8个动态规划题目,相比之下只有22.9个与图相关的问题。一个用心的求职者,在面试谷歌的时候可能会优先准备动态规划题目。练习每种类型的问题是一项艰巨的任务,因此优先考虑成功候选人经常解决的问题是一个实用的方法。
我们再回到这张表:
1、打牢基础,不要眼高手低
表中的红色部分,我们观察到用户的问题解决能力评分与练习的难题数量的相关性为0.52,与中等难度问题的相关性为0.47,与容易问题的相关性为0.30。这表明评分较高的开发者倾向于解决更具挑战性的问题。
鉴于所有相关性的特征(r >= 0.3),建议大家练习所有难度级别的问题,因为它们都与问题解决能力评分相关。尽管容易问题显示出与问题解决评分的最低相关性,但这并不意味着它们是不重要的,它们仍然是打牢基础的题目!
2、C++、Python语言成为主流
表中的黄色部分,我们看到与用户总体评分相关性最高的前五种语言是C++、Python3(Python)、Bash、MySQL和Java。C++的相关性最高,为0.33,这是有道理的。因为C++在竞争性编程中是常见的选择,因为它的速度。
这些数据表明,评分较高的开发者经常使用C++来解决编程问题。事实上,C++可以比其他语言更快地解决一些问题,即使使用相同的算法。Python3紧随其后,相关性为0.22。由于Python清晰的语法和便捷的工具,它可以说是用于问题解决的最简单语言之一。
Bash和MySQL排名第三和第四。它们不是通用语言,但在特定环境中至关重要,这可能解释了它们与其他更通用语言相比的相关性更高。Java以0.09的相关性排名第五。尽管这不是一个强相关性,但它仍然高于大多数通用语言。由于Java在学校和大学中广泛教授,许多开发者都熟悉它。因此,它的相关性没有那么高,可能是因为不管开发者的技能如何,许多人可能会选择Java作为他们的主要语言。其他语言与开发者评分(r < 0.1)没有显示出很强的联系,这是可以理解的。虽然像C#、Go和Ruby这样的语言有它们自己的好处和用户群体,但它们的用户基础没有C++、Java或Python3那么大。
3、动态规划和贪心算法最抢眼
在表中的绿色部分,显示了解决每种类型问题的数量与问题解决能力评分之间的相关性。我们注意到,除了数据库问题(r = 0.10)之外,所有其他问题类型都与用户评分具有中等水平的相关性(> 0.30)。在前十个中,几个常被开发者视为“致命敌人”的挑战脱颖而出。例如,动态规划和贪心算法都具有0.5的相关性
图展示了全球评分分布和我们数据集中每家公司的平均评分:
红线代表全球平均评分1513。显然,数据集中的20家科技公司中有13家的评分超过了全球平均水平。
平均评分最高的前十家公司是:谷歌(1773)、Facebook(1713)、彭博(1668)、领英(1660)、英伟达(1660)、Uber(1628)、亚马逊(1607)、苹果(1600)、微软(1587)和三星(1562)。
此外,我们观察到像IBM(1474)、高通(1491)和思科(1497)这样的硬件和后端公司的平均评分相对较低。根据数据表明,那些目标是硬件导向公司的求职者可能不需要像那些以软件为重点的公司那样投入大量的时间来解题。
总之,公司的平均评分可以提供其技术面试严格程度的参考。
由于我们从公司员工那里得出公司的平均评分,这同时也反映了其员工的平均能力水平。
下图展示了每家公司员工解决问题的平均数量:
水平红线代表全球的平均水平。这表明,至少参加过一次周赛的LeetCode用户已经解决了88.9个容易问题、133.2个中等问题和26.2个困难问题,总共248个问题。需要注意的是,这个平均值只适用于参加过比赛的用户。所有LeetCode用户的整体平均值会更低。从上图中可以看出,有六家公司的平均问题解决数量超过500。
下图展示了每家公司使用C++、Python3和Java解决问题的平均数量:
红线代表球平均水平,不同公司之间在语言偏好上是显而易见的。例如,图的左侧显示LinkedIn员工主要使用Java。这与LinkedIn依赖Java为其平台提供支持以及招聘熟练的Java开发者是一致的。在右侧,英伟达、三星和谷歌员工使用C++解决的问题最多。鉴于这些公司广泛使用C++,他们寻找C++专家是合乎逻辑的。当涉及到Python3时,彭博处于领先地位,反映了Python在彭博作为主要语言的地位。
例如,对于那些瞄准谷歌的人来说,提升自己的C++技能似乎是明智的。然而,必须理解这是个一般趋势(一个人可以在没有掌握公司最常用语言的情况下获得这些公司的职位)。
说明:本研究主要有效性威胁来自收集的数据。由于并非所有用户都提供了他们的公司信息,我们无法获得每家公司的完整情况。所以得出的结论是基于现有数据的,但它确实在一定程度上反映了一些真是情况。
相关性并不意味着因果关系。仅仅因为两件事之间的相关性相当高,并不意味着它们之间必然存在因果关系,大家请注意!
来自:2024 36th CSEE&T
题目:How Much Effort Do You Need to Expend on a Technical Interview?
作者:Jialin Cui、Runqiu Zhang、Fangtong Zhou、Ruochi Li、Yang Song、Ed Gehringer

题库下载

QIML公众号整理了从LeetCode Premium中各大金融机构的相关面试题目,每家公司的面试题目会根据它们出现的频率进行排序(最受欢迎的问题会放在最前面)。
目前公众号收集整理到的公司有(按照字母排序):Akuna Capital、BlackRock 、Bloomberg 、Citadel 、Deutsche Bank 、Goldman Sachs 、JPMorgan 、Jump Trading、Morgan Stanley 、Two Sigma

独家!全球顶尖对冲基金LeetCode面试题汇总

更多阅读