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。而你可以在刷題的隨時更換。

TO 推薦閱讀:工程師們該緊張嗎?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 的優缺點,希望大家現在有更深的認知了。

TO 推薦閱讀:【附考古題】如何面試 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 的題目。

LeetCode 題型分布有哪些?

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

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

LeetCode 有哪些必考題?

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

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

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

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

如何開始? 分鐘帶你走完註冊 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)