2021 社會新鮮人軟體工程師求職心得分享 (Web Developer)

莫力全 Kyle Mo
16 min readFeb 17, 2021

去年 2020 年 7 月順利從大學畢業後,我開始了實習生活,在年底實習合約結束後,我開始了出社會後第一份正職工作的求職之旅,期間大約花費一個月的時間,覺得整個過程自己心境變化還蠻大的,也認為很值得記錄下來分享給其他要找軟體工程工作的新鮮人或是轉職者,希望能對其他人有所幫助。

My Background

先說明一下自己的學經歷與技能樹,政大資管系學士畢業,在校成績在系上應該是倒數 10 %😂,很多科目都低空飛過(資料庫甚至重修),總之成績就是一塌糊塗。技能樹的話自己特別熱愛 Web 開發領域,前端大約三年學習經驗,框架基本上都嘗試過但特別熱愛 React,後端則是一年半左右,最熟悉的是 Node.js,也寫過 Python Django 跟 Flask,最近則是在學習 Golang。另外最近半年也慢慢在碰一些 k8s 等 DevOps 的技術與 AWS 雲服務的一些應用。在學期間有三次實習經驗,職缺差不多都是 Web Developer Intern,前後端都有寫過。

關於求職

其實花了蠻長一段時間跟自己溝通的,自己究竟要走哪一塊,給自己的定位又是什麼?有一派說法是,一次就專精在一個領域吧,要嘛走前端要嘛走後端,不過我卻很貪心的對前後端都十分有興趣,這裏我必須說每個人的選擇會不同,但也都沒有所謂對與錯,畢竟每個人有適合自己的道路,最終我選了一條自己認同的道路,將「短期」目標設立為成為「特別專精於前端領域的 Fullstack Web 開發者」。也因此這次求職主要找的職缺有 Frontend Enginner (Junior — Mid)、Fullstack Engineer、Software Engineer(通常就是變相的 Fullstack)。Frontend 的部分自己不太喜歡做切版或動畫相關的事(當然還是得接觸啦),反而比較喜歡邏輯、架構、工具、資料流或是效能等面向的領域,因此在選擇前端職缺時會先去特別暸解該職缺主要的工作內容還有技術上會遇到的挑戰,希望可以盡量接觸到自己有興趣的內容。Backend Engineer 的部分因為覺得以自己目前能力能拿到的 pay 應該會在台北餓死 🤣 還有也與前面提及的短期目標不符,就不在這次的求職目標內。

不過有個特別要說明的點是因為我二月到六月要去服兵役了(超鬱卒),所以這次求職並不算太積極,主要是靠朋友內推或是確定可以預聘後才投遞履歷,想說有緣就可以找到願意等我的公司,沒緣分就只好退伍後再求職囉~

投遞的公司與職缺

有真的進到面試流程的有:

  • OneDegree — Frontend Engineer
  • 浪 live — Frontend Engineer
  • Line Taiwan — Frontend Engineer
  • 17 Media — Frontend Engineer

校園招募:

  • IBM Taiwan — Associate Developer
  • Amazon Taiwan — Software Dev Engineer

只停留在了解階段的:

  • PicCollage — Web Developer

投遞後無聲卡:

  • 91APP — FullStack Developer

關於履歷 & 找出自己與他人的不同之處

雖然說是第一次找正職,不過想說就用之前找實習的履歷改ㄧ改就好,履歷大概寫了三頁,列了一堆技能外,把很多 side projects 都放上去,天真的想說描述的越詳細越好,結果後來被朋友建議說盡量把履歷壓到一頁比較好,通常人資看到那麼多頁的履歷可能就直接跳過了,所以後來把履歷修成了這個樣子

而履歷上到底要不要放照片是有正反兩種論點的,我自己是因為覺得投遞的企業多是新創,所以最後還是有放照片,這部分就見仁見智了。

