開始 LeetCode 的心路歷程


Posted by DY on 2024-07-24

刷 LeetCode 不一定能找到好工作,但好工作基本上都要求你 LeetCode刷好刷滿,所以為了求職能夠更順利,現在就開刷 LeetCode 吧!

面對他

要如何下決定開始練習 LeetCode?是一個困難的問題。同樣生為資工系畢業 Programmer 的你我,可能都曾經在心裡想過,我們在經過大學演算法、資結必修課的洗禮後,我真的還需要特別練習 LeetCode 題目嗎?就算很會寫 LeetCode,在工作中可能也不會派上用場,為什麼還要特別練習這些?當需要用到特定演算法的時候,不是等需要用到時上網搜尋再實作出來就好了,為什麼要背起來呢?(更何況很多時候可以使用 Library,甚至更潮一點問問 ChatGPT 就能夠完成了,事實上工作的場景中可能其實根本也用不到什麼厲害的演算法)

接受他

雖然我們可以想出一大堆懷疑為何要進行 LeetCode 練習的提問,而且這些被提出的懷疑可能也都是正確或有道理的。不過,既然我們走在社會上,生為一個 Programmer 你就得接受一個殘酷的事實:

就是如果想找到一個好工作,那你就必須要練習 LeetCode!

Note: 神人級 Programmer 可能是例外,例如可能不用練習就能夠快速想到 Optimal Solution,或是強到已經不太會被問這系列基礎程式問題的強者,但無奈筆者本人資質平庸,就只是一個一般人而已。

從個人的角度簡單歸納幾個為什麼 LeetCode 重要的原因:

  1. 面試時間有限,公司要在有限時間內評斷候選人的技術能力其實非常困難,所以一個簡單的方法就是問 LeetCode 問題。(很殘酷對吧?沒錯就是很殘酷!感覺很不公平,但我們從小到大面對的的升學考試也都類似這個情況)此外,事實上有些公司比較重視分析問題的整個討論過程,所以也不一定是從答案正不正確來篩選候選人,不過如果你沒特別練習過 LeetCode,通常整個過程也沒辦法表現得太好。
  2. 評斷候選人到底準備好了嗎?一般來說開始面試前,HR 通常會說明面試是否有 LeetCode 類似的技術測驗(就算沒有 LeetCode 測驗可能也是找工作的 common sense),如果你真的想加入這間公司,你勢必要在面試前練習並準備好面對 LeetCode 問題。這有點像早就把升學考試範圍告訴你了,面對升學考試我們通常要準備一年,好像可以問問自己難道找工作時不需要準備嗎?雖然 DAS (Data Structures and Algorithms) 範圍可能很大、難以捉模、變化也更高深莫測,不過多準備一步就可能多賺到一步!
  3. 實務上,很多公司會直接從 LeetCode 中挑出一樣的題目進行測驗,或是只稍微改寫題目敘述做一些偽裝,本質上他還是一模一樣的題目。這種時候,對候選人來說有寫過的話,基本上就是在送分給你,你應該要好好表現出練習的成果。(有點像是把你排練過的一場戲演好演滿給面試官看!)所以練習 LeetCode 才會這麼重要,因為總是會有比你努力的競爭者,可以想像他可能已經練習了很多題目,如果面對同一題他有正確答出來而你沒有,假設面試中其他問題你們都表現得差不多的狀況下,在公司眼中好像沒什麼理由不去選擇一個 LeetCode 表現更好的候選人。
  • 簡而言之:我們並需接受刷題有助於找到好工作的事實

處理他

當你認清必須要練習 LeetCode 這件事情之後,緊接著會遇到兩個大問題:

  1. 什麼時候開始刷題?
    唯一真理就是,現在就可以開始了,現在、馬上、立刻!愈早愈好,而且永遠不嫌晚,此時不開始,更待何時?
    一句至理名言是這樣說的:

    你終究要開刷 LeetCode 的,那為什麼不一開始就刷?
    
  2. 刷題要刷多久?
    刷題就像買進 ETF 定期定額一樣,重要的是及早開始,而且長期持續投入刷題,相信維持這樣的紀律,長期來看就能得到正報酬率。最終可能直到你找到滿意或是最好的工作且不想換工作為止(aka 財富自由了),畢竟我們總是要為未來(i.e., 下一份工作)提早準備。聽起來好像很累人,不過簡單來說就是要持續慢慢練習就可以了,上班已經很累人了也不需要把自己逼得這麼緊。

  • 簡而言之:儘早開始刷題,且持續投入刷題,可以有助於準備找到更好的工作

放下他

當你已經在事前充分準備,你就只需要在面試中好好表現。有時候能不能解出一道 LeetCode 問題存在運氣成份,畢竟出題難度從 Easy、Medium 到 Hard 都有,如果真的不幸遇到難題或腦筋打結而解不出來,也不需要太鑽牛角尖責怪自己(雖然有時候可能很難做到,哈!),相信只要持續投入練習,等 cooling-off period 一過再次挑戰面試就可以了。

祝福閱讀這篇文章的大家,都能找到喜歡且適合自己的好工作!


#Leetcode







Related Posts

什麼是Base64 ?

什麼是Base64 ?

MTR04_0630

MTR04_0630

【單元測試的藝術】Chap 4: 使用模擬物件驗證互動

【單元測試的藝術】Chap 4: 使用模擬物件驗證互動


Comments