什麼是 Leetcode? Leetcode 必考題、最有效率刷題法一次告訴你!

LeetCode,工程師

【為什麼我們要挑選這則文章】
LeetCode 專門收集軟體工程師面試題目,可以說是大家面試前必刷的一個網站。
不過面試會出現 LeetCode 題目的機率是多少?又該如何有效率的刷題?來看看職涯發展和人才招募平台 Glints 有什麼建議吧!

本文經 Glints Taiwan Blog 授權

作者:Tim Kuo

LeetCode – 是2015年在美國舊金山成立的一間專門服務軟體工程師求職者的公司,它是一個收集了超過 2000 道軟體工程師面試技術考試題目的網站,包括了Google、Microsoft、Facebook、Apple 這些科技巨頭的技術題目,通通都在這!

大家都知道,軟體工程師面試免不了技術考試。而考試階段通常是出現在與HR面試完(看看如何寫出會讓你收到面試通知的履歷)。

你可能會想 2000 題也太多了吧!你要何年何月才刷的完?而且還不排除刷完題可能會忘記!

不用擔心!這篇文章要跟大家來討論 LeetCode 的優點與缺點、看看他們驚人的數據、如何開始與快速上手,以及它到底還有什麼其它的產品與功能。教大家如何有效率的使用 LeetCode。

希望接下來的資訊可以有幫助,大家一起找到理想工作!

LeetCode 的優點有哪些?

  1. LeetCode 所有的題目全部來自業內公司的真實面試

是的,LeetCode 上可以看到的題目都是曾經到該公司面試過的人提供的,是 100% 真實出現過的題目。而 LeetCode 也會做定期的更新,盡量讓用戶能看到最新的問題。

這就好比上學時,教授/老師會發的模擬考。把模擬考練好,就可以有 70% 的把握囉!

若是你的目標是 Google,你還可以針對 Google 的考試題目做練習。當然 Google 有可能會改變他們的考試,但是大方向的概念是不太會更動的。

  1. 不用處理輸入輸出的問題,全部的工作都可以在網頁上完成

LeetCode 創造了一個一站式的平台,複習、練習題目時,完全不需要為了處理輸入輸出,而離開網頁。甚至連有問題、卡題時、都能直接在平台上提問或是參考他人的討論。

也因為這樣,你完全可以將精力放在解決具體問題上,可以讓自己非常專注。如此一來,你對刷過的題目也會印象比較深刻,吸收的比較好。

  1. 題目有豐富的討論,可以參考別人的思路
LeetCode 登入後的首頁最上方

剛登入後,你就可以看到上方紅色框框的部分顯示「Discuss」,這就是一個討論區,有任何想了解的東西,可以先來這裡看看。而因為很多人可能都有跟你一樣的問題,所以遇到不會做的題目時,有很大機率已經有人討論過了。

在刷題目時,也有選項,可以直接前往該題目的討論區,是一個非常方便的性能。

  1. 可以看到自己寫的程式碼跟所有提交過的程式碼中,執行效率的排名

每一位軟體工程師都有不同的邏輯,寫出來的程式碼也會不同。而隨著經驗,你寫程式的方式會慢慢改變,越來越有效率。

LeetCode 有一個方便的小工具,就是當你提交你的答案時,系統會把你的程式碼跟其他人的程式碼做比較,會以兩個點比較效率程度:Runtime 與 Memory Usage

一道題目的答案是可以提交多次的,所以看完你的效率程度後,如果覺得還可以再進步,都可以繼續優化你的程式碼,一次次的提交答案,逐漸提升效率!

  1. 支援多種主流程式語言: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。而你可以在刷題的隨時更換。

◆ 延伸閱讀:工程師們該緊張嗎?MIT、微軟打造一款會刷 LeetCode 程式題的 AI,解出了 60% 難題!

LeetCode 的缺點有哪些?

  1. LeetCode 在語言方面只有英文以及簡體中文

要把一件事情做好,做到完美,就意味著要做一點犧牲。 LeetCode 在程式語言支援方面做得非常完善,但相對的,在國家的語言方面就沒有這麼完整了。

LeetCode 的語言是以國家區分,現在只有美國(英文)跟中國(簡體中文)

這邊 Glints (TO 編按:原文平台)建議大家直接用英文來做題。原因有兩個:

第一,程式語言的結構本來就使用英文,很多公式也是英文啟發的,所以應該不會太難理解。第二,可以藉此機會磨練自己的英文能力,如果想要進外商公司或是未來有打算,有一定的英文能力會比較吃香。

如果遇到真的看不懂的題目再去 Google Translate 一下就可以了。

  1. 沒有第三方的工具可以使用,必須對語法非常熟悉

雖然 LeetCode 可以讓使用者一站式完成所有的事情,但是它沒有第三方工具,像是一些系統內建的工具,可以幫忙檢查程式碼是否有問題。只有提交答案後,才能知道程式碼有沒有錯誤。

但這也很有可能是 LeetCode 的用心良苦,希望使用者們可以在寫程式時,更細心,養成檢查的好習慣!

當然在出社會後,沒有一家公司會限制你不能使用工具。所以如果在刷題時真的很需要的話,可以將自己常使用的編輯工具打開,用複製貼上的方式,以此確認你的程式碼是否有語法錯誤。

  1. 個別公司的面試考試題目需要訂閱 Premium