在修改履歷的過程中,我也開始整理自己的優勢與特殊經驗,畢竟如果在履歷中只提及過去的工作內容,我自己認為是沒辦法凸顯自己與別人的不同之處的(以工程師的觀點出發),原因是通常過去工作經驗的程式碼是不能公開的,畢竟那些是前公司的資產,因此面試官只能透過溝通的過程來了解你的實力與做過的事,但這些都遠遠不及直接秀出程式碼或相關作品來得有說服力,畢竟大部分履歷上的說辭都是經過美化後的文字,是真是假或是有沒有過度誇大只能自由心證,面試官一定也知道這點,所以除了實習經歷以外,我整理了一些自己認為比較特殊的經驗與專案:

Side Projects:

自己籌組的後端線上讀書會:

特殊經歷:

而的確這些經歷也吸引了面試官的注意力,在面試中常常被問到這些經歷的 detail,因此強烈建議在工作之餘,也可以做一些 Side Projects 或是挑戰一些在工作上不會經歷的事,除了提升實力以外,也可以展現出自己對於技術的熱忱。

面試心得

其實真的有走到面試流程的只有 4 間,所以在一開始先把沒有進到面試的部分簡單說明一下好了。AWS 跟 IBM 都是校園招募,所以當然會有預聘機制,IBM 的職缺是助理工程師,技術要求大致上是前後端都要會寫,還要會一些 k8s 和 docker 等容器化技術,在投遞履歷後不久收到線上性向測驗的邀請,做完性向測驗後大約三週收到面試邀約,面試的形式是團體面試,另外需要準備約五分鐘的簡報,介紹自己曾經做過的專案。不過因為當時有拿到理想的 offer 了於是就婉拒了面試的機會。AWS 的職缺是軟體工程師,不過看起來蠻硬的,需要會寫 C 或 C++ 等較底層的程式,也是因為有其他 offer 了於是寄信取消後續的流程。PicCollage 其實是一間我很喜歡的公司,當時是去了職涯博覽會現場投了紙本的履歷,後來收到 PicCollage 的來信,希望可以簡短回答一些問題讓他們更認識我,回信後不久也收到面試邀約,同樣因為已經拿到理想 offer 於是婉拒面試邀約。

接下來分享四個有進到面試流程的面試經驗

浪 Live

  • 職缺:Frontend Engineer
  • 投遞管道:在 Linkedin 上 HR 主動聯繫
  • 面試流程: Take Home Assignment -> 一次 Onsite Interview
  • 面試結果: Offer Get
  • 時間流程:大約兩個多禮拜

浪 Live 是 17 直播在爭奪台灣直播展業龍頭的頭號對手,剛好因為人資在 Linkedin 找到我,我表明了自己要當兵的狀況後,人資說要經過內部討論一下,不過不久還是收到了面試邀約。第一階段是要寫一個 take home assignment,條件是用 React + TypeScript + Redux 做一個倒數計時器,時間限制好像是 5–7 天(有點忘記了),對我來說剛好是一個整理半年來所學的好機會,所以就選用了一些這半年有接觸卻缺乏練習的技術例如 NextJS、Redux Toolkit,然後也告訴自己盡量寫出易維護易擴展的 code,練習寫出品質好一點的程式碼。自己也把它當 side project 在寫,因此繳交作業後我還是有在寫後續的功能,例如 API Routes + Prisma +PostgreSQL 來實作後端相關的功能,還有 SSR 的練習與新增 service worker cache 等等(還在進行中,不過因為要當兵了,可能會暫時擱置了)。總體來說我覺得這個 take home assignment 對我自己來說練習量蠻夠的,有興趣的讀者可以參考 github repo

