年薪三百萬軟體工程師的歷程 第一集 白板面試
2021年8月20日 10:45
第二集
年薪三百萬軟體工程師的歷程 第二集 物件導向面試 - Dcard
第三集
想寫這篇分享軟體業面試的心得
以及鼓勵一些正在這條路上的人
或是想要轉換跑道不知道如何開始的人
實際上進的去矽谷前幾間FAANG的話薪水會遠比標題多
同樣的準備在台灣面試也能用上
前言:
兩年前的我曾經一直質問自己
對於在台灣月薪五萬現在的自己就滿意了嗎
看著朋友一個個邁向灣區矽谷
自己要花多少力氣才能追上
準備的這期間也不斷的懷疑自己
途中面試不斷的被拒絕
中間也曾經放棄
犧牲了許多平日跟周末時間
開始寫這篇文章之後
發現全部塞一個一天寫不完
決定分成三集寫
第一集: Coding interview 程式碼面試
第二集: OOP 物件導向
第三集: System Design 系統設計
排版可能有亂
(1) 程式碼白板面試 coding interview
1.1 開始準備
英文能力部分參考 b15回答
如果對軟體完全是入門的話
推薦熟悉資料架構以及演算法
參考下面第一個coding university 連結
中文版
有提供中文版 以及一些免費線上課程資源
那是一位金融系前輩為了轉行上google
每天花八小時準備的資料
現今成為許多人進入軟體業開始準備的起點
另外如果開始學java 或c++
我個人推薦這個頁面沒有軟體經驗的話也可以尋找自己有興趣的題目
做一些side project邊做邊學
推薦side project 很多可以跟著官方網站 或是其他人有建議
手機程式設計: android studio 或是 iOS xcode
網站設計 或是 前端: javascript, python
後端: c++ java (網路教材), pthon
機器學習: python
遊戲設計: Unity 或是 Unreal Engine
開始準備的時候是從leetcode上每週競賽開始的
leetcode.com
台灣時間是每周日早上9點
兩個小時有四個題目
一開始兩個小時一題都做不出來
跟我一起的朋友30分鐘做完三題
我都懷疑自己的人生了😂
在周末競賽受到打擊之後
我開始計畫自己
首先第一件事 先選擇一個程式語言
把他全部常用資料結構寫出來
我選擇的是java
包含array, list, string, queue, stack, map, pair
創建 存入 讀取 結構大小 縮減 常用的function全部寫在一頁紙上
接著每天上班回家不管多累
平日時間強迫自己
每天下班一定要leetcode上做至少一題
周末一天三題
面試前一個月開始做更多
在一開始的時候
按照這個表格裡的60題
原作者在medium上在解釋各個表格標題
自己複製一份來做紀錄
幾個月下來這60題重複了三四次
把各個總類的標題列出來
包含:
1. array
2. linkedlist
3. stack
4. queue
5. heap/priorityQueue
6. HashMap/dictionary
7. Tree, BFS, DFS(pre-order, inorder, postorder)
8. Sort(bubble sort, selection sort, quick sort, merge sort)
9. dynamic programming
10. binary search
11. recursion/iterative non recursion
12. dynamic programming
13. sliding window, two pointer
14. greedy algorithm, backtracking
15. graph, Dijkstra algorithm
每個題目 把每個算法
1. brute force
2. 熱門解法
3. 99% Time complexity算法 and 99% space complexity解法 (在第一次全部都pass之後可以去submission 那邊看自己的百分比 按最前面的可以看到最有效率的解法的程式碼)
4. 程式最乾淨的寫法
有時候2跟3一樣
做不出來的時候把上面每個算法抄三遍
隔天再來做一次
周末一樣不斷做競賽 知道自己跟別人差多遠
在那60題做三遍的時候
可以在根據每個總類去leetcode上找更難的題目
熟悉其中要花幾個月時間
這也是最辛苦的成長期
題目練習就是要狠下心來
不管颳風下雨 每天就是上去做一題
判斷自己能夠應徵大公司面試的標準
我自己是能在競賽題目
時間內4題做出來3題之後
其他公司的話能做出來1,2題
就可以投履歷看看
1.2 面試前兩禮拜
可以上leetcode看要面試的公司曾經出過的題型
熟悉題型
一畝三分地也是很好的資源
方法的話 一樣同上方 不同解法做三遍
*需要購買leetcode會員
*如果不想付費可以leetcode forum 或google上找找
1.3 面試時
我覺得這個頻道的影片是個很好的參考
大概可以知道面試的流程
後面還沒講的兩個階段這上面也有範例
面試中重點:
1. 不管知不知道答案
先從最直接或最沒效率的方法
brute force 開始 把算法講給面試官
2. 接著根據面試官提示
再把更有效率的方法提出來
如果面試官准許 就可以把程式寫出來
3. 寫完之後 根據程式尋找corner case
把一些檢查寫出來
4. 中間卡住可以詢問面試官
5. 面試官在寫完之後會提供測試
如果測試結果不符合 再根據結果改動
基本上面試過程大概這樣
可以自己先練習幾次
有時候面試官會改變題型
不確定可以詢問
大部分面試官是找
能夠溝通能合作的人
而不是一開始就知道答案的
如果大家有興趣
我之後再分享第二集第三集design interview準備方法
也歡迎提出疑問或是建議
cracking the coding interview 這本書也很推薦