聽說你最近在刷題- 軟體工程師的面試一定會遇到的資料結構及演算法關卡 (& 分享 LeetCode 折扣)& LeetCode Premium 抽獎啦(2021- 9 月更新)
-----------------------------
2021年 9 月更新:
從 8 月開始,收到許多剛到美國唸書的讀者來信請求幫忙內推 2022 年暑假的實習工作,如果你還不知道的話, 請查看我另外一篇文章來了解內推網路:最有效得到面試的方式- 內部推薦: 尋找內推資源 & 歹晚郎互助網絡 (2021 年 8 月更新)。軟體工程師的面試關卡很多都是資料結構及演算法, 所以大家在準備實習也都不免俗的要刷題一下。 我許久沒有看 LeetCode, 發現現在 LeetCode 的功能越來越多, 還有像是學習資源文章及 study plan 的功能,把大家要準備面試的各種需求都越來越在他們網站上一站搞定。 今天除了再次分享去年寫的文章(還有折扣碼), 還要大大感謝 LeetCode 願意提供 3 個 7 天 Premium 會員試用來給予讀者, 讓大家面試前可以使用如公司 tag 的功能來做複習。 此外感謝大家一直以來的支持, 我也自掏腰包提供購買 3 個 1 個月的 Premium 會員試用來加碼, 再請大家做以下動作參加抽獎歐!
✅ 按讚並留言你希望用 LeetCode 達到什麼目標 (轉職、實習面試、換工作,可以寫一寫細節像是目標公司、職位等), 或是你過去使用 LeetCode 的心得、或者是自己未來職業目標等等, 也可以是找朋友來一起練習。
✅ 公開分享此篇文章的話多一次被抽中的機會
獎項: 共 6 個名額,3 個 7 天 Premium 試用會隨機抽出, 3 個 1 個月的 Premium 試用則用留言內容來挑選, 希望抽出給很需要、或是很有創意的留言, 哈!
活動期間到加州時間下週四 9/9 晚上 9 點截止。會直接於文中留言通知中獎,祝大家學習愉快、找實習、換工作都順利!
--------------------------
2020 年 12 月原文:
歐, 要澄清一下我現在沒有在刷題 (我這樣講絕對不是怕很多同事會看到我的文章 XD), 說實在的, 我覺得大家好像太過度強調 “刷”題的刷, 好像刷油漆似的要來回刷很多遍。 我過往看過許多刷幾百題、每題做 2、3、4 次以上的人分享他們的經驗, 我很佩服他們投入的時間及毅力, 但我自知做不到, 有小孩後更是難以做到刷一遍。 我自己找軟體工程師的工作的經驗, 2015 年上完 Coding Bootcamp 到找到工作, 大概做了 60 題左右的 LeetCode 問題, 2016 年底找工作比較認真, 大概完成了 100 題左右。 今天這篇文章想要分享一下我的演算法準備方式, 如果你想要找如何刷題的方式,或是覺得無法刷幾百題很多遍的人, 歡迎往下閱讀。
2015 年上完 Coding Bootcamp 後, 我陸續有一些電話面試, 每天可能會有 1~3 個電話面試, 所以在準備面試上, 要研究公司, 並且依照職缺來做面試的複習, 因為我是面試前端相關的職缺, 所以也有一部分的精力在前端的資料複習。 關於資料結構及演算法 (Data Structures & Algorithms) 的練習,我大概維持一天練習 1-2 題的步調。 2016 年底的面試, 因為還要上班, 所以基本上只有晚上有時間, 可能一天只能練習 1 題, 假日有比較多時間才可以多做幾題。
看到問題的時候, 我會先確保我了解題目的意思, 真正在面試的時候, 通常第一步也是和面試官確認我們自我的理解和面試官要問的是否一致, 不要花了時間才發現一開始的理解及假設是錯誤的。 我通常會立刻寫下題目給予的 input 有什麼、格式是什麼, desired output 又是什麼。
確認好 input & output 後, 我會思考題目可以用什麼類型的資料結構或是演算法來解。 通常在面試的時候, 我會和面試官說明我可能會先就一個大概可行的方式來做解答, 如果他/她覺得沒有什麼問題的話, 我再做後續的優化。 在我開始有一些思路後, 我會先寫下 pseudo code, 就是先用英文來說明我的解法會是怎麼樣。 每個步驟和面試官確認都沒有問題後, 我才會正式寫 code 。
當然有些時候不論怎麼想都寫不出來, 如果是自己練習的時候,我大概在 15 分鐘後會開始看一些討論, 嘗試學習別人的思路, 但如果再花 10 分鐘還是解不出來的話, 才會參考別人的解法。 我看完別人的答案後, 還是會用自己的 code 再實現一次。 如果面試中卡住的話, 則是要儘快和面試官討論, 我會把我的理解, 可能的解法方式和面試官說, 同時也說明我的情況可能哪裏不是很確定, 讓面試官在適當的時候可以給予我提示。 一般來說, 公司都是希望有順利的面試經驗, 面試官也都願意在溝通正常下給予協助。
自己練習寫完之後, 我會再寫出解法的空間及時間複雜度 (Space & Time Complexity) , 通常面試也會詢問這個部分, 所以自己每個練習也要歸納一下。 如果我發現我的解法時間可能不是太好, 我會再嘗試看不同人的討論, 研究更優化的解法, 並再自己寫出不一樣的解法。 有些比較棘手的問題我可能會寫 2、3 個解法比較彼此的優缺點。
在之前準備面試的時候, 我有準備一本筆記本, 每次寫完問題之後, 我會用筆寫下我在哪一天寫了哪一個問題, 並且用很精簡的方式總結問題及解法。 隔天要做下一題之前, 我會先看一下前一天的問題, 嘗試回想我是否可以再次在頭腦中想出大致的解法。 如果還是不行的話, 再看我自己的總結並做上記號, 隔天會再做一次同樣的步驟,直到我可以順利複習出解題的邏輯思路。
如果有和公司面試, 不論是電話還是 onsite, 面試完後我會再檢查我遇到的題目是否和我過去做過的題目類似, 如果有的話, 是否我的思路在面試中是清晰及正確的, 如果沒有的話, 我是否有利用對的觀念來解答。 面試結束後, 會花時間在盤點及複習, 從面試中的題目和過往的練習做統整。
你可以看到我的練習方式不是很強調快, 因為我希望我做完問題可以有很深的理解, 所以花很多時間在做整理、複習確認, 即使當下沒有那麼理解, 隔天回想又想不出的話, 我會再複習一次, 再隔一天做新題前也會再確認。 複習及思考的次數多了,真正把題目所想要考的觀念融會貫通, 畢竟面試很難真的遇到原題, 重點是我們對於資料結構及演算法的理解, 及遇到難題如何面對的應對的思考過程。
條條大路通羅馬, 每個人面試準備的方式都不太一樣, 以上就是我的資料結構及演算法的準備方式, 之前寫找工作的系列文章好像沒有特別提這塊, 所以特別再寫出來分享。當然我不是大神每次面試都可以收割 5 到 10 個以上 offer, 所以就請你自己斟酌評估你的學習方法,畢竟我們都要找到對自己最能接受、且有效率的方式來準備面試 。
我從 2015 、2016 年準備面試的時候, 有許多練習演算法的網站, 但到了今日, 好像 LeetCode 和練習演算法關係就如同 Google 和搜尋一樣, 大部分我聽到的準備面試的人都用 LeetCode 來做練習了! 剛好最近認識一位在 LeetCode 工作的朋友牽線, LeetCode 特別優惠讀者, 只要使用這個連結購買 Premium, 就能有 15% 優惠 (幾乎和一年一度的感恩節特價差不多了!)。
我目前聽到朋友準備面試基本上都會購買 LeetCode 的 Premium, Premium 最大的好處就是可以看到問題和公司的標註, 拿過去拒絕我 2 次的 Google 為例 (XD), LeetCode 就有 925 道題目被大家回報有在 Google 面試中看到 (2021 年已經變成 1014 道了! @@), 當你正要 phone or onsite interview 的時候, 可以聚焦你要面試的公司練習、提高效率的話還是可以提高面試的表現的。 Premium 還有答題評斷比較快、LeetCode 官方解答、及依據公司有 Mock interviews 等其他功能, 但主要大家好像都還是為了 company tag 的功能而付費, (2021 年 9 月更新, 最近又有如文章、影片的學習資源,還有像是 Study Plan 的功能, 看起來 LeetCode 要往大家學習、準備、一站式的服務來黏住使用者了!)
相信以大家拿到 offer 後的加薪, 會覺得這是個很好的投資!(什麼, 你說不一定會加薪, 那請你再閱讀一下我的談判文章來和公司談判加薪 "面試中談到錢怎麼辦? 問到你期望薪水如何接招?" 及"面試得到 Offer 薪水如何談? 三明治溝通法及最後簽約前的談判招式") 。
我當初有想說要直播訪問在 LeetCode 的朋友, 探討 LeetCode 最近幾年的快速發展、及如何幫助軟體工程師及公司行號, 可惜目前朋友還沒有意願, 如果大家有興趣的話, 請在文章留言, 讓她可以看到大家的意願加強她的動力和我們分享 (群眾多數暴力啊!)。
附上過去我寫的找工作系列文章:
1. 程式語言- 到底學哪個好?我想進Google,我沒學OOO,他們會接受我XXX語言背景嘛?
2. 簡介美國軟體工程師面試流程
3. 等待機緣- 我要如何被人資或獵人頭發現? 我要如何脫穎而出? LinkedIn重要嘛?
4. 主動出擊- 我要找工作了,現在美國都用什麼找工作?哪個網站平台能讓我有較多面試機會?
5. 軟體工程師面試準備- 面試要練習什麼? 找工作和練習的時間要如何平衡拿捏?
6. 被錄取了- 我該注意什麼,我可以談判要求多一點薪水、股票或假期嘛?
7. 矽谷找工作之常見問題 FAQ
8. 面試技巧及心得,如何有條理的說服面試官?
9. 英文履歷怎麼寫? 美國科技公司注重什麼?
10. 如何到美國科技公司工作?
11. 最有效得到面試的方式- 內部推薦: 尋找內推資源 & 歹晚郎互助網絡
12. 面試中談到錢怎麼辦? 問到你期望薪水如何接招?
13. 面試得到 Offer 薪水如何談? 三明治溝通法及最後簽約前的談判招式
2021 年, 如果你要找工作的話, 祝你轉換順利, 拿到許多理想的 offers! 如果你有什麼準備的技巧及心得, 也歡迎留言分享。
部落格原文:
https://bit.ly/3zNrluU
同時也有3部Youtube影片,追蹤數超過2萬的網紅Untyped 對啊我是工程師,也在其Youtube影片中提到,LeetCode是所有軟體工程師找實習找工作都必用的平台,雖然大部分功能都是免費的,但天下沒有白吃的午餐,讓人好奇付費版 LeetCode Premium 到底有沒有用?今天讓使用過 LeetCode Premium 準備並通過 Google軟體工程師面試的我來分享一下我的使用感想! 影片中會告訴你...
「google面試leetcode」的推薦目錄:
- 關於google面試leetcode 在 半路出家軟體工程師在矽谷 Facebook 的精選貼文
- 關於google面試leetcode 在 Untyped 對啊我是工程師 Facebook 的最佳貼文
- 關於google面試leetcode 在 軟體開發學習資訊分享 Facebook 的最佳解答
- 關於google面試leetcode 在 Untyped 對啊我是工程師 Youtube 的最讚貼文
- 關於google面試leetcode 在 李黎哈哈LilyHaha Youtube 的精選貼文
- 關於google面試leetcode 在 矽谷輕鬆談 Just Kidding Tech Youtube 的最佳貼文
- 關於google面試leetcode 在 [心得] Google TW SWE 面試心得(下) - 看板Soft_Job 的評價
- 關於google面試leetcode 在 我拿到Google Offer的刷題方法,完全不藏私大公開- 科技業板 的評價
- 關於google面試leetcode 在 【leetcode 797】連google都考的面試題?All Paths ... - YouTube 的評價
- 關於google面試leetcode 在 Google谷歌面試考題| Python - leetcode 中文 - YouTube 的評價
- 關於google面試leetcode 在 Google谷歌面試考題| Leetcode 359 - Logger Rate Limiter 的評價
- 關於google面試leetcode 在 Google 面试题| 找二叉树最底层最左边的节点.md 的評價
- 關於google面試leetcode 在 [心得][美國] 幾年的面試者+面試官經驗 的評價
- 關於google面試leetcode 在 [心得] Google TW SWE 面試心得(下)- 看板Tech_Job 的評價
- 關於google面試leetcode 在 [心得] 代po 北美Google general SWE面試心得 的評價
- 關於google面試leetcode 在 LeetCode 和台灣IC 設計公司軟體職缺常見題目 的評價
- 關於google面試leetcode 在 [心得] Google TW SWE 面試心得分享- 看板Soft_Job - PTT網頁版 的評價
- 關於google面試leetcode 在 Google、 Facebook 面試考什麼? 流程與攻略分享,附結構化 ... 的評價
- 關於google面試leetcode 在 [心得] Google面試& offer請益- Tech_Job 科技 的評價
- 關於google面試leetcode 在 美國軟體工程師實習申請與面試— Google, Facebook, Yahoo ... 的評價
google面試leetcode 在 Untyped 對啊我是工程師 Facebook 的最佳貼文
給最近正在找軟體工程師工作刷題的你...
加油加油
https://youtu.be/qYSOhTBmQLg
google面試leetcode 在 軟體開發學習資訊分享 Facebook 的最佳解答
NT 490 特價中
講師Bit Punch 目前於 Google 擔任軟體工程師
在本課程中,您將得到詳細,逐步解釋的 50 個精選 LeetCode 問題,在其中你將瞭解程式設計面試中使用的最受歡迎的技術和問題
https://softnshare.com/leetcode-in-python-50-algorithms-coding-interview-questions/
google面試leetcode 在 Untyped 對啊我是工程師 Youtube 的最讚貼文
LeetCode是所有軟體工程師找實習找工作都必用的平台,雖然大部分功能都是免費的,但天下沒有白吃的午餐,讓人好奇付費版 LeetCode Premium 到底有沒有用?今天讓使用過 LeetCode Premium 準備並通過 Google軟體工程師面試的我來分享一下我的使用感想!
影片中會告訴你如何免費拿到各種付費功能~
然後還有我到底刷了幾題通過了Google面試哈哈!
這集會聊到...
💬 Overview 💬
💙 LeetCode Premium功能簡介 1:25
💙 我覺得好用的付費版功能 1:50
💙 我覺得沒用的付費版功能 4:00
💙 如何免費得到類似的付費功能 1:50 3:00
💙 結論:LeetCode Premium 到底值不值得?5:58
💙 誰適合買 LeetCode Premium?6:38
💙 我刷了多少題通過 Google 面試 7:57
📢 📣 📢 本頻道影片內容有輸出成 podcast 📢 📣 📢
可以在各大podcast平台搜尋「Untyped 對啊我是工程師」
請大家多多支持呀!!🙏🏻💁🏻♀️
#LeetCodePremium值得嗎 #力扣刷題進階功能免費用
一定要看到影片最後面並且在「YouTube影片下方」按讚留言訂閱分享唷!
【愛屋及烏】
YouTube 👉 https://www.youtube.com/c/Untyped對啊我是工程師
Podcast 👉 https://open.spotify.com/show/3L5GRMXmq1MRsliQt43oi2?si=3zgvfHlETeuGfp9rIvwTdw
Facebook 臉書粉專 👉 https://www.facebook.com/untyped/
Instagram 👉 https://www.instagram.com/untypedcoding/
合作邀約 👉 untypedcoding@gmail.com
-
Untyped 對啊我是工程師 - There are so many data types in the world of computer science, so are the people who write the code. We aim to UNTYPE the stereotype of engineers and of how coding is only for a certain type of people.
凱心琳: 一個喜歡電腦科學邏輯推理,在科技圈努力為性別平等奮鬥的工程師。
google面試leetcode 在 李黎哈哈LilyHaha Youtube 的精選貼文
🟢阿永老師的第一堂德語課:
https://hahow.in/cr/deutschmitbrezel
[德國工作系列]
找工作這條路總是孤單的,而且在德國或歐洲找工作,身為一個外國人,總是比較困難的,除了語言這個層面,更現實的就是簽證與身份上的考量,阿永老師在碩士畢業之後,經歷的八個月的時間,才找到目前這一份軟體工程師的工作,不管你是否在歐洲找工作,我覺得他裡頭分享的關於找工作的心態,都很適合剛畢業的新鮮人。至於德國工程師的面試如何準備,或是履歷上有什麼要點,阿永老師都會在影片當中提到喔!如果大家有興趣的話就繼續看下去吧~
▷▶︎ 幫助你更快的找到問題
-------------------------
00:29 第一份工作找多久?
00:47 在歐洲找工作有什麼要點嗎?
02:21 找工作的地點考量?
03:11 面試的形式還有面試的問題?
05:24 用哪些資源準備面試?
06:40 如果一直被拒絕,要如何調適心情?
08:42 如何跟人資談薪水?
▷▶︎ More LILYHAHA
----------------------
▪︎ Instagram: https://www.instagram.com/lily.hahahahana/
▪︎ Email: [email protected]
(更多留學諮詢、合作,請來信)
▷▶︎ About LILYHAHA
---------------------
留學不在只是夢想,過去在準備德國留學的路上,資源總是相對英美少的很多,因此希望透過YouTube這個平台,來分享更多在歐洲的留學&工作經驗給大家,想到德國工作?想到德國念碩士?但卻沒有什麼方向,都可以跟我聊聊喔!
▷▶︎ 留學德國申請祕訣-免費資源
----------------------------------------
▪︎ 底下留言告訴我你的eamil,即可領取申請祕訣喔!
▪︎ 私訊預約免費留學諮詢30分鐘
▷▶︎ 這些影片會讓你對德國有更多了解
-------------------------------------
⇢德國留學&生活
▪︎ 德國亞洲超市:https://youtu.be/B2xAXR5in8E
▪︎ 德國一天需要多少德文:https://youtu.be/qsmiffED25Y
▪︎ 德國外食花費:https://youtu.be/DDH8coykU3A
▪︎ 德國大學排名:https://youtu.be/9XWqweyKowo
⇢德國留學訪談
▪︎ 高中申請學士(慕尼黑大學)https://youtu.be/rL3eG-X3NfQ
▪︎ 德國碩士獎學金(慕尼黑工大)https://youtu.be/HvS2e6WjZzo
▪︎ 瑞士博士申請(蘇黎世聯邦理工)https://youtu.be/nT0HYE1Ctn0
▪︎ 瑞士碩士申請(洛桑聯邦理工)https://youtu.be/ATmVnNDhHTE
▪︎ 德國科大碩士(Hochschule Esslingen) https://youtu.be/gdIAPx4gmbE
⇢德國工作&實習
▪︎ 德國互惠生:https://youtu.be/x2Zysm7-0yk
▪︎ 德國畢業賺多少:https://youtu.be/FzBh5MRSuO4
▪︎ 德國實習&打工經驗:https://youtu.be/81CnfYIXJMA
▪︎ 德國軟體工程師:https://youtu.be/mY1K17nUzGU
▪︎ 瑞士Google工程師:https://youtu.be/7ly1ZCUldss
▷▶︎ key words 關鍵字
----------------------
#李黎哈哈訪談系列
李黎哈哈 李黎哈哈訪談系列 德國留學 歐洲留學 德國工作 德國實習 德國生活 歐洲生活 德國簽證 留學申請 留學心得
🎥在使用的影片拍攝剪輯器材
相機 sony zv1
https://amzn.to/2C8Iab1
攝影 i Phone 7
https://amzn.to/3hc1sMw
腳架 JOBE
https://amzn.to/3dPME3X
麥克風 RODE
https://amzn.to/3f8ZL0t
剪輯 FCPX
https://amzn.to/3dQr6V8
字幕 Arctime
------------------------------------------------------------------------------------
google面試leetcode 在 矽谷輕鬆談 Just Kidding Tech Youtube 的最佳貼文
這集是個 Bonus Episode,由一位特別來賓擔任主持人訪問 Kenji 在矽谷的求職歷程,我們會談到軟體工程師的面試流程、用不同簽證在美國工作的方式、求職該有的良好心態、面試 Google 和 Facebook 的實戰分享以及在 Square 擔任面試官以後發現不同世界的經驗談。
這集的主持人有開一門從 LeetCode 學演算法的線上課程,有興趣的人可以參考!
https://hiskio.com/courses/319?promo_code=7GWLM13
---
#Podcast傳送門
Apple Podcasts https://apple.co/2wizvzO
Spotify https://spoti.fi/3aeP9KY
Google Podcasts https://bit.ly/2vureZq
其他平台 https://anchor.fm/jktech
google面試leetcode 在 我拿到Google Offer的刷題方法,完全不藏私大公開- 科技業板 的推薦與評價
... 拿到Google New Grad Offer的刷題方式,以及找到的資源~想要知道面試 ... 蠻推薦大家可以訂閱LeetCode Premium,我覺得照公司Tag 刷,蠻有效率的 ... ... <看更多>
google面試leetcode 在 【leetcode 797】連google都考的面試題?All Paths ... - YouTube 的推薦與評價
【 leetcode 797】連 google 都考的 面試 題?All Paths From Source to Targe(中文語音)(CC字幕). 45 views · 8 months ago ...more ... ... <看更多>
google面試leetcode 在 [心得] Google TW SWE 面試心得(下) - 看板Soft_Job 的推薦與評價
(文長警告)
上一篇提到 2019 年底聯繫上 HR 開始全職刷題六個月,
到了 2020 年中面試完收到拒絕信,灰心了好一陣子。
但也沒辦法,還是只能乖乖回去公司上班。
這次回公司上班其實也獲得一個不錯的契機,
因為加入了有兩個印度人在內的 scrum team,
所以每天都得使用英文討論進度,英文聽說能力大幅提升,
發現自己竟然可以聽懂印度腔英文時真的有點驚喜 lol
在工作閒暇之餘,自己一直保持著一天寫個一兩題的習慣,
大概到 2020 9月開始,Leetcode 開始出現 30 days challenge,
用意是希望你能夠每天完成它指定的題目,完成會有獎勵。
也是從這個契機開始,找一些朋友組了一個解題讀書會。
這個讀書會其實後來對我的表達訓練幫助非常大,
我們的跑法是這樣:
1. 先看當天題目難度設定時間:
easy 10 分鐘,medium 20 分鐘, hard 30 分鐘
開始計時之後才開始看題目。
2. 只能按 submit,不準按 run code。
3. 在時間內 AC 的人留言自己作法的時/空複雜度,跟 WA 次數。
4. 時間到直接停手,沒 AC 的人輪流說自己的想法,
再換有 AC 的人照著複雜度跟 WA 次數排序,較差的人開始分享自己的 code,
要徹頭徹尾的說出自己的策略,code 每一行的用途,跟有沒有機會再改善。
5. 最後來看解答跟討論區,討論區主要看 lee215 跟 StefanPochmann 兩位神仙,
不過這兩位大神的 code 有時候會太過簡化,
不建議面試時把 code 寫的跟他們一樣,
但他們的邏輯跟作法非常值得讓人學習,而且語言特性用得淋漓盡致。
另外也推 DBabichev 和 awice,他們的 code 說明會比較詳盡,
看起來會比較容易消化,滿建議有看到這些人的文章都可以打開看看。
我們一開始原本只打算把這個 30 days challenge 寫完就好,
結果 Leetcode 官方後來直接把這個變成 monthly challenge event,
一直到現在都還有,所以讀書會就一直跑到現在都還在跑 XD
也差不多這個時間點開始,每週準時參加 Leetcode weekly contest。
之後也有參加 Codeforces, KickStart, CodeJam,
之中 CF 的定位比較偏向競技用途,覺得對於學習觀念的成效有限,漸漸就沒再參加。
變成每週 LC weekly/bi-weekly,每月 KS,報名 2021 CodeJam,這樣的模式。
但其實 KS 跟 CodeJam 題目有點太閱讀測驗,但畢竟是 Google 辦的就加減參加。
參加 contest 主要用途是為了訓練抗壓性跟時間掌握能力,
讓你臨場感受在有限的時間內完成給你的 coding 任務,
也是一個量化自己成長幅度的方式。
LC contest 要在一個半小時內寫完 1e2m1h,
一開始我通常只能寫完 1e1m,會在寫第二個 medium 題目超時。
而到面試前,已經幾乎可以 easy 從看題目到 AC 穩定在 5 分鐘內完成。
1e2m 幾乎穩定可以在 40 分鐘內完成,剩下的 hard 就隨緣慢慢寫。
時間到之後我會把自己的解法 po 在討論區上,
順便可以寫下自己的策略跟估計時/空複雜度。
這一步真的滿重要的,有時候你以為寫了一個很厲害的解法,
結果 most votes 的解法硬是比你強一個等級(通常都是 lee215 的解 lol)
而且有時候看到自己的解法是 most votes 第一名時真的會很有成就感。
大概過這著這樣的平日上班開讀書會,假日打比賽的生活一段時間後,
就決定 2021 年初開始再來請一次六個月的育嬰留停好好準備。
有人可能會問是哪家公司這麼好可以一直請,
其實法規規定一個新生兒在三歲前,總計可以請兩年的留停,
但只有前六個月有勞保局補助,剩下的就真的是吃老本在撐了。
(如果真的想知道是哪間公司,是一間曾經差點買下 Google 的老牌網路公司 XD)
其實這次請留停前也有跟主管和大老闆說清楚,這次留停應該是不會再復職了。
以一個破釜沈舟的心態來抓住未來可能的機會。
這次因為已經累積超過 600 題,而且上次面試發現自己有些觀念掌握的不太好,
所以改以主題式複習方式,把所有寫過的題目分類,
用一個 Notion page 筆記下來,把自己的解法都整理貼上去,
同一個主題的內容與解題手段都弄通弄熟後,才往下一個主題前進。
這邊要再強調一次,千萬不要執著於累積的題數,
刷題只是為了幫助你掌握觀念,掌握觀念與解題手段才應該是真正的目標。
很推薦 Leetcode 的 learning cards: https://leetcode.com/explore/learn/
如果是從頭準備起可以從這邊下手,
搭配 Cracking The Coding Interview 應該可以掌握七成的內容。
剩下三成內容可能就要靠自己歸納統整出來,像是 DSU 跟 BIT 就要靠自己去了解。
另外關於 system design,其實我沒有額外分配太多時間在上面,
一個原因是因為網路上搜集到的消息是 system design 主要是拿來分辨 L4/L5 的指標,
L5 以上(含 L5)是一定會問,但如果是面 L4 以下(含L4),
比較會問到的是 OO design 或是 system design related 的問題。
而且我也有問了幾個挑戰成功 L4 的朋友,
有些是完全沒被考到 sd,有些是 sd 答很差但最後還是 qualified。
所以我最後有點賭的只從這裡面挑一些內容配飯加減看:
- https://github.com/checkcheckzz/system-design-interview
- https://github.com/donnemartin/system-design-primer
- https://www.interviewbit.com/courses/system-design/
就這樣一直準備到大約 2021 二月左右,收到了「Hello from Google」為標題的來信,
約了簡單的 chat 後就直接說可以再幫我安排 phone interview,
這次投的缺是 General Software Engineer,
心裡想著這應該是近期我自己設定的最後一次機會了。
(其實我有問過 HR,現在似乎?沒有三振條款,
但會希望你每次的 feedback 都比上一次更強,不然可能會拉長 cd 時間)
於是很保守的約了五月再開始整個流程,也給自己更多的時間消化吸收整理的內容。
然後大約在四月中左右,開始請朋友幫忙 mock interview,
個人認為 mock interview 絕對是鄰近面試前最需要做的一件事。
我的做法是把朋友真的當主考官,跟他約時間開 google meet 跟 doc,
開始後不嘻嘻哈哈,真的讓自己親臨現場。
他會從 Leetcoce 中隨機選 Google tagged 1e1m 共兩題,
然後請他把 constraints 跟一些他認為我應該要問他的題目敘述拿掉,
在「最多只給一個必要的 test case」的情況下把題目貼在 gdoc 上給我,
然後我該做的事情就是:
1. 詢問可能的 constraints 與某些 edge cases
2. 列出至少三種不同類型的 test cases
3. 先「說」出自己直覺的暴力解,再想想看可以從哪個觀念解,think aloud
4. 確定得到可以寫 code 的訊號後開始動手寫
5. 盡量對自己每一個打下的字元都充分考慮,不修修改改
6. 邊 code 邊說這樣寫的用意
7. dry run 自己列的 test cases
8. 給他明確的「已完成」訊號
9. 以上儘量掌握在 easy 10 分鐘和 medium 20 分鐘的限制內
這其實也是真正面試時最重要的流程,大量 mock interview 可以讓自己越做越好。
我跟我朋友那時間每天都會進行一場這樣的 mock,
超級感謝他,也有說好以後他有需要我也會陪著他這樣做 QQ
於是終於到了 phone interview 的那天,是中文對談的場次。
遇到一個很棒的面試官,跟他溝通都很輕鬆,真的像是在跟同事一起寫 code 一樣。
一開始先來一題 easy,是某個知名演算法的子題,
直接列 test cases 後口述做法後立刻寫完 code,
他還問我說是不是常在打比賽 XD
第二題是一題 medium 偏 hard,聽完題目後列了 test cases,
口述了心中想到的方法後,直接被告知那我們來解第三題好了,他相信我寫得出來 XD
第三題是一題 hard,一樣列 test cases 後給直觀解,
然後再進一步思考要怎麼做更好,這題我想了比較久一點,
幸好最後有想到之前在某個 hard 的題目中有用過的手法,順利解開。
然後時間也差不多,閒聊了一下就這樣愉快的結束。
這一場我自己給的評價是 positive,
果然幾天後就收到進入 onsite 的通知。
這次的 onsite 安排了四場 ds/algo 跟一場 G&L,
沒有 sd 的場次,因為 HR 說我去年有表示想換,所以今年就換了。
一樣分成兩天,一天三場 ds/algo,另一天一場 ds/algo 和一場 G&L。
onsite 第一場是全英文對談,
這場一樣以一個 easy 暖身開場,
一樣秒解後,面試官還問: "Are you sure about your solution?"
很緊張地再 dry run 兩次都沒問題,
結果他笑著說: "Just want to check you have enough confidence with your code."
然後表示這確實是最佳解,也沒有可以再最佳化的地方了,做得好。
然後就進到下一題 lol
第二題他一開始有說這會是一個題組,有點難把這個題目歸類難度,
是個比較偏向 open-ended question 的問題。
大致上就是寫個他要求的東西,他會再問些進一步的問題,
你再思考改善方式這樣。
這個題組其實不太像是傳統的 ds/algo 問題,
個人是把它歸類為 L4 以下可能會面對到的 sd related 問題吧。
時間差不多時也就稍微閒聊一下,他還說如果我有機會進去遇到他可以跟他說聲嗨 XD
也是滿愉快的結束這一場,個人自我評價是 positive。
onsite 第二場也是全英文對談,是個撲克臉面試官,
一樣的 easy warm up 秒解,追問了一個 medium 等級的 follow-up
一樣的照流程寫完 code 後,再被問了一個不同的 medium 題目,
這個 medium 我給了兩種方向的解法,分別會對 time/space 有 trade off,
沒有寫 code 就結束這回合,因為是撲克臉所以也感覺不出 feedback,
但是因為最後一題在思考解法時中間有點差錯,是被引導糾正回來的,
所以自己給的評價是 neutral。
onsite 第三場是中文對談,是個口氣稍微嚴厲點的面試官,
只被問了一題,原本以為一樣是 warm up,結果提出解法後的正確性證明直接卡關,
被面試官直接說:「沒法證明正確性之前建議不要這麼做。」
只好退回來以直觀想法重新開始。
後來實在想不到直觀想法以外的解法,卡了一陣子面試官就主動給 hint,
好在拿到 hint 後很快的給了一個解法,面試官再在這個解法上問了一些優化方向,
就結束了這場面試。
想說慘了完蛋,跟前面兩場的手感完全不一樣,自己給了評價是 negative。
事後去網路上找有沒有類似這題的題目,結果原來 Leetcode 有一模一樣的題目,
難度等級是標為 hard。
onsite 第四場也是中文對談,是個笑笑撲克臉的面試官,
笑笑撲克臉的意思就是他從頭到尾都是笑臉,但是會笑得讓你有點緊張。
這次一開始就一樣是 easy warm up 秒解,被面試官問說是不是有在當助教 XD
然後他說原本他打算再問兩題,看這樣我直接回答第二題就好。
結果這題我一下子就看出是什麼類型的題目,但子結構一直抓不準卡超久。
一開始他說沒關係別緊張時間還很多,試了一陣子後我還懷疑我自己是不是走錯方向。
於是他就給了 hint 說方向是對的,要我繼續,
好在他給完 hint 後沒多就終於抓到關鍵點提出解法,
寫下 code 花了點時間處理 edge case,整個完成時超時大概五分鐘。
滿感謝這位面試官願意多給我這五分鐘,讓我最後能寫完完整的 code。
這場自我評價 neutral。
接著最後一場是 G&L,這場對 Google 來說好像是一個門檻值,
feedback 只有 pass/no pass,似乎不會拿來打分數,
所以我大概用 STAR pattern,參考這裡:https://zhuanlan.zhihu.com/p/40915843
歸納了幾個方向的回答就上場了。
這一場題目大概分為「你以前的經驗」與「假設性問題」,
只要照著 STAR pattern 應該都算滿好回答的。
至此終於完成所有 onsite interviews,
隔了一個禮拜 HR 週三告知會送 HC,然後很罩的幫我塞進週五的 HC session,
當天下午就知道過 HC 了,當下真的抱著老婆小孩一起歡呼 QQ
接著就是 team match,跟談薪水,team match 之前我有在板上發問,
一些前輩給的建議滿好的我就不再多說了。
薪水其實我沒什麼談,只能說有些 Youtuber 真的滿厲害的 XD
現在就是等著收到正式 offer letter 到來的那天。
回首過去的兩年半真的是一場奇妙旅程,
請了兩次六個月的育嬰留停在前公司應該也是前無古人吧!
好在最後的結果是不錯的,才能以一個倖存者的角度分享這些事蹟,
希望我的例子也能給一些還沒上岸的板友加油打氣,
big G 失敗好幾次真的是正常的,尤其在努力了之後卻沒有好結果的當下真的會很沮喪,
但只要持之以恆,總有一天可以看到那出口的光芒 :)
最後想再分享的是,
面試前我自己有許願,如果上了之後要來分享我寫過題目的所有解答,
目前正在慢慢施工中,再請期待~
最後的最後,雖然文中一直強調刷題的題數不是重點,
但還是任性地想曬一下最後完成的題數,證明我的努力。
Cheers!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.43.0.15 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1625903945.A.52F.html
是
抱歉我上週五交棒出去了 orz
FB 其實有 Leetcode Taiwan 社團可以交流,上面應該滿好組讀書會的。
XD
欸靠完全忘了拍寫 lol
最主要的點是 Python 可以讓你省下更多 coding 的時間。
我在的讀書會也有人寫 Java,但明明一樣的解法寫下來,Java 的體積就是要兩倍以上。
C++ code 比較有機會跟上 Python code 的體積,
但是 Python 語法又提供了強大的 safty 保證跟語法糖。
光是處理大數這件事,
我可以直接用「口說」這個地方可能會有大數要考慮,但 py 會幫我做掉,
如果面試官要求你真的寫 code 處理才真的需要寫下來。
但 C++ 就是你真的要在 code 裡面處理 overflow,
不能只用「口說」帶過,這個就差很多。
短短 45 分鐘的面試,光是思考解法可能就佔了很大一部分,留給 coding 的時間不多,
要寫下的 code 又要短又要乾淨整潔,這時候 py 的優勢就可以展現出來了。
好 py,不寫嗎 XD
不過有些職位 JD 限制一定要用 C/C++ 面試啦,所以還是看情況才能比較,
不能一概而論就是。
我記得 Quora 上也有人有類似的疑問,是不是每場都要 ace 才能進 Google。
答案是每個人不可能每天都在最佳狀況,所以一場表現不好是可以被接受的。
之前也忘記在哪看到有人提到,與其收到兩個 3.1 分的評價,
收到一個 3.6 分跟一個 2.6 分會是更好的訊號。
(更正一下,是 3.6, 3.1, 3.1, 2.6 會比全部 3.1 還要好,不能只看兩場)
其實我 code jam 只參加了 qualification round 而已,接下來就沒參加了。
題目印象中都有寫完,但不是全部綠勾都有拿到就是。
phone + onsite 共五場自己的評價是 2 positvie 2 neutral 1 negative,
只感覺自己在 bar 附近的樣子而已 orz
感覺是位常駐 HC 的前輩 XD 感謝補充!
其實我 hard 真的都隨緣打,有時候寫一寫被叫去弄小孩 lol
當初主要目標是想讓自己穩定評估 1e2m 的時間。
大概差十來分上兩千的樣子,應該很多人分數比我好。
原來如此,感謝補充!
話說我找到我是在哪裡看到這句話的了,
是在 cracking the coding interview 內寫的(6th, page 22):
To extend an offer, the HC wants to see at least one interviewer who is
an "enthusiastic endorser." In other words, a packet with scores of
3.6, 3.1, 3.1 and 2.6 is better than all 3.1s.
我猜應該最多就容許一場炸掉啦,但其他都要 above hiring bar 來顯示你足夠穩定,
而且要有一個 3.6 分來擁護你才是好的,並且要全部都看,不能只看兩場互補。
※ 編輯: wheels (118.161.76.160 臺灣), 07/23/2021 15:54:50
... <看更多>