第二階段就是 onsite interview 了,浪 Live 的研發部門有自己獨立的辦公室,地點位於信義區的大樓,隔壁就是 101,不得不說地點真的挺不錯的,而其他的部門則在內湖的另一個辦公室上班。當天的面試又分為三關,分別為 「工程師團隊技術面試」-> 「技術長面試」-> 「人資面試」。一開始被帶到會議室並填了一些基本資料後,就有三位工程師進來了,首先自我介紹是不可避免的,接下來面試官也針對我的自介與履歷問了一些問題,這邊值得一提的是其中一個工程師蠻好奇我在歷任實習期間做了什麼事的,平常比較常遇到的是會要我自己說出在之前經歷中比較印象深刻的專案或經歷,這次則是希望我盡量描述每個經歷的內容,因此印象蠻深刻的。面談過程中也有針對 take home assignment 做了一些詢問,例如為什麼會採用這樣的架構或是為什麼會這樣寫,自己覺得這樣的交流還挺不錯的。在考技術題的過程中我也覺得有蠻多收穫的,一些技術問題我沒有回答出來或是不確定,面試官也會把答案與原理很清楚的告訴我,不會讓我帶著問號結束面試,最後我也詢問了在開發前端直播應用時有沒有遇到一些效能上的挑戰與特別的經驗,這個問題面試官的回答也讓我收穫蠻多的。與工程團隊成員面談結束後,不久就換技術長面談了,其實這關基本上就是在聊天了,看起來是把技術的審核都放到了第一關,這一關則是著重在了解人格特質,也讓面試者更了解公司文化,自己覺得浪 Live 的技術長還蠻親民的,給我很輕鬆的感覺,甚至最後還談到他也認識我在 VeryBuy 實習時的恩師 Bingo,頓時覺得氣氛更放鬆了 XDD 最後就是與人資的面試,主要是談到公司文化、公司福利,人資也藉由對談了解我的人格特質,最後談完期望薪資後就結束了三關的面試。這次 onsite interview 總共大約花了 2 個半小時左右,ㄧ走出公司大樓真的有超級累的感覺,不過自己覺得先做 take home assignment 合格後再集中一次面試的方式還蠻有效率的,後來大概在面試後的一週拿到 offer。

OneDegree

  • 職缺:Frontend Engineer
  • 投遞管道:朋友內推
  • 面試流程: 線上測驗 -> 工程與人資面試 ->主管面試
  • 面試結果: Offer Get
  • 時間流程:大約兩個多禮拜

第一次知道 OneDegree 這間公司是因為胡立的這篇工作心得(如果是應徵 Frontend Engineer 應該 90% 都是因為看過胡立大的文章,當時 HR 詢問如何得知 OneDegree 的資訊時,在我回答因為這篇文章後,HR 毫不訝異的說「胡立 Again !」XDD),裡面介紹的蠻詳細的,所以如果想了解更多公司相關資訊的讀者建議直接參考該篇文章,總體來說我認為是一間很有發展潛力,題目也很有挑戰,從創立到現在四年來也算是快速成長的一間新創金融科技公司。

第一階段面試是線上測驗,需要在 1 個小時內回答完 10 題問題並回傳,題目不太難,考一些 JS 還有 React 的基礎知識,作答完後大概過了兩個小時左右 HR 就打電話來通知測驗通過了並安排第二階段的辦公室面試。第二階段的面試分為與工程師的技術面談還有與人資的面談。當時技術面談有兩位工程師面試官,因為在面試前有做一些功課,大概知道會需要用英文自我介紹,所以面試前有先準備大約一分鐘左右的英文自我介紹,不過沒想到英文自介完還是接著用英文回答了兩個問題,當時硬著頭皮用破破的英文很努力的擠出答案,還好後來面試官就說可以轉回中文了,頓時鬆一口氣。面試的問題主要圍繞著履歷問,相關的技術問題也是從自己的 side project 或是之前的工作經驗下去問,沒有出現考 JS 基礎或白板題之類的狀況,所以這邊每個人被問的問題應該會不太一樣,整體來說這階段的面談還蠻輕鬆的,面試官給人一種很親切的感覺。再來就是與人資的面試,我在與人資的面試中更了解了公司的各個產品還有未來展望,因為 OneDegree 在做的是可能平常比較少會接觸到的數位保險,所以我原本對公司也是有很多疑問,所幸在與人資的面談中幾乎都得到了解答。第二階段面試結束後大約過了一個禮拜就收到了第三階段最終面試的邀約,第三階段面試是與技術長的面談,整體的感覺跟浪 Live 技術長面談蠻像的,都是比較像聊天的形式,讓我更認識公司,也讓公司更熟悉自己。這階段的面試我就沒有特別做事前準備了,我覺得放輕鬆,好好展現自己就是最好的應對。第三階段面試最後當場就收到了 offer,OneDegree 也是我遇到應徵效率最快的公司,從收到面試邀請到拿到 offer 大約只花了兩個禮拜的時間。

