軟體職缺準備心得

看板Soft_Job作者 (在線上!=在電腦前)時間1年前 (2022/07/15 16:25), 1年前編輯推噓124(124012)
留言136則, 128人參與, 1年前最新討論串1/1
前面有我拿到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.cc), 來自: 61.231.132.6 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1657873542.A.6AB.html

07/15 16:30, 1年前 , 1F
推 乾貨
07/15 16:30, 1F

07/15 16:32, 1年前 , 2F
大神 推
07/15 16:32, 2F

07/15 16:37, 1年前 , 3F
猛的,推一個
07/15 16:37, 3F

07/15 16:47, 1年前 , 4F
推分享
07/15 16:47, 4F

07/15 16:53, 1年前 , 5F
推 謝謝分享
07/15 16:53, 5F

07/15 17:01, 1年前 , 6F
ME學長推
07/15 17:01, 6F

07/15 17:16, 1年前 , 7F
超詳細推推
07/15 17:16, 7F

07/15 17:20, 1年前 , 8F
大推
07/15 17:20, 8F

07/15 17:28, 1年前 , 9F
07/15 17:28, 9F

07/15 17:40, 1年前 , 10F
滿滿乾貨推推
07/15 17:40, 10F

07/15 17:53, 1年前 , 11F
謝謝分享,推
07/15 17:53, 11F

07/15 17:57, 1年前 , 12F
請問你對於最佳化C++這領域除了 cppcon 還有什麼資源可
07/15 17:57, 12F

07/15 17:57, 1年前 , 13F
以分享的嗎
07/15 17:57, 13F
其實網路上資源很多 最佳化最重要的是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

07/15 17:58, 1年前 , 14F
Thanks
07/15 17:58, 14F

07/15 18:03, 1年前 , 15F
推!超厲害!
07/15 18:03, 15F

07/15 18:24, 1年前 , 16F
實在太棒了,紮實又詳盡的分享,非常有用,感謝大神
07/15 18:24, 16F

07/15 18:32, 1年前 , 17F
大推,感謝分享
07/15 18:32, 17F

07/15 18:34, 1年前 , 18F
推個
07/15 18:34, 18F

07/15 18:39, 1年前 , 19F
謝謝分享!收藏了
07/15 18:39, 19F

07/15 18:43, 1年前 , 20F
可以收入精華區嗎
07/15 18:43, 20F

07/15 19:01, 1年前 , 21F
07/15 19:01, 21F

07/15 19:05, 1年前 , 22F
07/15 19:05, 22F

07/15 19:09, 1年前 , 23F
刷起來
07/15 19:09, 23F

07/15 19:18, 1年前 , 24F
還不推爆
07/15 19:18, 24F

07/15 19:27, 1年前 , 25F
07/15 19:27, 25F

07/15 19:37, 1年前 , 26F
超豐富的,感謝分享!
07/15 19:37, 26F

07/15 19:44, 1年前 , 27F
push
07/15 19:44, 27F

07/15 19:44, 1年前 , 28F
推分享 希望以後也能跟你一樣上了之後分享給大家心
07/15 19:44, 28F

07/15 19:44, 1年前 , 29F
07/15 19:44, 29F

07/15 20:04, 1年前 , 30F
推 很有收穫
07/15 20:04, 30F

07/15 20:04, 1年前 , 31F
期待將來自己也能像前輩一樣分享經歷回饋社群
07/15 20:04, 31F
我一開始的確是看到大家都沒提到Grind75所以才想分享的,沒想到越寫越多XD

07/15 20:12, 1年前 , 32F
先分類啦
07/15 20:12, 32F

07/15 20:13, 1年前 , 33F
推!!
07/15 20:13, 33F

07/15 20:29, 1年前 , 34F
真的忘了放分類xd
07/15 20:29, 34F

07/15 20:32, 1年前 , 35F
07/15 20:32, 35F

07/15 20:46, 1年前 , 36F
超級詳細!!感謝分享
07/15 20:46, 36F