畢竟 LeetCode 還是需要賺錢,讓公司可以營運,所以規劃了 Premium 的會員證。當你進到首頁,它會推薦你一些面試題目,有部分就是必須花錢訂閱 Premium 才能看到的

Glints 會建議先做完你需要的題目,再來考慮需不需要用到 Premium。但是若你一開始就是為了看某一家公司的面試考題而來,這邊的建議是以單月訂閱,在啟用 Premium 一個月內重點複習該公司的題目。

以上就是 Glints 經過一番查詢研究,使用 LeetCode 的優缺點,希望大家現在有更深的認知了。

◆ 延伸閱讀:【附考古題】如何面試 6 家頂尖科技公司並全部拿到 offer?神人:練好考古題 

LeetCode 真的這麼好用嗎?

為什麼要跟大家介紹 LeetCode 呢?為什麼會推薦給軟體工程師?

非常感謝,HISKIO 程式部落整理的重要數據,以下資訊來自於 HISKIO 之問卷調查的結果(有興趣可以直接到連結看看)。

首先,問卷參與者有將近 40% 的人從事網路前端,或是對其有興趣。其次分別為 35% 的網路後端和 22% 的資料科學領域。而依照工作性能,他們最常使用的 JavaScript,比重佔約 47%,其次 Python 在軟體工程師的工作上是最常會使用到的程式語言,比重佔約 45%

面試內出現 LeetCode 題目的機率是多少?

根據 HISKIO 的調查,參與者中,有 48% 的人表示 LeetCode 考題佔他們面試題目的 10%-30%,而這裡面有 33% 的人表示佔他們面試分數的機率甚至高達 30%-50%。平均下來,有超過 25% 的人在面試的考試中會看到 LeetCode 的題目

其中雲端服務、人工智慧和資料科學領域的工程師最常被考到 LeetCode 的題目。

訂閱《AI TOgether》趨勢週報
每週幫你精選 AI 主題報導

感謝訂閱!隨時注意信箱的最新資訊

LeetCode 題型分布有哪些?

因為題型分布也只是針對參加問卷調查的人,所以也跟雲端服務、人工智慧、以及資料科學比較有關係。但是還是非常值得參考。

數據如下,15% 的題型跟找規律、數學公式有相關,20% 的題型跟邊界條件的考察有相關,34% 的題型跟演算法有相關,最後31% 的題型跟基本數據結構的考察有相關。

LeetCode 有哪些必考題?

再往更細看的話,面試最容易遇見的題型有:泡泡排序 (Bubble Sort),堆疊 (Stack),鏈結串列 (Linked List),快速排序 (Quick Sort),動態規劃 (Dynamic Programming),二元樹 (Binary Tree),佇列 (Queue)

分別 – 前端工程式師必考泡泡排序,後端工程師必考堆疊,資料科學工程師必考快速排列。從演算法方面來看,不管你是面試前端、後端、還是資料科學工程師,二元樹是必考的!

最後問卷內有 70% 的人認為,以下四個演算法的原理以及運算方法一定要弄懂 (雖然考試不常出現):圖,Floyd-Warshall 演算法,Dijkstra 演算法,還有系統設計

♦ 延伸閱讀:苦讀 6 個月成功進 Google!台灣工程師分享求職心法:這本面試聖經必看  

如何開始? 2 分鐘帶你走完註冊 LeetCode 的流程

使用 LeetCode 非常簡單!大概只需要 2 分鐘就可以完成申請帳號。

第一步:點入帳號註冊連結

第二步:輸入資料

第三步:到Email點擊確認郵件之連結

完成,很簡單吧!帳號註冊好之後,就可以馬上開始做題囉!

如何才能有效率的在 LeetCode 刷題?

很多人可能會覺得 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 還有兩個比較特別的功能:競賽商店

LeetCode 時常會公布競賽,頻率分為,每星期一次以及每兩個星期一次。允許使用者自由參加。在固定的時間內,將官方發出的題目編程並提交。時間到了,官方就會審視所有參與者的答案,做出評分。分數最高者可以贏得獎勵。

獎勵是以 LeetCoin 的模式發給,只能用於 LeetCode 的商店內。商店內有賣一些周邊商品(衣服等),以及原本要花錢訂閱一個月 Premium 會員 (5000 LeetCoins)。

Glints 會很推薦軟體工程師們參與競賽,因為這些題目可能是官方精心設計的,也有可能是某個企業在面試上最新出的題目(可能目前 LeetCode 還沒有答案)。首次參與獎是 200 LeetCoins。若是得獎可以最高領到 5000 LeetCoins。

每個軟體工程師都有自己的想法,都有理想的工作,與工作模式。

不過他們都免不了的事情就是面試,還有考試。這篇文章充分的提供大家 LeetCode 上的資訊,希望可以讓大家更了解如何運用一些資源,讓自己找到更好、更棒、更適合自己的工作!

不管你現在職涯在哪一個階段,相信 LeetCode 可以成為協助你面試成功的好工具!

 

*本文經 Glints Taiwan Blog 授權刊登,並同意 TechOrange 編寫導讀與修訂標題,原文標題為〈軟體工程師面試考試題庫,LeetCode有 2000 題,要怎麼練! 〉。圖片來源:Shutterstock。

(責任編輯:廖紹伶)