在找工作時,我會先想清楚自己短中期的規劃,想好了之後開始尋找符合條件的公司,並針對每一家公司去掌握面試技巧,最後則是努力準備技術和行為面試!
整理一下自己找工作的過程以及方法:
- 思考職涯目標
- 搜尋公司
- 蒐集心得與面試經驗
- 準備技術與行為面試
一、思考職涯目標
這是最基本也是最難的。
首先要思考自己未來想過什麼生活、做什麼職缺。或是三年、五年後想擔任什麼職務。依據這個目標,再來思考下一份工作應該要找什麼。
舉例來說,三年後想到國外booking.com工作,那到那裡之前需要累積哪些能力,例如外語、紮實基礎能力、旅遊電商經驗等。;想出國留學,在申請上若有知名外商的工作經驗可以讓履歷更漂亮。或是未來想轉職PM,公司能有內部轉職機會等。
就我個人而言,我列出的條件是
- 能與一群聰明且樂於分享知識的員工一起工作 (能夠成長)
- 認同公司文化與產品 (做得開心)
- 公司在業界的名氣響亮 (自信、當作跳板)
- 薪資、年假與其他福利 (做得開心)
依據重要程度排列,前面是期望的條件,後面是背後的原因。
「依據職涯目標,列舉對於下一份工作的期望條件」
為什麼要這麼做呢?
找工作的過程可能因為其他原因改變決定;上班後,可能因為壓力大想辭職,但是… 這時候需要思考,「我原先為什麼選擇這間公司?」
像是自己在找工作的過程中,很容易被一些特殊因素吸引,例如某公司(1)薪資高、(2)可以準時下班、或是(3)拿到offer後開始怠惰不想再找、(4)還是朋友推薦我去面試PM,是不是要轉行等等。
每件事都很吸引人,但回過頭來思考,這些條件跟我職涯目標是否相符。如果沒有就趕快腦醒,繼續找工作!
二、搜尋公司
獲得公司的資訊有許多管道:
- 獵頭公司(eg. Adecco, NicheBridge)
- 求職網站(eg. 104, LinkedIn, Yourator, mit.Jobs)
- 社群相關網站(eg. fb社團、f2e GitHub、PTT soft_job板)
- 朋友
其中獵頭公司許多潛藏在LinkedIn當中,建議主動聯繫並on-site面談。
「盡可能條列出所有感興趣的公司,選擇越多越好!」
如何衡量公司是否符合預期?
找到公司後,最難的就是如何衡量公司的好壞,一般可以透過評論網站去了解:
自製一個公司評分表格也不錯!
列出自己在意的項目,並且確定每個公司是否有符合。
三、蒐集心得與面試經驗
這部分其實相對簡單,直接提供以下資源給大家參考:
- PTT Soft_Job板 (大推)
- 獵人頭公司
- 朋友
考大學、期中考期末考都會看考古題,那面試怎麼能放過呢?能了解公司的面試思維是很重要的!
舉例來說:A公司注重基本CS概念,如OS、Network、Security;B公司重視演算法;C公司重視程式語言與系統框架
這些公司要求的內容都不太一樣,如果沒特別準備的話,大概就感謝卡了。(如果是大神就例外XD)
四、準備技術與行為面試
分成三種技術、半技術、行為面試。
技術面試
包括演算法、CS基礎觀念、系統設計等
- LeetCode練習
首推 SiddonTang LeetCode題解 — GitBook
刷完一些LeetCode之後,覺得LeetCode重要的不是題目的多寡,而是核心的思考方式,因此先以此書有提到的內容練習,寫完後再看他的方法或是LeetCode上的solution。
實際上做法是:練習GitBook上的大部分題目,寫完後看作者的解法。每次作答都會當作白板題,先擬定演算法步驟,再寫pesudo code,最後寫完整程式碼。 重複這些過程後,會讓演算法的觀念更清楚,之後再去隨機刷LeetCode。
另外每週日上午9:30都會有LeetCode Contest(https://leetcode.com/contest/),可以當練習。
切記:
- 一定要自己練習,除非半小時都想不出來。
- 練習完後做筆記,訓練自己思考的脈絡。
2. CS基礎觀念
這些內容幾乎是必帶:
- Data Structure (Linked list, queue, stack, hash, quick sort, merge sort, heap sort, hash search)
- OS (Thread, deadlock, race condition, context switch, non-blocking I/O)
- Network (TCP, three-way handshake, SSL, HTTP methods, OSI Model)
- Security (Symmetric and asymmetric encryption, MD5)
通常Google都找得到這些觀念,或者要翻大學課本也行(只是很花時間)。
這邊提供我之前在準備面試前整理的內容:
- Fundamental of Computer Science — GitBook
(原本是要應付英文面試,所以寫了很多中英夾雜的內容,之後再來整理)
半技術面試
所謂半技術面試,就是主考官依據你的過去經驗,詢問的技術性問題。
以我的經驗來說,主考官曾問過Java語言特性、Java EE框架、DB、RESTful API、Design Pattern。
這邊一部分是依據履歷、自介的內容而定。
「要確保自介、履歷上的內容都非常熟悉。」
行為面試
軟體工程師的行為面試與一般面試差不多,網路上很多資料可以找,因此這一塊就不再贅述。
時間軸
週次 | 技術性行程 | 管理性行程 1 | 寫LeetCode | 思考職涯目標 2 | 寫LeetCode | 搜尋公司、找head hunter聊天 3 | 寫LeetCode | 上網蒐集心得與面試經驗 4 | 讀CS基礎概念 | 準備行為面試應對 5 | 針對公司準備面試 | 投履歷、找其他公司
重複執行第5週的行程,直到拿到理想的offer。
基本上前期就是寫LeetCode,到哪面試幾乎都用得到。
中後期發現有些公司會問大學教的東西,因此開始狂K書。
最後就是投履歷,針對公司準備面試,有時間再繼續找其他職缺。
小結
這次求職一共面試了三家國內公司:Trend Micro, Oath(原 Yahoo), 17 Media
還有兩家海外公司:SEA (原 Garena), LINE
若對面試心得有興趣,可以參考:面試心得—軟體工程師
感謝辛苦的閱讀。