iT邦幫忙

2022 iThome 鐵人賽

DAY 14
3

在寫超過500題之後的這個階段,
參加leetcode contest時,讀者應該要以寫完前三題為目標了
而且接下來無論是寫了2000題還是寫500題,
leetcode contest rating才是和面試的coding反應速度最相關的(除了一些後面會提到的面試注意事項)
就算寫了2000題也很有可能以前寫的全忘光了,
只寫500題也可能神速的融會貫通

在這個階段要做的就是盡量把面試會考或是有可能考的主題都練熟
看到任何一個題目都要猜的到大致上要往哪個方向去想

而且要盡量增進自己的刷題效率
減少寫出bug的機率跟降低debug時間
增加寫code速度,準備好一些常用模板(之後有一篇文會提供),
操作STL的時候(以C++為例:)
寫substr/操作map iterator/find in multimap之類的語法
不應該要再花時間查了(至少要整理好背起來)

最大幅度的增進自己的刷題效率
才能在倦怠來襲之前練熟大部分的topic

BTW,網路上常常流傳什麼Google不考DP很愛考graph之類的,
絕對...沒這回事,筆者就被考了蠻難的DP
就筆者個人面試兩次(9題)的經驗和網路上打聽,真的沒有什麼主題是G社不會考的
頂多是出現機率高低,尤其DP題目這麼多概念這麼通用,完全不去練習是蠻可惜的
與其去猜題挑自己喜歡或是熟系的寫,不如柿子挑軟的吃把好理解能掌握的通通都學會就對了

