找工作心得—軟體工程師

嘖喂
6 min readNov 7, 2017

--

主要分享自己在找軟體工程師時所做的規劃,以及如何準備技術面試。

在找工作時,我會先想清楚自己短中期的規劃,想好了之後開始尋找符合條件的公司,並針對每一家公司去掌握面試技巧,最後則是努力準備技術和行為面試!

整理一下自己找工作的過程以及方法:

  1. 思考職涯目標
  2. 搜尋公司
  3. 蒐集心得與面試經驗
  4. 準備技術與行為面試

一、思考職涯目標

這是最基本也是最難的。

首先要思考自己未來想過什麼生活、做什麼職缺。或是三年、五年後想擔任什麼職務。依據這個目標,再來思考下一份工作應該要找什麼。

舉例來說,三年後想到國外booking.com工作,那到那裡之前需要累積哪些能力,例如外語、紮實基礎能力、旅遊電商經驗等。;想出國留學,在申請上若有知名外商的工作經驗可以讓履歷更漂亮。或是未來想轉職PM,公司能有內部轉職機會等。

就我個人而言,我列出的條件是

  1. 能與一群聰明且樂於分享知識的員工一起工作 (能夠成長)
  2. 認同公司文化與產品 (做得開心)
  3. 公司在業界的名氣響亮 (自信、當作跳板)
  4. 薪資、年假與其他福利 (做得開心)

依據重要程度排列,前面是期望的條件,後面是背後的原因。

「依據職涯目標,列舉對於下一份工作的期望條件」

為什麼要這麼做呢?

找工作的過程可能因為其他原因改變決定;上班後,可能因為壓力大想辭職,但是… 這時候需要思考,「我原先為什麼選擇這間公司?

像是自己在找工作的過程中,很容易被一些特殊因素吸引,例如某公司(1)薪資高、(2)可以準時下班、或是(3)拿到offer後開始怠惰不想再找、(4)還是朋友推薦我去面試PM,是不是要轉行等等。

每件事都很吸引人,但回過頭來思考,這些條件跟我職涯目標是否相符。如果沒有就趕快腦醒,繼續找工作!

二、搜尋公司

獲得公司的資訊有許多管道:

  1. 獵頭公司(eg. Adecco, NicheBridge)
  2. 求職網站(eg. 104, LinkedIn, Yourator, mit.Jobs)
  3. 社群相關網站(eg. fb社團、f2e GitHub、PTT soft_job板)
  4. 朋友

其中獵頭公司許多潛藏在LinkedIn當中,建議主動聯繫並on-site面談。

「盡可能條列出所有感興趣的公司,選擇越多越好!」

如何衡量公司是否符合預期?

找到公司後,最難的就是如何衡量公司的好壞,一般可以透過評論網站去了解:

  • jecho:台灣的公司評價
  • Glassdoor:一般是國外企業,台灣知名外商也會有評價
  • 拉勾網:中國版的Glassdoor,有興趣去中國找工作可以看

自製一個公司評分表格也不錯!
列出自己在意的項目,並且確定每個公司是否有符合。

公司評分圖表

三、蒐集心得與面試經驗

這部分其實相對簡單,直接提供以下資源給大家參考:

  • PTT Soft_Job板 (大推)
  • 獵人頭公司
  • 朋友

考大學、期中考期末考都會看考古題,那面試怎麼能放過呢?能了解公司的面試思維是很重要的!

舉例來說:A公司注重基本CS概念,如OS、Network、Security;B公司重視演算法;C公司重視程式語言與系統框架

這些公司要求的內容都不太一樣,如果沒特別準備的話,大概就感謝卡了。(如果是大神就例外XD)

四、準備技術與行為面試

分成三種技術、半技術、行為面試。

技術面試

包括演算法、CS基礎觀念、系統設計等

  1. 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都找得到這些觀念,或者要翻大學課本也行(只是很花時間)。

這邊提供我之前在準備面試前整理的內容:

半技術面試

所謂半技術面試,就是主考官依據你的過去經驗,詢問的技術性問題。

以我的經驗來說,主考官曾問過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

若對面試心得有興趣,可以參考:面試心得—軟體工程師

感謝辛苦的閱讀。

--

--