LeetCode刷題哪家強?揭秘大廠面試背後的秘密


量化投資與機器學習微信公眾號,是業內垂直於量化投資、對沖基金、金融科技、人工智慧、大資料領域的主流自媒體公眾號擁有來自公募、私募、券商、期貨、銀行、保險、高校等行業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
更多閱讀


相關文章