【學長姊帶路】LeetCode 題庫大公開,應徵軟體工程師考前必看 !
作者/Glints新加坡商星業科技有限公司
LeetCode – 是2015年在美國舊金山成立的一間專門服務軟體工程師求職者的公司,它是一個收集了超過2000道軟體工程師面試技術考試題目的網站,包括了Google、Microsoft,、Facebook、Apple這些科技巨頭的技術題目,通通都在這!
大家都知道,軟體工程師面試免不了技術考試。而考試階段通常是出現在與HR面試完(看看如何寫出會讓你收到面試通知的履歷)。
你可能會想2000題也太多了吧!你要何年何月才刷的完?而且還不排除刷完題可能會忘記!
不用擔心!這篇文章Glints要跟大家來討論LeetCode的優點與缺點、看看他們驚人的數據、如何開始與快速上手,以及它到底還有什麼其它的產品與功能。教大家如何有效率的使用LeetCode。
希望接下來的資訊可以有幫助,大家一起找到理想工作!
LeetCode的優點與缺點
LeetCode的優點有以下的幾項:
1. LeetCode所有的題目全部來自業內公司的真實面試
是的,LeetCode上可以看到的題目都是曾經到該公司面試過的人提供的,是100%真實出現過的題目。而LeetCode也會做定期的更新,盡量讓用戶能看到最新的問題。
這就好比上學時,教授/老師會發的模擬考。把模擬考練好,就可以有70%的把握囉!
若是你的目標是Google,你還可以針對Google的考試題目做練習。當然Google有可能會改變他們的考試,但是大方向的概念是不太會更動的。
LeetCode平台內的第一個題目,是一個給初階軟體工程師的題目。
2. 不用處理輸入輸出的問題,全部的工作都可以在網頁上完成
LeetCode創造了一個一站式的平台,複習、練習題目時,完全不需要為了處理輸入輸出,而離開網頁。甚至連有問題、卡題時、都能直接在平台上提問或是參考他人的討論。
也因為這樣,你完全可以將精力放在解決具體問題上,可以讓自己非常專注。如此一來,你對刷過的題目也會印象比較深刻,吸收的比較好。
一站式的平台,非常方便
3. 題目有豐富的討論,可以參考別人的思路
剛登入後,你就可以看到上方紅色框框的部分顯示”Discuss”,這就是一個討論區,有任何想了解的東西,可以先來這裡看看。而因為很多人可能都有跟你一樣的問題,所以遇到不會做的題目時,有很大機率已經有人討論過了。
在刷題目時,也有選項,可以直接前往該題目的討論區,是一個非常方便的性能。
LeetCode登入後的首頁最上方
4. 可以看到自己寫的程式碼跟所有提交過的程式碼中,執行效率的排名
每一位軟體工程師都有不同的邏輯,寫出來的程式碼也會不同。而隨著經驗,你寫程式的方式會慢慢改變,越來越有效率。
LeetCode有一個方便的小工具,就是當你提交你的答案時,系統會把你的程式碼跟其他人的程式碼做比較,會以兩個點比較效率程度:Runtime 與 Memory Usage
一道題目的答案是可以提交多次的,所以看完你的效率程度後,如果覺得還可以再進步,都可以繼續優化你的程式碼,一次次的提交答案,逐漸提升效率!
5. 支援多種主流程式語言:C, Python, Java等共16項
為了方便所有不同背景、經驗的軟體工程師,LeetCode的平台支援多種主流的程式語言。所以如果你不會使用C++或是Java,沒有關係!還有14種語言給你選。
LeetCode現在有支援的程式語言:C, C#, C++, Python, Python3, Java, JavaScript, Ruby, Swift, Go, Scala, Kotlin, PHP, Rust, TypeScript, Racket。而你可以在刷題的隨時更換。
使用下拉式選單直接選擇語言
LeetCode的缺點有以下的幾項:
1. LeetCode在語言方面只有英文以及簡體中文
要把一件事情做好,做到完美,就意味著要做一點犧牲。LeetCode在程式語言支援方面做得非常完善,但相對的,在國家的語言方面就沒有這麼完整了。
而LeetCode的語言是以國家區分,現在只有美國(英文)跟中國(簡體中文)。
這邊Glints建議大家直接用英文來做題。原因有兩個:
第一,程式語言的結構本來就使用英文,很多公式也是英文啟發的,所以應該不會太難理解。第二,可以藉此機會磨練自己的英文能力,如果想要進外商公司或是未來有打算,有一定的英文能力會比較吃香。
如果遇到真的看不懂的題目在去Google Translate一下就可以了。
2. 沒有第三方的工具可以使用,必須對語法非常熟悉
雖然LeetCode可以讓使用者一站式完成所有的事情,但是它沒有第三方工具,像是一些系統內建的工具,可以幫忙檢查程式碼是否有問題。只有提交答案後,才能知道程式碼有沒有錯誤。
但這也很有可能是LeetCode的用心良苦,希望使用者們可以在寫程式時,更細心,養成檢查的好習慣!
當然在出社會後,沒有一家公司會限制你不能使用工具。所以如果在刷題時真的很需要的話,可以將自己常使用的編輯工具打開,用複製貼上的方式,以此確認你的程式碼是否有語法錯誤。
3. 個別公司的面試考試題目需要訂閱Premium
畢竟LeetCode還是需要賺錢,讓公司可以營運,所以規劃了Premium的會員證。當你進到首頁,它會推薦你一些面試題目,有部分就是必須花錢訂閱Premium才能看到的。
Glints會建議先做完你需要的題目,再來考慮需不需要用到Premium。但是若你一開始就是為了看某一家公司的面試考題而來,這邊的建議是以單月訂閱,在啟用Premium一個月內重點複習該公司的題目。
以上就是Glints經過一番查詢研究,使用LeetCode的優缺點,希望大家現在有更深的認知了。
LeetCode數據
為什麼要跟大家介紹LeetCode呢?為什麼會推薦給軟體工程師?
非常感謝,HISKIO程式部落整理的重要數據,以下資訊來自於HISKIO之問卷調查的結果(有興趣可以直接到連結看看)。
首先,問卷參與者有將近40%的人從事網路前端,或是對其有興趣。其次分別為35%的網路後端和22%的資料科學領域。而依照工作性能,他們最常使用的JavaScript,比重佔約47%,其次Python在軟體工程師的工作上是最常會使用到的程式語言,比重佔約45%。
面試內出現LeetCode題目的機率是多少?
根據HISKIO的調查,參與者中,有48%的人表示LeetCode考題佔他們面試題目的10%-30%,而這裡面有33%的人表示佔他們面試分數的機率甚至高達30%-50%。平均下來,有超過25%的人在面試的考試中會看到LeetCode的題目。
其中雲端服務、人工智慧和資料科學領域的工程師最常被考到LeetCode的題目。
題型分布有哪些?
因為題型分布也只是針對參加問卷調查的人,所以也跟雲端服務、人工智慧、以及資料科學比較有關係。但是還是非常值得參考。
數據如下,15%的題型跟找規律、數學公式有相關,20%的題型跟邊界條件的考察有相關,34%的題型跟演算法有相關,最後31%的題型跟基本數據結構的考察有相關。
必考題
再往更細看的話,面試最容易遇見的題型有:泡泡排序 (Bubble Sort),堆疊 (Stack),鏈結串列 (Linked List),快速排序 (Quick Sort),動態規劃 (Dynamic Programming),二元樹 (Binary Tree),佇列 (Queue)。
分別 – 前端工程式師必考泡泡排序,後端工程師必考堆疊,資料科學工程師必考快速排列。從演算法方面來看,不管你是面試前端、後端、還是資料科學工程師,二元樹是必考的!
最後問卷內有70%的人認為,以下四個演算法的原理以及運算方法一定要弄懂 (雖然考試不常出現):圖,Floyd-Warshall演算法,Dijkstra演算法,還有系統設計。
如何開始?2分鐘帶你走完註冊帳號的流程
使用LeetCode非常簡單!大概只需要2分鐘就可以完成申請帳號。
第一步:點入帳號註冊連結
第二步:輸入資料
第三步:到Email點擊確認郵件之連結
完成,很簡單吧!帳號註冊好之後,就可以馬上開始做題囉!
如何才能有效率的刷題?
很多人可能會覺得LeetCode裡面的題目這麼多,而且也只會越來越多,怎麼也刷不完阿!就算刷完了還是會忘記…
確實如此,所以我們要有效率的刷題,下面介紹一個Google Sheets工具給大家,點擊連結直接複製整個檔案,就可以開始自己使用了。這個工具是一位對LeetCode非常熟悉的前輩提供的,這裡是他的部落格。在他的文章裡討論的很細,有興趣可以去看看。
但是其實你太不需要全部都了解,才能利用這個工具,提升效率。
這個Google Sheets主要用途是紀錄。而Glints建議複製表格分成一個公司一個Sheet,格式保持不變。再利用各表格紀錄重要題目。因為每一家公司都對軟體工程師技術性上的要求不太一樣,所以也可能會遇到不一樣的問題。
要知道哪些是重要題目也很簡單,只要到LeetCode的問題主頁,右手邊就會顯示Featured的問題列表,例如SQL相關70題重要題目、170題演算法題目等等。也有公司題目列表(但是要有Premium才能進入)。你也可以到剛剛介紹過的討論區看是否有重要問題,或是自己發問。最後,上網查也是一個不錯的選項。
因為每一個人的需求不一樣,所以用以上方法整理自己的列表是最有效率的!這裡也提供AlphaCamp整理的LeetCode 刷題重點心法。
我需要Leetcode Premium嗎?
LeetCode Premium有什麼?多少錢?
Premium追加功能:影片解答、Premium題目與解答(大公司、大品牌面試考題)、公司題目列表、自動完成編程工具、Debugger調試工具、運作加速器(在平台上)、最常見面試問題列表、模擬面試功能、無限量的Playground(一個可以隨意寫程式的空間)。
Premium價格:Premium分成兩種模式付費。一、月繳美金$35元,下個月可以選擇不續訂。二、年繳美金$159,換算月繳美金$13。
但我們真的需要Premium嗎?其實,不一定。上述的追加功能,有幾項是可以用其他的手法得到。比如無限Playground,自己的電腦容量如果夠大,就把程式存在篇程工具裡就可以了。再舉例,自動編程工具各大框架也都備有。
Glints建議考慮以下3點,確認自己是否需要花錢訂閱Premium。公司題目列表、最常見面試問題列表、以及模擬面試功能。最後,之前也有提到,如果你只是短時間內需要某公司的面試題目,考慮訂閱一個月就好了。
其他功能
LeetCode還有兩個比較特別的功能:競賽和商店。
LeetCode時常會公布競賽,頻率分為,每星期一次以及每兩個星期一次。允許使用者自由參加。在固定的時間內,將官方發出的題目編程並提交。時間到了,官方就會審視所有參與者的答案,做出評分。分數最高者可以贏得獎勵。
獎勵是以LeetCoin的模式發給,只能用於LeetCode的商店內。商店內有賣一些周邊商品(衣服等),以及原本要花錢訂閱一個月Premium會員(5000 LeetCoins)。
Glints會很推薦軟體工程師們參與競賽,因為這些題目可能是官方精心設計的,也有可能是某個企業在面試上最新出的題目(可能目前LeetCode還沒有答案)。首次參與獎是200 LeetCoins。若是得獎可以最高領到5000 LeetCoins。
結論
每個軟體工程師都有自己的想法,都有理想的工作,與工作模式。
不過他們都免不了的事情就是面試,還有考試。這篇文章充分的提供大家LeetCode上的資訊,希望可以讓大家更了解如何運用一些資源,讓自己找到更好、更棒、更適合自己的工作!
不管你現在職涯在哪一個階段,相信LeetCode可以成為協助你面試成功的好工具!想了解更多的人,可以看看Glints整理的過來人的經驗分享:【刷題:LeetCode練500題之後,我發現了5個軟體工程師必須了解的重點!】
本文由 面試經驗暨工作甘苦談 授權轉載,原文〈LeetCode 題庫大公開,應徵軟體工程師考前必看 !〉
___________
你也有經驗想分享嗎?快來投稿賺稿費吧!
瀏覽 19,276 次