Line Taiwan

  • 職缺:Frontend Engineer
  • 投遞管道:朋友內推
  • 面試流程: 線上測驗 -> 第一階段技術面試 -> 二階段面試 -> ??
  • 面試結果: 因拿到其他 offer 而婉拒二階段面試
  • 時間流程:一個多月

Line 大概是我目前為止遇到過最棘手也最讓我挫折的面試經驗,第一階段的線上測驗需要在 90 分鐘內寫完 9 題,一開始我以為應該不是什麼大問題,結果看到考題就有點慌了,因為我太久沒刷題了!考題大概是由 3–4 題 medium level 的 leetcode 題目、3 題的 JS 與演算法基礎題與 3 題的簡答題組成。leetcode 題就不說了,平常沒在刷題所以當下寫得很卡,再來三題的 JS 基礎與演算法,雖然說是基礎,不過是一些很少遇到所以差不多快忘光的概念,例如 JS 的事件捕捉與事件冒泡應用,或是實作一個 built-in function 這種題目,演算法題目則是類似把二元樹攤平成陣列或是特別要求盡量壓低解法的時間複雜度等等,簡答題則是類似解釋 SSR 概念,不同 script (async, defer) 的區別…等等。雖然現在回想起來可能都不是回答不出來的題目,不過當下在時間壓力下真的寫的超卡,最後時間到也有一兩題只寫了一半而已。寫完交卷我就覺得完蛋了,應該不會通過,也認知到自己對於賴以維生的 JS 這個語言實在有太多不熟悉的地方了,決定找時間打掉重練一下。

不過很意外的在大約一週後收到二面邀請(我猜線上測驗應該是低空飛過標準),二面是與兩位工程師進行視訊面試,而我在這個階段面試中再次嘗到了ㄧ階段面試的無力感,這個階段的面試不太在乎我之前實習的內容與做過的專案(對我而言這些都比較算是我的優勢),而是針對ㄧ階段線上測驗的題目做探討還有繼續考一些 JS 的基礎,問的問題隨便舉一個例子例如:「JS 如何做到深拷貝 (deep copy)?」整個面試流程下來也覺得自己一直呈現挨打狀態,也再次認知到,不去好好複習 JS 真的不行了,二階段也在問完這些問題後就結束了。一樣抱著不可能會過關的心態,沒想到大概兩週後收到了第二次面試的邀請!?不過因為 Line 的應徵流程實在太長了,才進行完兩關就過了一個半月了,之後貌似還有兩關面試,剛好手邊已經拿到滿意的 offer,就婉拒了下階段面試的邀約。

Line 的面試給我的啟發還滿大的,以前端開發領域來說,現今前端框架非常流行,我自己是比較喜歡 React 的,因此還花蠻多時間了解 React 的各種知識的,不過這次面試卻沒有考到任何的框架相關的問題,而是圍繞在 JS 這個前端賴以維生的程式語言上,我也因為這次面試了解到自己差點變成了所謂的「框架魔人」,而忽略了最基礎的語言概念。在這次面試後我開始複習 JS 的眉眉角角,希望可以成為基礎強健的工程師,而不是只會使用框架的框架魔人。

