作者wulouise (在線上!=在電腦前)
標題軟體職缺準備心得
時間2022-07-15 16:25:31
前面有我拿到offer的心得文,可自己A我的文章
# 背景
台大機械畢業 最高學歷碩士
現職半導體設備外商軟體開發
YOE 9
# Preface
這篇文章假設基礎為平常空閒時間不多,但是有辦法抽出時間練習的人
# 可不可以不要刷Leet code
可以,只要你有辦法專精在某個領域,比如linux kernel mail loop內大家都認識你
如果只是一般人,想進比較大的公司刷題只是基本,你也可以找不考刷題的
就我所知Canonical好像不考Leetcode,不過在opensource領域的經驗會被考慮
# How to start
面試不是為了單純高薪資,而是找到適合的公司與適合你的職涯發展
所以規畫你的職涯發展,最終目標是讓你的能力與會公司的發展方向匹配
可以先看暢銷書原子習慣,想想以下問題
1. 自己想成為什麼人
2. 這種人每天做甚麼? 能在open source有貢獻或逛stackoverflow回答問題?
3. 選擇一個最小目標,足夠小到讓即使在你狀況最壞的情況下也能達成
4. 如果昨天沒做到也沒關係,今天要做到,不要*明天再做*
以我自己舉例
1. 想在技術上專精,要是能專精C++在最佳化領域上更好
2. 每日: Leetcode撰寫時以效能為目標,了解那些技巧可以幫助你提高運算效率
3. ”no raw loop” - Sean Parent. (這只是個人信仰,不是必要)
盡量用STL解決問題,可以參考
https://www.fluentcpp.com/getthemap/
效能上如何避免cache miss, 甚麼時候vector會比map快...etc
## Optimization
最佳化最重要的是profile,學太多最佳化方法但是到處都用不是好事
最佳化是拿彈性去交換來的,所以只需要用在bottleneck,非必要不使用
對這個題目有興趣的可以找找Chandler Carruth的演講(大部分都是Cppcon)
[Going Nowhere Faster]
https://www.youtube.com/watch?v=2EWejmkKlxs
[There are no zero cost abstractions]
https://youtu.be/rHIkrotSwcc
# How to write resume
建議看這篇文章,是免費的,它其他的面試建議也不錯
https://www.techinterviewhandbook.org/resume/
重點:不管你用google doc/word,不要用 *表格* 不然ATS parsing容易出問題
在2020求職的時候用的resume有表格,拿到的面試少很多(我就廢..)
不過今年大缺人也是一個因素
# Linkedin
絕對要經營自己的linkedin, 至少大致上要跟CV相同或更詳細
Google HR是從Linkedin上找到我的,其實我不確定自己投會不會有人理XD
可以找一些網站幫你review profile 像是
https://resumeworded.com/score
他可以幫你評分,很多細節要花錢解鎖,即使光看免費的部分也可學到不少
比如我現在才知道Linkedin headline其實可以放202 chars…
可以把很多技能相關的直接放上去,搜尋可見度會高很多
像是Software developer | C++, GTest, GMock, Multithreading …etc
# Cracking the Coding Interview
非常建議買中文版的看過前面的部分
中文書名: 提升程式設計師的面試力
英文看很快你也可以買英文的,他的翻譯還算可理解
他會告訴你面試時應該要關注的重點,以及解題的技巧與方向
# Leetcoding
## Grind 75
我發現ptt沒什麼人提到 Grind 75,我覺得他比blind 75更有用
一共有有169題
https://www.techinterviewhandbook.org/grind75
就是Blind 75的作者製作的建議的列表,給定每周想花的時間,照順序練習很方便
他給的順序大約是一個主題的特定方向2~3題,然後切換主題
適合原本就有基礎的人抓回感覺,或是沒太多時間刷的情況下抓對基礎方向
自己是設定14hr/week來寫,後來有空就把所有medium都寫一寫
hard看看挑幾題來寫,最後寫了差不多160題,然後每天寫個leetcode daily抓手感
我都是用C++,目標還是以C++為主所以沒考慮用其他語言寫
如果你日常不是寫C++,建議以自己熟悉的語言寫
如果你平常用的語言寫起來不方便(對,我就是說C++) 那我一率推薦Python
像是用C/C++的人,其實建議刷題還是用python最快,因為實作最方便
因為時間不太多,題目看完覺得自己想的不是optimal就看hint
十分鐘想不到optimal就看討論/解答,八成的情況還是跪在Lee’s code前面
目標是未來的題目可以抓對方向
有些題型寫過一兩次就會有感覺,像是permutation在很多情況下可以用上
如果有Google HR給的大補帖,也建議看過一遍(appendix有附)
# Mock interview
自己沒做,只有在寫leetcode的時候用英文自言自語,果然練習不足在Google這吃鱉
如果要找mock interview,建議先找專業的把方向叫正好再來找免費的
在Cracking the coding interview一書內其實已經涵蓋87%的要點
因為我拿到Google Feedback了,順便把一些要點列在這
- 詢問邊界條件與澄清問題
- 列出多種實作並討論其trade off (加分,但是如果強者都加分那就是must)
- 討論Time complexity & Space complexity
- 題目一定要做完 (trivial impl可以問面試官可否跳過,要盡快掌握哪邊是重要實作)
- 遇到Bug可以不靠提示自己找到
個人理解: 不靠提示是指: 面試官說_有問題_你就能自己找到答案
這是我個人最弱項
- 確保題目內的所有資訊你都有用到 (這個很重要,我面試時有漏掉一點)
- 實作不要處理得太複雜,才有機會寫完 (這個應該需要大量練習或是天分XD)
# System Design
Google L4/L5 Loop才會面
我沒練習...Design Pattern只記得自己常用的,上次想講SOLID連這個字都忘記XD
最常推薦的資源就是Grokking the System Design
Leetcode現在有System Design特價中$60,有買整年會員更便宜只要$30
沒買不確定內容有甚麼,不過影片是印度腔,最差的情況還可以當印度腔聽力練習
# 英文
現在就在外商,不過面對的人英文不是母語,兩邊爛英文互聊其實還是有幫助
很現實的是,要面外商,至少要敢說,如果別人聽不懂,就練到別人聽得懂
語言沒有硬指標,但是沒有達到基礎門檻就是沒辦法過
這邊沒辦法給太多建議,我自己是會開車的時候聽podcast
推薦幾個:
1. Algorithm + Data Structure = Programming (ADSP)
兩個Nvidia工作的 C++ commitee成員主持
以C++ algorithm為主軸的podcast,有時候夾雜一點APL,一回30~40min
Apple, audible, spotify都有,每周都有更新
2. Programming Throwdown
介紹各種程式語言或framework,如果你想要多了解一些語言概觀可以挑這個聽
3. Stackoverflow podcast
主題滿多的,都以Tech 為主,也是30~40min
# Coding Interview
Interview 不是考Leetcode,而是如何跟面試官討論設計跟實作(個人意見)
當成寫production code,coding style跟naming convention仍要有
實作前寫些comments記錄要做甚麼,不然寫到一半忘記edge cases就會被扣分
就算實作不是optimal(比方寫起來比較花時間),但如果你能說出optimal也會加分
個人習慣是假設這個需求未來會變,suboptimal solution但彈性大也是一個做法
# BQ Interview
即使短期沒有面試,每季/年做performance review總要跟老闆說你做得多好
不然怎麼能拿到好績效? 這種故事就適合做為BQ情境準備
把這些情境記錄下來,在寫BQ的時候才不會痛苦,除非記性真的超好那沒話說
Amazon Leadership Principle基本上算是BQ基礎,建議做投影片把情境都列出來
這樣去面其他公司的時候也可以拿出來講,至少不會一緊張就忘記自己做過甚麼
# Other interview side notes
1. 一定要準備問面試官的問題
2. 不要問網路上查得到的問題,除非這只是follow up的引導問題
3. 問的問題方向不一定,Technical / Business看你想法
4. 新創的話多問business model,判斷這家新創有沒有機會久活
# Competing Offer
我也不會...看了幾篇覺得還算滿有幫助的
https://haseebq.com/how-not-to-bomb-your-offer-negotiation/
https://www.nicksingh.com/posts/the-secret-art-of-salary-negotiation
https://www.fastcompany.com/90749904/how-to-negotiate-your-salary-for-any-job
個人的總結是誠實跟對方說你目前還沒面完,預計多久要下決定
比較好的公司都願意等,至於那種明天叫人來上班的...沒去過但聽說都很雷
# Improve yourself
即使面試成功也不要灰心,你已經拿到過門票,多準備下次再來就好
問問看每家面試結果的feedback,了解自己的問題然後調整每日目標
# Contribute to open source
## 關注你有興趣的題目
像是對Linux有興趣就看Jserv的系統軟體課程討論區,我FB幾乎只逛這XD
把逛社群媒體的時間花在逛技術討論區,其實進步會很快
## 找到你有興趣的project
這邊涉獵較少...過去一年內目前也只貢獻了兩三次PR,至少也比沒有好
即使只是文件的改善,都有機會從review中學到很多
## Ptt 版友
Hsins的分享
十月的時候會有 Hacktoberfest 鼓勵大眾參與開源,十月期間
會有一些 GitHub 的開源專案,由專案維護人員將一些 issue
標上分類,有些還會標上新手友好的難易度,活動期間達成一
定的貢獻,會有獎品像是衣服和貼紙,想要參與開源可以參考
## First open source contribution
這篇是文章
https://bit.ly/3IGk3yk
### Issues of opensource projects
https://www.codetriage.com/
https://www.coss.community/
https://goodfirstissue.dev/
## Stackoverflow (SO)
最快可以貢獻在opensource的方法其實是上stackoverflow回答問題
在stackoverflow上回答或發問是一個很好的工程師訓練方式
有空逛一逛也可以學到不少新知識
1. 訓練怎麼有結構地問一個問題,如何找到ref 證明自己不是問蠢問題
2. SO跟rubber duck一樣,問完之前自己會找到答案
3. 如何探討爛問題,或從爛問題的XY problem中找到真正的問題,避免自己問..
4. 有架構地的回答問題,鍛鍊自己的文件撰寫技巧
5. 習慣性直接在online compiler上寫proof of concept exmpale
6. 下一次你就會google到自己的答案,就不會忘記
Tip: 在SO上面問C++ 問題,直接貼godbolt的連結可以加快別人回你的速度
這一次在面試的時候也有feedback提到SO/github上的貢獻
自己做的事情會被看見,畢竟用open source的大公司很多,有點能見度也不錯
# 挑選面試公司
level.fyi + 比薪水 + 能不能問到認識的人
台灣這些資料還是比較少,就看大家能不能一起貢獻
# 帶小孩怎麼抽出時間
每個人的客觀環境不一樣,沒有辦法提供直接建議
比較能共通的: 想辦法抽出個人的時間拿去念書,比如逛IG的時間改成看演算法
但是不要把自己逼太緊,每天仍然需要放鬆一下,建議參考原子習慣之類的書
如果你每天都沒有自己的時間,那先思考可以放棄甚麼來擠出時間自我精進
# 總結
盡量設計一個每日目標讓自己能努力下去,不要太極端因為會很難堅持
鬆散沒關係,有進度就有進步,不要流於形式就好
祝大家都能找到自己喜歡的工作
# Appendix
Google recruiter提供的大補帖
https://gist.github.com/stanzheng/9631465
其實都是公開資訊,但是還是很有參考價值
## Reading meterial
- Introduction to Algorithms (最新的應該是4th)
- Google Style Guides (看你用哪個語言)
- [Coursera - Algorithms, Part
1](
https://www.coursera.org/learn/algorithms-part1)
- [Coursera - Algorithms, Part
2](
https://www.coursera.org/learn/algorithms-part2)
- [Udacity - Intro to Algorithms]
(
https://www.udacity.com/course/intro-to-algorithms--cs215)
- [MIT Open courseware - Introduction to Algorithms] (
https://bit.ly/3P67Jdc)
## 其他準備心得
- [How I got into Google by Prajakta Tathavadkar]
(
https://blog.usejournal.com/how-i-got-into-google-161c97913b8b)
- [How I got into Google by Gourav Mittal]
(
https://medium.com/@gourav.mittal/how-i-got-into-google-a7d92f581951)
- [Average to Googler in 4 weeks:Study Plan by Milan Naseri]
(
https://www.linkedin.com/pulse/average-googler-four-weeks-study-plan-milad-naseri/)
- [My Preparation Journey for Google Interviews by Shantanu Kshire]
(
https://medium.com/swlh/my-preparation-journey-for-google-interviews-f41e2dc3cdf9)
- [What's it like to work at Google?](
https://youtu.be/n_Cn8eFo7u8)
- [Prepare for your Google Interview: Coding](
https://youtu.be/6ZZX9iIgFoo)
- [Prepping for Your Google Interview:
Leadership](
https://youtu.be/2Cr3-et4xkI)
- [How to: Work at Google - Example Coding/Engineering Interview]
(
https://www.youtube.com/watch?v=XKu_SEDAykw)
- [How to: Prepare for a Google Engineering
Interview](
https://www.youtube.com/watch?v=ko-KkSmp-Lk)
## 其他網站
- HackerRank
- Topcoder
- Codeforces
- Leetcode
- InterviewBit
- Kattis
[X] GeekOfGeeks 如果看這個網站,*所有* 的資訊最好都跟其他可信網站交叉驗證
這個網站的資訊非常地不精確
--
等等,我是不知道妳是看了什麼神槍手的故事,可是為什麼要拿我當靶 (′Д‵)
什麼!是黃忠和后羿的故事?他們拿的不是銃,是弓!
長門,妳手上拿著蘋果跟繩子是作什麼?今天晚餐不是關東煮是烤乳豬嗎?
連爸爸都沒弄痛過我,可不可以不要綁這麼緊,好歹鬆一點讓我有空間逃吧,古泉。
好,我認了,要射就射吧,可是請聽一下在我死前的最後一個願望。
不 要 拿 霰 彈 來.....噗滋(腦漿聲) 摘自「阿虛的最後一餐」
--
※ 發信站: 批踢踢實業坊(ptt.org.tw), 來自: 61.231.132.6 (臺灣)
※ 文章網址: https://ptt.org.tw/Soft_Job/M.1657873542.A.6AB
推 musashi023: 推 乾貨 07/15 16:30
推 eggy1018: 大神 推 07/15 16:32
推 Csir: 猛的,推一個 07/15 16:37
推 shibin: 推分享 07/15 16:47
推 cksxxb123: 推 謝謝分享 07/15 16:53
推 Wirol: 歐美包養真的很平常嗎? 07/15 16:53 推 WeiDerrick: ME學長推 07/15 17:01
推 michael0728n: 超詳細推推 07/15 17:16
推 blazers08: 大推 07/15 17:20
推 rotalume: 推 07/15 17:28
推 f26724309: 滿滿乾貨推推 07/15 17:40
推 marecht: 男友上包養網 該放生嗎 07/15 17:40 推 a90100: 謝謝分享,推 07/15 17:53
推 b0920075: 請問你對於最佳化C++這領域除了 cppcon 還有什麼資源可 07/15 17:57
→ b0920075: 以分享的嗎 07/15 17:57
推 s06yji3: Thanks 07/15 17:58
推 hobnob: 推!超厲害! 07/15 18:03
推 riokio: 是這個包養平台嗎 07/15 18:03 推 milkdragon: 實在太棒了,紮實又詳盡的分享,非常有用,感謝大神 07/15 18:24
推 kuan: 大推,感謝分享 07/15 18:32
推 duck10704: 推個 07/15 18:34
推 Fantasylolz: 謝謝分享!收藏了 07/15 18:39
推 michellehot: 可以收入精華區嗎 07/15 18:43
推 wiimas: 交男友跟包養有什麼差別 07/15 18:43 推 birka1222: 推 07/15 19:01
推 vi000246: 推 07/15 19:05
推 k798976869: 刷起來 07/15 19:09
推 safe: 還不推爆 07/15 19:18
推 lairx: 推 07/15 19:27
推 Branlli: 包養網到底在紅什麼? 07/15 19:27 推 ShenJing: 超豐富的,感謝分享! 07/15 19:37
推 wei19918: push 07/15 19:44
推 ILoveSoyMilk: 推分享 希望以後也能跟你一樣上了之後分享給大家心 07/15 19:44
→ ILoveSoyMilk: 得 07/15 19:44
推 TSLsun: 推 很有收穫 07/15 20:04
推 Cinedt: 有人被包養嗎 07/15 20:04 → TSLsun: 期待將來自己也能像前輩一樣分享經歷回饋社群 07/15 20:04
→ loadingN: 先分類啦 07/15 20:12
推 aquablue: 推!! 07/15 20:13
→ wulouise: 真的忘了放分類xd 07/15 20:29
推 ppc: 推 07/15 20:32
推 Drither: 求包養...管飽就好XD 07/15 20:32 推 lolmap: 超級詳細!!感謝分享 07/15 20:46
推 jackkao1: 推 07/15 20:50
推 vt0628: 推 07/15 21:07
推 taitzyhwan: 推 07/15 21:12
推 steak5566: 推 07/15 21:13
推 Notker: 阿姨!我不想努力了(求包養) 07/15 21:13 推 ricoo50: 感謝分享 07/15 21:28
推 bionicqq519: 推 07/15 21:56
推 slcheng: 推 感謝分享 07/15 22:00
推 e12518166339: 推推 07/15 22:01
推 Denim5566: 推推推 07/15 22:07
推 Peycere: 有沒有富二代要包養我 07/15 22:07 推 winiel559: 推高手 07/15 22:07
推 kyrie77: 推 07/15 22:08
推 kaichihoa: 推 07/15 22:14
推 devilkool: 推高手 07/15 22:29
推 YNNEKUW: 推 07/15 22:30
推 vd422: 身邊有朋友被包養嗎 07/15 22:30 推 WayThuz: 推 07/15 22:33
→ deeeplove: 你好神 07/15 23:05
推 WWWE: 大推 07/16 00:08
推 chiel: 推推 07/16 00:44
推 supremebboy: 謝謝分享 07/16 00:59
推 lutano: 亞洲最大包養平台上線了 07/16 00:59 推 juju123: 先拜起來看 07/16 01:10
推 fish0112: 推 好奇如何踏出參與opensource的第一步 07/16 01:28
推 yuzukeykusa: 謝謝分享 07/16 01:48
推 WWIII: 推分享 有夠詳細 07/16 01:51
推 deadee: 推 07/16 02:09
推 muiwo: 這個包養網正妹好多 是真的嗎 07/16 02:09 推 abc12689: 推 07/16 02:33
推 peach2000: 推推 用心分享 07/16 03:53
推 cmelo1515: 感恩大佬 07/16 06:53
推 rushio: 推推推 07/16 08:16
推 aassdd926: 先跪 07/16 08:20
推 sunuzo: 真的有這麼多人在找包養嗎 07/16 08:20 推 whyhsu: 推 07/16 08:22
推 smdf: 推 07/16 09:22
推 bewitchsky: 推 07/16 09:57
推 shieldsky: 感謝分享 07/16 09:58
推 wirlly8888: 感謝分享 07/16 10:47
推 UNIQC: 有人可以分析一下包養平台的差異嗎 07/16 10:47 推 ga013077: 推 07/16 10:49
推 kevinfilter: 大推 07/16 10:55
推 yiche: 推推 謝謝分享 07/16 11:20
推 s93061018: 推 07/16 11:20
推 liang30678: 有料有心 推推 07/16 11:54
推 dewaro: 那個包養網人最多XD 07/16 11:54 推 Hsins: 十月的時候會有 Hacktoberfest 鼓勵大眾參與開源,十月期間 07/16 12:16
→ Hsins: 會有一些 GitHub 的開源專案,由專案維護人員將一些 issue 07/16 12:16
→ Hsins: 標上分類,有些還會標上新手友好的難易度,活動期間達成一 07/16 12:16
→ Hsins: 定的貢獻,會有獎品像是衣服和貼紙,想要參與開源可以參考 07/16 12:16
→ Hsins: 。 07/16 12:16
推 Elfego: 我妹上包養網被我發現= = 07/16 12:16 推 oooo551: 推 07/16 12:50
推 a2475848: 大推,謝謝大大無私分享,很受用! 07/16 13:06
推 poewar: 感謝分享 07/16 13:06
→ ntpuisbest: 為什麼我看只有75題沒看到169題 07/16 13:26
推 Nicodim: 隔壁桌的人竟然在討論包養... 07/16 13:26 推 believe91326: 太神啦 07/16 13:56
推 bnd0327: 推 07/16 14:43
推 javy0521: 推 07/16 15:07
推 nanoshooter: 要去調 schedule 題數會變動 07/16 16:00
推 sarsman: 推推 07/16 16:25
推 Foning: 樓上是不是被包養 07/16 16:25 推 mirror0227: 跪了 07/16 18:08
推 s8952889: 推 07/16 18:34
推 yupog2003: 推實用分享 07/16 18:55
推 yuinami: Dcard有看到,感謝大神的分享 07/16 19:12
推 a78998042a: 也太詳細了吧!推推 07/16 19:12
推 AKNY: 未看先猜這包養網 07/16 19:12 推 jay123peter: 推 07/16 19:54
推 inte629l: 推! 07/16 20:12
推 jacky610223: 推推 07/16 23:24
推 geraldliu98: 收!! 07/17 00:56
推 gofigure: 刷題很要求手感 最好平常就養成習慣 07/17 01:00
推 mysister: 一定又是這包養網 07/17 01:00 推 clamperni: 讚讚 07/17 14:02
推 Lizaron: 好文推推 07/17 15:19
推 jj0321: god電 grind75這網站 神 推推 07/17 16:17
推 umidaisuki: 推 07/18 08:20
推 estd1971: 感謝分享,推推 07/18 18:05
推 cir72: 包養平台不意外 07/18 18:05 推 viper9709: 推分享~這也太詳細XD 07/18 20:33
推 vvind: Pp 07/18 20:44
推 JKEEE: 推 07/18 21:08
推 MyNion: 謝謝分享,推 07/18 21:37
推 airforceso: 11111 07/18 22:42
推 ATrain: 覺得包養網EY嗎 07/18 22:42 推 RadiationXen: 用心推 07/19 08:50
推 tenpoinyuki: 推 07/19 09:51
推 AllenSMC: 大推 07/19 10:20
推 shoeshoeya: 推 07/19 11:01
推 Denny3345678: 感謝大大分享! 07/19 12:41
推 grado0802: 包養網站葉配啦 07/19 12:41 推 asmiocv: 推 07/19 14:09
推 janbarry168: 推 07/19 20:48
推 hattoriJinhe: 推 07/19 21:12
推 kokosorazure: 推 07/19 22:59
推 jasonwung: 推 07/19 23:49
推 smilejin: 記者收了包養網多少啦 07/19 23:49 推 ducky0609: 推分享 07/20 08:55
推 Mtcat: 11311 07/20 11:22
推 TsaiIngWen: 大神 07/20 17:18
推 leveger0903: 推 07/20 19:05
推 tsukiyoK: 推 07/20 23:22
推 qusekii: 包養真亂 07/20 23:22 推 dick51207: 乾貨 07/21 00:20
推 jimjim951357: 推 感謝分享 07/21 10:11
推 superstaniy: 推詳細 07/21 15:56
推 dororouo: 推推~感謝分享 07/21 17:56
推 a2768387: 先推再開 07/21 23:00
推 Y949731: 演藝圈一堆包養好嗎 07/21 23:00 推 air4028: 推 07/22 00:28
推 debbie511297: 推! 07/22 01:44
推 john5380: 推 07/22 02:48
推 jackflu: 太豐富了吧 感謝用心分享 推推 07/22 22:04
推 Dmcnero: 只能推了 07/23 17:47
推 T730733: 政治圈一堆包養好嗎 07/23 17:47 推 fishwl: 好人一生平安 07/25 12:03
推 yasamnoya: 先推 07/28 09:03
推 kyukyu: 推 謝謝分享 07/28 15:02
推 b81314: 謝謝你 07/29 00:49
推 diamondsyo: 謝謝大大的分享!!! 08/02 00:27
推 FireStation: 有錢人一堆包養好嗎 08/02 00:27 推 bug2: 謝謝分享經驗 幫助很大 推推~ 08/05 13:22
推 qq9966pp: 推分享 08/09 08:37
推 aa34723913: 好文推 08/12 21:35
推 assassin762: 好文 08/16 18:55
推 poem5566: 推一個 08/22 00:56
推 Thobel: 學生妹被包養多嗎 08/22 00:56