代PO
-----
前言:
最近準備入職google了,想說在這邊回發一下心得文回饋一下大家。這邊注重在我是怎麼
準備面試的。文筆不太好請見諒。
先說一下我的timeline:
2020
--------
一月底: 投SRE general職缺
二月底: 通過OA,HR聯絡要求我提共電話面試時間
三月底: 從三月初持續寄信給HR想確認面試時間,HR沒回我直到三月底HR通知面試取消直
接被拒
六月: 收到第二個HR email跟我約SWE, frontend電話面試
七月底: 收到HR電面結果,positive feedback no head count。建議我九個月後再試試
看
2021
--------
五月: 收到第三個HR email跟我約onsite interview。HR跟我說雖然我投的缺是SWE,
Payment,但這只是代表我現在的面試是target payment team,所有流程都照general
SWE來跑,team match還是有機會選擇其他組。
六月: onsite interview
七月: HR通知送HC -> HR 通知過HC,進入team match 階段 -> team match成功
-----
準備:
-----
群組:
我在2020五月的時候被一個朋友拉進了wechat刷題群(2020群)。2020群裡面有差不多快20
個人,群組規定每周六天輪流由群組的人講解leetcode題目,當天沒有要講解的人在
meeting 開始前要先把當天要講解的題目寫過。
大概到了十月不知道是因為大家彈性疲乏了還是怎麼樣,其實後面很明顯感受到準備講題
的人沒有好好準備,很多人也開始不寫題目了。
在十二月初的時候我們決定讓2020群畢業,然後新創了一個2021群。這個群組強制要求必
須每天出席不能放假,而且大家必須要把自己將來半年的timeline寫出來(像是自己
target的公司,大部分的人都是target Faang,然後自己每周的進度)。
也因為大家是真的想要進大廠,所以就算要上班或是上課,大家在2021開始的幾個月都
很認真準備直到拿到offer。
我們2021群總共有12人。從2020十二月創群到現在已經有
5個進google,
3個進amazon,
1個 Wayfair,
1個 TicTok,
大廠錄取率是 83%。我自己私下也問過群組的人,發現大家準備的方法其實都差不多(畢
竟都在同個study group,也看過他們leetcode的submit heatmap)。所以我認我(們)的準
備方式應該還是有一點點參考價值的。
-----
刷題:
-----
先說我對於leetcode各種難度題目的感想
Easy:
基本上考的是你到底有沒有寫過code。所以這類型的題目基本上每題通常只會考一個知識
點(data structure)
Medium:
Medium的題目又可以另外分成三個難度:
第一個難度基本上跟Easy一樣,第二個和第三個難度開始考一些基本的
algorithm(sorting, tree…)或是會把一些data structures混著一起考,又或者跟著
algorithm一起考
Hard:
這個難度基本上跟Medium第三個難度差不多,一定把data structure 和 algorithm混著
考。
----
我認為刷Leetcode分為三個階段
1.Data Structure:
這個階段是針對比較沒有背景的人(沒上過data structure and algorithm這堂課)。所以
如果對於自己data structure很有自信的人可以跳過這個階段。 這個階段寫題目需要重
量不重質並且只針對easy – medium(第一個難度)的題目來寫。因為你需要知道所有好用
的data structure,這樣在後面的階段才不會在看discuss時,發現自己有些data
structure根本沒看過。
我自己是直接跳過這個階段的,因為我很慶幸遇到很好的教授把我底子打很好。想要從這
階段準備的人我建議可以把Leetcode Explore, Learn裡面的topic寫一寫。我建議這階
段也不要專牛角尖,只需要理解你寫的data structure怎麼運作就好。因為你在第二第三
階段會大量用到這些東西。可以把data structure想成是工具,然後你的頭腦是工具箱。
看到題目的時候開始想你有那些工具可以拿來使用。
我自己覺得如果從0開始準備,這階段leetcode題目至少要寫到100-150題。把所有簡單
data structure題都寫過一遍,至少讓自己知道他們在幹嘛。
2.Algorithm:
第二和第三階段刷題的重點變成重質不重量。因為你需要真的去理解並且融會貫通。而且
每次寫完題目一定要看discuss。我認為leetcode這網站最大價值不再於他提供題目,而
是他擁有強大的群社提供各種不同解法讓你參考。研究這些文章可以讓你發現很多奇奇怪
怪的解法進而加強思考能力。
我們(2021群)是從這個階段開始準備的,我們差不多準備了大概3個月並且是以周為單位
。每一週我們會選定一個topic(像是sorting, graph, graph traversal…)然後只寫這個
topic的題目。每一周周日我們會在meeting的一開始檢討當周進度,如果覺得不夠熟練下
一周就會維持一樣的topic繼續練。
這個方法的目的在於,你會一直練某個特定的data structure or algorithm直到你熟練
為止。
3.融會貫通:
三個月之後(差不多2021三月的時候)其實大部分的人都拿到offer了XD,基本上只剩我還
有另外兩個人還沒拿到。所以這階段分享的準備方式是我自己的準備方式。畢竟其他人都
拿到offer提早收工了。
這階段我選擇隨機寫題目(通常是寫google tag的高頻題目)並且訓練自己在看到一個新題
目時,可以用哪寫data structure 和algorithm來解。每次寫完一題後,一定會把所有相
似的題目全部寫一遍並且看完所有的top vote discussion(不管什麼語言)。因為很多時
候一個題目可以好幾種解法,不同解法只是代表不同的trade off。我自己認為google面
試官很愛考這方面的分析,所以這樣做剛好可以訓練自己思考不同的優缺點分析。
另外我認為參加weekly contest對於準備google非常有用。因為基本上google考的題目都
是新的題目(至少我面google這幾次全考我沒看過的題目),參加contest可以訓練自己在
時間之內如果遇到不會寫的題目該怎麼辦。我自己是從2020二月開始每周參加contest。
如果當周六因為各種原因沒有參加也至少會在隔周把四題都寫過並且看過discussion。
到了2021五月收到HR onsite面試邀請後,我跟HR約一個月後面試。
在這一個月中,我選擇以周為單位,複習我不熟的topic。畢竟經過第二階段,我自己很
清楚知道我的graph很強,可是sorting 和DP超級爛,所以我選擇去加強這些topic。
我逼自己在這個月每天寫至少5題(但因為是一邊上班一邊準備,所以很多時候會寫不到五
題,因為要重質不重量。5題只是當天目標)並且一定要搞懂每一題怎麼寫。周一到週五基
本上一下班就是開始寫題目到12點,週六週日也是從早上9點準備到晚上11點。所以在面
試當天我自己其實也感覺到我寫題狀況非常好,可能也是因為這樣我的onsite基本上面得
非常順利。
最後說說對於刷題數的想法。這邊先題共一下我當初面試完leetcode submission的
heatmap:
https://i.imgur.com/SdIi4AJ.png
我自己也看過2021群裡面一些人的heatmap,大部分都長得跟我差不多。
我自己覺得我們群裡幾個人並不是因為寫到了特定題數以上才有機會進Faang,而是當我
們都認真準備,題數自然就起來了。所以這邊建議大家在第二第三階段還是以重質不重量
為主。畢竟你自己對於data structure and algorithm熟不熟也只有你自己最清楚。
---
Mock Interview:
---
我從2020 12月開始就找了我們2021群的其中一個人,天天固定7點開始跟他
MOCK Interview。他的目標是Facebook(雖然最後去了tictok),所以我們每天會互相問對
方一題,我選facebook tag問他,他選google tag問我。然後一起討論作法。
我覺得Mock Interview在準備面試過程中非常重要。因為它還可以練到在壓力下寫題目的
穩定度。
-------
結語:
-------
其實自己回頭看這兩年準備過程也是滿煎熬的,畢竟看到自己的朋友們,戰友們一個一個
進大廠,而我連個面試機會都拿不太到(google第一次直接被取消,第二次因為沒有head
count,然後我除了google沒怎麼拿到其他fanng的面試)。但是拿到google offer之後回
頭看都覺得這些辛苦是值得的,畢竟是我的夢想公司。
要感謝的人太多了,但我最想感謝的其實是我自己。在這麼崩潰的一年多當中,不管我當
周工作在怎麼忙再怎麼累,我還是堅持周周參加contest。就算沒參加,隔一周也一定會
把contest得題目找時間寫過。
很多人會覺得寫了500+的題目很多很神,但如果你仔細想,如果你每天花個半小時到一小
時寫個兩題,一年就寫了365*2 = 730題了。如果你周周只打contest,這樣一年也有
4*52 = 208題。所以重點在於認真準備,而不是在於寫了多少題,因為認真準備了,題數
自然就起來了。
我運氣很好,在五月初的時候我還想說估計我沒有機會挑戰GOOGLE了,結果在五月中的時
候HR就來找我了。但我相信如果沒有我前面的持之以恆,我也沒辦法好好抓住這次機會。
最後我想說,其實我自己是個很懶惰的人。但既然我都可以持之以恆,我相信大家絕對可
以。祝大家都能進到自己的夢想公司。
--