17 Live

  • 職缺:Frontend Engineer
  • 投遞管道:Yourator 就業博覽會留紙本履歷
  • 面試流程: 上機考 -> 工程面試 -> 主管面試 ->人資面試 (當時因為疫情不樂觀所以公司採 remote,以上四關都排在同一天採線上形式完成,總時長約 4 小時)
  • 面試結果: 感謝信
  • 時間流程:博覽會結束大概 2 週後收到面試通知,面試後二週收到結果

17 Live 因為疫情,所以面試採取遠端面試,直接四個小時一次面完,流程就如同上面說的,上機考的部分也是挺有難度的,不過就沒有 Line 考得那麼艱深,有考 JS 的 build-in function 實作還有考 JS 的非同步概念,也有 React 的 bug fix,有自己寫一個 redux connect 這種平常習慣依賴套件寫好的方法,不過冷靜下來思考也至少寫得出一些東西不至於完全空白,另外也有考基礎演算法例如多維陣列攤平成一維陣列。一個小時寫完後由兩名工程師面試官來進行剛剛考題的檢討還有一般的面試流程如自介與過去經驗分享,這邊有發現上機考有ㄧ兩題自己寫完認為沒問題的其實有一些 edge case 沒有考慮到,被小小電了一下,另外上面提到的多維陣列轉一維陣列那題,我自己是用了遞迴的方法,不過面試官要我當場寫出非遞迴的方法,這邊也是卡了很久,平常針對一些特定問題太依賴一些特定解法了,反而讓自己的思考邏輯有點被侷限住,這也讓我有了ㄧ些反思。在談到最近在研究什麼新技術時,我隨口說出了最近在研究 React 的 source code,面試官聽到後就繼續問 React Fiber 的一些細節,這邊我完全在挖坑給自己跳,因為面試當下我開始看 source code 其實才過了一個禮拜,還停留在皮毛階段,這邊建議面試被問到最近在研究什麼,要回答一個自己在研究後比較有信心跟深入了解的題目。技術面試結束後接下來是與兩位技術主管的面談,這關因為分配的時間不多,所以也沒有特別聊到什麼,主要也是互相了解彼此,最後面試就在與人資的面試後結束了,一次面 4 個小時真的是有點超過負荷,到後面注意力都有點不集中了。不過還是透過面試學到挺多東西的。

大約在面談後兩個禮拜收到感謝信,因為是罐頭訊息所以也不知道確切原因,不過自己也沒有很意外,因為一開始 17 live 似乎就不太能接受欲聘的狀況,再加上面試當天自己也沒有表現特別突出,因此這個結果是在自己預料之內的,總之這次面試也是一個相當寶貴的經驗。

結論

雖然過去有蠻多實習的面試經驗的,不過透過這次求職過程才發現正職面試的不同,不論是責任感、人格特質與技術上的要求都比以往更加嚴苛。不過我覺得也正是因為面試才更知道自己的不足,每場面試下來我都有自己又更進步的感覺。也因為要找的是自己的第一份工作,需要謹慎選擇,花了很多時間思考什麼才是對自己最好的道路,才終於訂下自己的短期與長期目標,期許之後回過頭看自己,有穩定的朝自己設下的目標前進著。

在一切塵埃落定後,我才意識到自己已經不是學生了,雖然才畢業沒多久,但的確要步入一個完全不同的階段了,希望自己退伍後,能過快速適應職場生活,並保持自己的興趣與熱忱,持續發光發熱。

因為自己只是個剛要進入職場的菜鳥工程師,所以這篇文章除了紀錄性質以外,可能只能幫助到同樣也是剛要步入職場的新手工程師或是轉職者,也希望我們可以一起在這個有趣的領域裡闖蕩並成長成自己想要的樣子。

--

--