07/15 20:50, 1年前 , 37F
07/15 20:50, 37F
還有 62 則推文
還有 7 段內文
07/17 01:00, 1年前 , 100F
刷題很要求手感 最好平常就養成習慣
07/17 01:00, 100F

07/17 14:02, 1年前 , 101F
讚讚
07/17 14:02, 101F
※ 編輯: wulouise (61.231.129.196 臺灣), 07/17/2022 14:15:00

07/17 15:19, 1年前 , 102F
好文推推
07/17 15:19, 102F

07/17 16:17, 1年前 , 103F
god電 grind75這網站 神 推推
07/17 16:17, 103F

07/18 08:20, 1年前 , 104F
07/18 08:20, 104F
更新 Mock Interview要點,要練習的人可以參考 ※ 編輯: wulouise (61.231.129.196 臺灣), 07/18/2022 17:34:14 ※ 編輯: wulouise (61.231.129.196 臺灣), 07/18/2022 17:47:21

07/18 18:05, 1年前 , 105F
感謝分享,推推
07/18 18:05, 105F

07/18 20:33, 1年前 , 106F
推分享~這也太詳細XD
07/18 20:33, 106F

07/18 20:44, 1年前 , 107F
Pp
07/18 20:44, 107F

07/18 21:08, 1年前 , 108F
07/18 21:08, 108F

07/18 21:37, 1年前 , 109F
謝謝分享,推
07/18 21:37, 109F

07/18 22:42, 1年前 , 110F
11111
07/18 22:42, 110F

07/19 08:50, 1年前 , 111F
用心推
07/19 08:50, 111F

07/19 09:51, 1年前 , 112F
07/19 09:51, 112F

07/19 10:20, 1年前 , 113F
大推
07/19 10:20, 113F

07/19 11:01, 1年前 , 114F
07/19 11:01, 114F

07/19 12:41, 1年前 , 115F
感謝大大分享!
07/19 12:41, 115F

07/19 14:09, 1年前 , 116F
07/19 14:09, 116F
回來看變成爆文XD 如果看完有遇到甚麼問題歡迎來信詢問,回答完後我有空會繼續更新 有其他問題也可以詢問,也許未來還有機會再寫一篇文 ※ 編輯: wulouise (61.231.129.196 臺灣), 07/19/2022 15:51:16

07/19 20:48, 1年前 , 117F
07/19 20:48, 117F

07/19 21:12, 1年前 , 118F
07/19 21:12, 118F

07/19 22:59, 1年前 , 119F
07/19 22:59, 119F

07/19 23:49, 1年前 , 120F
07/19 23:49, 120F

07/20 08:55, 1年前 , 121F
推分享
07/20 08:55, 121F

07/20 11:22, 1年前 , 122F
11311
07/20 11:22, 122F

07/20 17:18, 1年前 , 123F
大神
07/20 17:18, 123F

07/20 19:05, 1年前 , 124F
07/20 19:05, 124F

07/20 23:22, 1年前 , 125F
07/20 23:22, 125F

07/21 00:20, 1年前 , 126F
乾貨
07/21 00:20, 126F

07/21 10:11, 1年前 , 127F
推 感謝分享
07/21 10:11, 127F

07/21 15:56, 1年前 , 128F
推詳細
07/21 15:56, 128F

07/21 17:56, 1年前 , 129F
推推~感謝分享
07/21 17:56, 129F

07/21 23:00, 1年前 , 130F
先推再開
07/21 23:00, 130F

07/22 00:28, 1年前 , 131F
07/22 00:28, 131F

07/22 01:44, 1年前 , 132F
推!
07/22 01:44, 132F

07/22 02:48, 1年前 , 133F
07/22 02:48, 133F

07/22 22:04, 1年前 , 134F
太豐富了吧 感謝用心分享 推推
07/22 22:04, 134F

07/23 17:47, 1年前 , 135F
只能推了
07/23 17:47, 135F

07/25 12:03, 1年前 , 136F
好人一生平安
07/25 12:03, 136F
文章代碼(AID): #1YqII6Qh (Soft_Job)