2018 前端工程師面試心得
這是我在 2018 年 Q1 的求職面試心得,不算實習的話,就是第一次正式求職。記錄下來作爲人生里程碑,也分享給大家參考。
背景
森林系畢業,沒參與過任何資工必修課,是個大四才起步的自學傻子,啟蒙語言是 R。大四時協助教授建置 Linux server 並擔任 server admin。畢業前進入業界擔任 iOS 開發實習生,並在畢業後轉正職,2017 年 Q3 才開始全職開發前端工程。正職工作經驗約 1.5 年。
我的優勢是學習力旺盛、有 native app 開發經驗、熟悉且熱愛 Linux 和 command-line、熟悉電子書市場與相關技術、善於溝通傾聽而不堅持己見、喜愛分享所學所見。
我的劣勢是對 UI 較不在行、CS 知識不夠紮實、臨場反應不佳易緊張、沒有跑過真正的 TDD 和嚴謹的軟體開發流程。
希望我的背景能給同樣境遇的朋友一些參照。
求職需求
由於前東家是上櫃公司,規模不小,制度完善,但也稍缺彈性,所以求職希望以新創公司為主。
以下依優先順序排列,薪資等基本需求不列入:
- 新創團隊或具有新創氛圍
- 技術討論風氣盛。
- 有能力相仿或更強的 co-worker,不必自幹。
- 工作流程明確。
- 重視軟體品質(CI/CD、單元測試)。
- 同事年齡相近。
- 對社會有正面意義。
應徵企業列表
以下是這段時間我有去應徵的企業,如果你對細節沒興趣,可以直接 end。
CakeResume
- 職缺:全端工程師
- 應徵方式:使用 CakeResume 投遞 CakeResume 的履歷
若是近年來想求職的朋友,想必對 CakeResume 不陌生,CakeResume 是線上履歷編輯平臺,利用拖拉元件的方式,快速搭建個性履歷,並提供企業刊登職缺。
動機
會想應徵全端工程師是因在學期間協助實驗室架設 server 與 DB,對後端頗有興趣。看到 CakeResume 全端缺便躍躍欲試,自己對新創團隊的運作方式十分好奇,加上媒體轉載許多創辦人的創業過程分享,頓時熱血沸騰,從頭打造服務百萬用戶的機會實屬難得。
面試
面試地點是在 AppWorks 之初創投的空間,由於我是約週一晚間面試,因此只有創辦人來面試我,一問之下,才發現公司規模比想像中更迷你。面試內容不外乎自我介紹、作品展示等,並沒有技術考題。創辦人很善於傾聽,會順着你的話瞭解你的人格特質與能力,整體而言,面談十分舒服,相談甚歡。後來我們開始大談各種技術選型,因爲新創的緣故,目前是用開發較快的 Rails,比較缺乏大公司那種完整的 CI/CD 流程,我表達了工作的預期,雖然薪資與工作環境沒有符合我的需求,但感覺創辦人希望我能考慮考慮,或許是人格特質符合徵才需求吧!
結果
週末之前就收到回覆。美其名是錄取通知,其實比較類似邀請成爲夥伴,共同奮鬥打拚。當下其實滿兩難的,CakeResume 的理念很棒,創辦人很誠懇又熱情,甚至最後盡量將薪資拉近我的預期,但礙於我內心希望有 co-worker 共同討論成長,不希望完全自幹,所以就婉拒了,非常感謝創辦人的盛情邀約。
在面談中,創辦人有句話一直縈繞在我心中:「CakeResume 不是科技業求職平台,透過履歷編輯工具,協助相對資訊弱勢的其他族群曝光自己,展現他們的長才!」平臺上早有許多廚師、理髮師等各行各業的人使用履歷服務。如此崇高的理念,令我非常感動,也回憶起踏入軟體圈的初衷與期許。誠摯推薦大家使用分享 CakeResume 的服務!
Hahow 好學校
- 職缺:前端工程師
- 應徵方式:主動在 Hahow 官網投遞履歷
Hahow 是在華語市場頗爲知名的線上課程募資平臺,至今有幾十萬會員數與豐富多樣的線上課程。和其他平台的差異在於 Hahow 使用募資的方式,確保學生人數與課程品質,並提供同學與老師,還有同學間完善的交流與作業批改機制。
動機
應徵 Hahow 工程師並非偶然,早在 2017 Q3 就看到楚楚動人的徵才文,不過當時沒打算離職。爾後不久就讀到 Hahow 在他們的技術 Medium 上許多軟工與對軟體品質的分享,對於許多還在 rsync
tar
作部署備份的手動工程師,有如荒漠甘泉。 一月初偶然在 Facebook 上瞥見徵才貼文,期限只剩幾刻鐘,「此時不投,更待何時」。這時候你絕對會慶幸平常有整理履歷和 LinkedIn。
由於 Hahow 的面試流程較有意思,接下來以時序分段落介紹:
線上測驗
幾天後,收到 Hahow 的回覆,獲得第二階段線上測驗的門票,三十分鐘 3 題 JavaScript 演算法,用的是 RemoteInterview.io 平台。老實說我其實滿緊張的,LeetCode 刷得不多,又沒受過專業演算法訓練,甚至上機當天還在擔心 online editor 沒有 VIM keymap,還好平台編輯器使用 CodeMirror,沒有太奇怪的 keymap 設定,但也因此失去一些寶貴作答時間。
題目就是 LeetCode Easy 的程度,也有考到 closure 概念(有點忘了),不過實在是太緊張,有個基本到不行的 Dynamic Programming 題,寫到最後居然卡住,當時就覺得駭啊,只好繼續調 CodeMirror 的 VIM 設定放鬆心情。默默祈禱 Hahow 評分除了過測資,也會參考解題邏輯。
第一階段面試
幾天後,收到 on-site 面試邀約。面試官約莫 30 歲,是個略靦腆但好相處的人,一開始就介紹自己是四個 co-funder 之一,以三十人的小公司來說,不難想像面試都是 co-funder 自己來。同樣從背景,工作經歷問起,也有技術相關的討論,這時我才知道,原來 React + RxJS 早已滲透每個人心中,新創公司不是已經導入就是正在導入,Hahow 也不例外。突然話鋒一轉,面試官開始技術面試,主要是考觀念,例如 SPA 爲什麼流行?如何在 SPA 做 SEO 等等,必須「清楚理解每種技術的優劣」,並學會「在不同情境下選用適合的技術」。也有 JavaScript 必考題:Promise 與 callback 的比較,還好之前有認真研究 Promise。除此之外,少不了白板面試,題目是簡單的 array 題,只是腦袋突然打結,讓面試官撒泡尿才寫完。
接下來是求職者發問時間,我必問的問題之一是:「你如何得知今天該做什麼」,其實我並不在意團隊跑不跑 scrum 這種形式上的流程,只要有明確的任務管理,不會讓工程師閒着發呆,或是任意插件就很 OK 了,熱門的開發流程並不總是適合每個團隊。
由於是新創公司,我也詢問了公司目前資金與營運狀況,面試官也順便介紹了其他 co-funder 的背景,過程就像老友聊天一樣放鬆,一不小心面試就從九點聊到十二點,蠻不好意思的。
小專案
一面完,面試官告訴我有一個 mini project,主要是了解 coding style 和實際的能力,有辦法的話,可以嘗試使用一些 promising 的技術展現自己。其實做 mini project 的成本不低,不過我還是稍微花了心力,在週末趕完,程式碼在此,有興趣可以參考。個人認爲小專案不僅可體現實力,更是一個有條理地說明程式架構的機會,寫出讓人快速理解文件,反而比實作還燒腦啊!
幾天後,就收到回覆,Hahow 針對專案實作提了一些問題,我也簡單提供修正與改善的方法,就進入最後面試階段了。
第二階段面試
二面主要是看個人特質及目標與公司的契合度,面試官是兩個 co-funder,一個技術背景,另一個負責營運。同樣也是自我介紹,聊聊爲什麼想要和 Hahow 一起奮鬥,這部分與一面重複,不過有了前次經驗,這次嘗試抓住對方想聽的重點,也訓練自己在壓力下維持口條清晰。
由於前份工作也有教育相關的部分,我就開始針對 Hahow 的政策、理念和目標開始發問,再導引到自身擅長的領域。這邊就不諱言的舉個例子,Hahow 的理念固然是推廣教育,學那些學校不會教的事,但對於經濟弱勢的朋友,有些課程仍然負擔不起,有沒有解決辦法?其實這不只是 Hahow 的問題,坊間甚至整個國民教育,都有資源不均的情形,當我們揮舞著「唯有讀書高」的大旗,是否有些人根本無法心無旁騖地好好學習?
這次面試一不小心又談了兩個多小時,不過目前遇到的 3 個 co-funder 都很誠懇,也願意將許多營運面的狀況分享給我。傳說在 Hahow 的 slack 上,這些都是公開的祕密,也許所謂扁平化的管理就如斯。
結果
經過一番電話交涉,最終 Hahow 給了符合預期的 package,雖然過程有點冗長,仍然感謝 Hahow 如此器重我。
Hahow 非常注重學生老師互動,也有心推廣各式各樣的技能,而非獨尊程式設計。從 Hahow 的部落格 就可一窺這群文青多麼理想多麼可愛,希望看倌也能從 Hahow 豐富的課程中學到些什麼,翻轉臺灣金錢學歷至上的教育。
哦還有一點,Hahow 的男女比例很 OK。
Appier 沛星互動
- 職缺:前端工程師
- 應徵方式:主動在 Appier 官網投遞履歷 + 內部推薦
談到 Appier,應該無人不曉,被譽爲下個台機電,未來的新創獨角獸,全球百大 AI 企業。目前主要產品是 AI 廣告與跨螢追蹤等。客戶多是大型跨國企業。Appier 可謂近來最火熱的公司之一。
動機
很早就知道有前端缺,礙於自信不足,沒有嘗試,因緣際會下,朋友說有缺可以幫忙內推,加上很喜歡 JSDC 2017 兩位 Appier 講者給的 RxJS 與 FP 的演說,就主動循正常管道投遞履歷(原以為履歷直接交給朋友就行)。
第一階段面試
履歷過關後,便是第一次 on-site 面試,地點是在臺北信義區的總部內。我承認我是土包子,看到門禁設備像捷運一樣要領磁扣過閘門,開始懷疑走錯地方了。
- 工程師
這次面試共有三組人馬,第一組是兩位前端 leader,與前面兩間公司不同,很直接就切入技術層面,先是問選擇 Redux-Observable 實作 Hahow 小專案的理由(不是 Appier 面試嗎,怎麼問起 Hahow 來了呢?),蠻欣慰地是他們很用心看 GitHub 和作品集。接下來繼續追問 Observable 的概念,不知道哪根筋不對,我居然拿出筆電 demo 簡單的 Observable 實作。面試官就說:「既然拿出筆電了,那我們來從頭實作一個 Promise 吧!我跟你同時寫。」實作 promise 談何容易,雖然面試官不斷提點我方向,可惜最後只有半成品,還好實作方向正確。
這硬仗過後,便是口頭觀念問答:
- 原型鍊的觀念
- 解釋 CORS
- 爲什麼送 request 伺服器沒收到 cookies(因爲沒有加
withCredentials
) - 何謂 third-party cookies
感覺起來都是 tracking 或廣告常遇到的 issue,除了 CORS 最近實作 static file server 剛好有接觸,其他答得勉勉強強,不過面試官們很和善,也很願意聊技術,據說連 Reason 都進 production 了,果真玩很大!
2. PM
這關大概算是 PM 面試,一位漂亮的 PM 姐姐和 PCMan(沒錯,就是 PCMan),PM 姐姐講話條理分明,也很親切,主要詢問個人特質和溝通技巧,遇到難以溝通的情況會怎麼應對;輪到 PCMan 就毫不留情開了白板演算法,選擇一種語言寫實際程式碼。「API 忘記了就儘管問沒關係」PCMan 如是說。我當下居然沒選 JavaScript 而選擇許久沒碰的 Python,導致作答花了不少時間(應該要選 Rust 的)。題目雖不難,但 PCMan 會依循你的程式碼脈絡深入探討你怎麼分析複雜度,例如我提到 amortized analysis,PCMan 就順著追問平攤的算法與定義,甚至最後討論到 Python built-in function 實作上與 for-loop 解法的 memory allocation 比較,果然功力深不可測。
既然遇到 PCMan,我就順便問了一些 side project 遇到的疑惑,雖然沒有直接替我解惑,卻提點不少方向,讓我順利修正一些 issue,很高興能看見傳說中的人物。
3. 人資
人資姐姐這部分就比較輕鬆,是常見的人資問題,也閒聊在此工作的光景,但前面兩關耗時太多,早已超過下班時間,對姐姐挺不好意思,不敢聊太多。這邊要幫忙緩頰,我覺得不管是工程師、PM 還是 HR,每個人都非常友善,沒有鄉民口中的趾高氣昂,也許當事人才知道實情,別再任意散播啦。
第二階段面試
二面安排在週六上午,很神奇的時間,想必面試官是高階主管。
1. CTO
第一關是 CTO,風格獨特的技術人,先談談過去的經驗,而後從經驗延伸相關問題,大概如下:
- 爲什麼用 React,jQuery 不好嗎?
- 什麼是 closure?
- 什麼是 CORS?哪些請求需要開啟 CORS?
- 你說 JSONP 可以 cross origin,那怎麼實作 JSONP?
- 客戶說網頁跑很慢,你要怎麼檢測?
後來 CTO 似乎翻到我寫的「所謂最好的面試題」,
就拿來考,我有點太緊張,一直試圖回想自己寫了什麼,搞得答題像背答案,答得不盡理想。最後我問了公司未來的產品與規劃,當然沒辦法得知新產品的內容,但依稀聽得出來 Appier 不僅在廣告下足功夫,且將邁向下個階段了。
這邊平反一下,也許 CTO 面試時會打斷面試者說話,但通常都是離題或誤解才會出手。而且用心觀察,可以發現 CTO 只是說話急促,並非盛氣凌人,當天我有告知 CTO 他的語速過快,而他也有試圖慢下來講(雖然還是很快)。我認爲每個人的言談都自成風格,若不適可以當場提出,相信大多數人會試著改善,事後發文抨擊對事情無益。
2. CEO/COO
CEO 和 COO 這一關偏向人格特質,先是問了離職原因,我說想找年齡相近的 co-worker,CEO 馬上笑笑地說自己很老要被淘汰了,我趕緊補上說因爲前同事都生小孩去了,COO 接著說我才剛生完小孩呢!這下慘了,馬上踩了兩個雷。之後不免俗地問了自認為的優缺點,對自己的期許,以及生涯規劃。我也提問了公司目前最大的困難是什麼?答案不是資金而是跨國溝通,蠻令人訝異的,但也由此得知 Appier 已經走過新創風險最高的那里路。
不論是 CTO、CEO 還是 COO,身爲公司的領導人物,卻沒有一絲高姿態,也願意親自面試工程師,尊重每位面試者,難能可貴,大家別在捕風捉影啦。
結果
錄取。縱使整個過程有個人特殊狀況,仍感謝 Appier 各位大大協助我排除,讓我可以很放心的面試。Appier 真的高手如雲,能在這邊工作學習絕對進步神速。
一些想法
原本想要分享一些面試準備方式,但發現自己沒有依循特定模式準備,LeetCode 也很偶爾刷一刷,而且四處都有大神分享如何拿到 FLAG 或 BAT offer 的文章,我就不誤人子弟了。
從 3 人剛孵化的團隊,到 30 人逐漸穩定的熱血新創,面試到近 300 個員工的未來獨角獸。每一個創業階段都經歷過,會看到起步期趕著做出 MVP 證明理念,初期商業模式與理想的拉鋸,到擴張期捨我其誰的傲氣,甚是有趣。雖然自己沒能力領導團隊,有幸身在其中參與面試也滿足了。
一連串的面試下來,我覺得最有價值的是「了解自己」,爲了面試,你必須定期整理自己的履歷,反省自己的長處與缺點,並檢視這段歲月究竟成長多少。有時候我們會汲汲營營薪資福利,但機運勉強不來,寶貴的面試經驗才是你最可靠的財富。失敗了,就過半年一年再投一次吧!
我最喜歡問面試官:「你喜歡在這裡工作嗎?」很多時候,得到的是意味深長的微笑,我依稀記得以前部門主管的一席話:「工作不是人生的目標,卻占了一半的人生,學習與之共處才能快樂工作。」工作當然有愉快也有不爽,不過,在臺灣這種低薪、高工時、職場霸凌嚴重、勞權低落的就業環境,除了想辦法讓慣老闆無所遁形外,也別忘了鼓勵那些願意照顧員工,讓員工快樂工作的優良企業。
最後,堅持初衷,擇你所愛,選了就不要後悔。
祝福各位都能找到理想中的工作!