筆者再只推薦應該要練習的topic:
(請對照官神Github題目分類整理
再次對官神獻上12萬分的謝意)


  • Binary Search by Value (聽說有陣子Google很愛考)
    Find K-th Element

  • Hash+Prefix (很多經典題目)

  • Heap (我比較喜歡叫這類題目 Ordered Set)

  • Tree
    Path in a tree
    Lowest Common Ancestor
    Tree and sequence

  • Design
    Linked List + hash map of list iterator
    經典題: 164. LRU cache, 341.Flatten-Nested-List-Iterator

  • Monotonic stacks/queue/deque
    form smallest sequence (算是比較少考)

  • Parse expression (這個要很注意edge case.. 但我在某OA被考)

  • Priority Queue (有點微妙跟Ordered Set大同小異)

  • Sort+PQ (題目我覺得都很不錯但是面試好像沒那麼常考)

  • DFS
    search in an array (也就是backtrack,注意如何剪枝)
    DFS+memorization

  • BFS
    Multi State (少考但我覺得864 https://leetcode.com/problems/shortest-path-to-get-all-keys/ 之類的算是蠻經典的 Cat and Mouse就不要管他)

  • Trie少考但也是會考是因為很好寫出來所以加減刷一下 (677 https://leetcode.com/problems/map-sum-pairs/ 我覺得很讚)

  • DP
    基本I
    基本II
    背包
    雙序列型
    To Do or Not To Do
    max subarray
    簡單的走迷宮型
    這幾個必須把握
    其他的...區間型DP和狀態壓縮DP 我也是有稍微準備但是讀者可能不必那麼花心力

  • Bit Manipulation 筆者個人認為除了做嵌入式的組,不然考這個對面試官來說CP值很低(有一大堆跟演算法有關的題目可以選Orz)

  • Divide and Conquer 少考加上 LC上的DC題剛好都可以用BIT做...(?)
    MergeSort/QuickSort還是要會寫

  • String
    leetcode上標string的大部分問題其實不是string的問題
    常常很多是複雜度太高的array題,如果問題的某個n或是k限制在小寫英文字母26,O(2626n)就剛好可以做,就變成字串題了
    substring就是subarray的問題,或是也會有一些subsenquence和subset的問題
    Rolling Hash比賽好用但是面試不太會特別考這個,不過我在某次亞麻的面試有用到這個技巧
    KMP/Manacher筆者完全不想花腦容量去準備XD 面試出現算我衰XD

  • Min-Max Strategy 其實就是DFS+memorization的變形,好像也蠻少考的

  • Math
    GCD輾轉相除法
    質數篩
    快速冪(的概念很好用)
    排列組合
    Distances 296.Best-Meeting-Point的結論很重要,最好連怎麼證明都知道
    Random Pick (筆者在G社被考)

  • Greedy就比較雜一點而且沒什麼general的套路可循,但幾個大主題還是應該要準備好
    LIS的變化題
    Three pass (這種題目超級多而且很簡單)
    Intervals (筆者在G社被考)
    Parenthesis
    Indexing Sort
    Sort
    Constructive Problems (筆者在G社被考)

  • Other
    Prefix sum(的概念太基本太常用到了!)
    掃描線 / 差分數組 (筆者覺得這個超常考!在G社也被考了!)
    Aggregate Subarray by element
    結論轉移(這個和上面的題目雖然不常考但是概念非常通用)


好了這篇就是打了一坨拉庫的主題和筆者個人主觀的小小心得

像筆者本身很喜歡追的一個網誌
Jay的跑步筆記
筆者從來沒跑過馬拉松,看他的心路歷程文固然勵志
但就難以體會他每篇文章裡面遇到的痛苦和撞牆和咬牙

對於沒有在刷題或是沒有寫超過300題(所有平台加起來)的人
這些topic以及小心得可能看的輕鬆寫意也有可能看的霧裏看花
但真的一題一題寫過想過的人才能懂得箇中奧妙

剛進入這個階段的讀者可能會覺得
天啊有好多題目好多主題都還不會
但在這個階段就已經不是比誰學的快誰口袋深誰時間多,
而是比誰的氣長,能夠沈住氣一題一題刷到每個主題都熟練
堅持到最後的人才有辦法在面試中拿出好的表現


注:(2022-10-26)

筆者感覺最多人會卡的地方就是這裡
大約是比賽1700~2000左右

我自己後來第二次面試的時候並沒有在這個階段卡住上不去
(但是可能因為我有做到以下的事情)
我覺得可以給的建議是:

  1. 多看wisdompeak的影片
    我3個月內看了5,600部,與其花時間看解答區直接蹦出一個答案
    聽官神仔細講解從概念上要怎麼想跟看他怎麼打code的
    讓我當初學到非常多東西

  2. 同類型的題目一起寫,寫到自己熟再換下一個
    只有自己最了解自己,
    筆者看過不少人聲稱他題目寫很多了但是分數還是上不去
    但是其實並沒有把大部分常常考(或是比賽常常出的)題型弄熟

    筆者當初第二次開始刷題的時候自己評估了一下自己,
    整理了這些蠻基本的主題跟自己的能力

    最弱 ordered set/math/stack/intervals/DP/greedy/linklist->
    string/PQ+sort/min-max/Design/2pointer/sliding-window/resursion->
    mono stack|queue/Trie/DFS(backtrack)/Tree/diff array/scanline/hash+prefix->
    Graph(BFS/Dji/toposort)/Union Find/binary search 最熟

    建議就是把自己最弱的主題密集集中刷,刷到最弱的變最熟的,
    自然就不太會看到題目連想法都沒有,至少有可以一搏的餘力
    最熟的(通常比較不容易忘記)

  3. 多刷多複習,多AC多健康

    這點其實可以算是兩點

  • 刷的題目要夠多
    注意自己的效率,不要花很多時間浪費在卡住的一題上面
    (不管是想不出來還是某個人寫了很難的解答你看不懂)
    寫不出來就看wisdompeak,題目量累積起來,又有好好做好1.
    自然會比較容易融會貫通
  • 複習以前刷過的題目其實是非常划算的一件事情
    想像寫100題新的沒看過的題目
    和複習100題寫過的題目
    只要不是超級久以前寫過題目的,再看一次(有點像背單字的感覺)
    一定是後者可以花更少的力氣把題目記得更熟更學到東西

上一篇
169 to 500
下一篇
LC rating 2000+
系列文
0到100的軟體工程師面試之路31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

1
maxlivinc
iT邦新手 5 級 ‧ 2022-11-30 09:05:17

筆記筆記這篇很重要

我要留言

立即登入留言