本文轉載來自 Weihang Lo 的文章 2018 前端工程師面試心得,該文章以 『CC 創用 姓名標示─非商業性─相同方式分享』授權發佈
文/由 EricHaze 授權轉載,並同意修訂標題
圖/編輯組合。
這是我在 2018 年 Q1 的求職面試心得,不算實習的話,就是第一次正式求職。記錄下來作爲人生里程碑,也分享給大家參考。
森林系畢業,沒參與過任何資工必修課,是個大四才起步的自學傻子,啟蒙語言是 R。大四時協助教授建置 Linux server 並擔任 server admin。畢業前進入業界擔任 iOS 開發實習生,並在畢業後轉正職,2017 年 Q3 才開始全職開發前端工程。正職工作經驗約 1.5 年。
我的優勢是學習力旺盛、有 native app 開發經驗、熟悉且熱愛 Linux 和 command-line、熟悉電子書市場與相關技術、善於溝通傾聽而不堅持己見、喜愛分享所學所見。
我的劣勢是對 UI 較不在行、CS 知識不夠紮實、臨場反應不佳易緊張、沒有跑過真正的 TDD 和嚴謹的軟體開發流程。
希望我的背景能給同樣境遇的朋友一些參照。
由於前東家是上櫃公司,規模不小,制度完善,但也稍缺彈性,所以求職希望以新創公司為主。
以下依優先順序排列,薪資等基本需求不列入:
以下是這段時間我有去應徵的企業,如果你對細節沒興趣,可以直接 end。
若是近年來想求職的朋友,想必對 CakeResume 不陌生,CakeResume 是線上履歷編輯平臺,利用拖拉元件的方式,快速搭建個性履歷,並提供企業刊登職缺。
會想應徵全端工程師是因在學期間協助實驗室架設 server 與 DB,對後端頗有興趣。看到 CakeResume 全端缺便躍躍欲試,自己對新創團隊的運作方式十分好奇,加上媒體轉載許多創辦人的創業過程分享,頓時熱血沸騰,從頭打造服務百萬用戶的機會實屬難得。
面試地點是在 AppWorks 之初創投的空間,由於我是約週一晚間面試,因此只有創辦人來面試我,一問之下,才發現公司規模比想像中更迷你。面試內容不外乎自我介紹、作品展示等,並沒有技術考題。創辦人很善於傾聽,會順着你的話瞭解你的人格特質與能力,整體而言,面談十分舒服,相談甚歡。
後來我們開始大談各種技術選型,因爲新創的緣故,目前是用開發較快的 Rails,比較缺乏大公司那種完整的 CI/CD 流程,我表達了工作的預期,雖然薪資與工作環境沒有符合我的需求,但感覺創辦人希望我能考慮考慮,或許是人格特質符合徵才需求吧!
週末之前就收到回覆。美其名是錄取通知,其實比較類似邀請成爲夥伴,共同奮鬥打拚。當下其實滿兩難的,CakeResume 的理念很棒,創辦人很誠懇又熱情,甚至最後盡量將薪資拉近我的預期,但礙於我內心希望有 co-worker 共同討論成長,不希望完全自幹,所以就婉拒了,非常感謝創辦人的盛情邀約。
在面談中,創辦人有句話一直縈繞在我心中:「CakeResume 不是科技業求職平台,透過履歷編輯工具,協助相對資訊弱勢的其他族群曝光自己,展現他們的長才!」平臺上早有許多廚師、理髮師等各行各業的人使用履歷服務。如此崇高的理念,令我非常感動,也回憶起踏入軟體圈的初衷與期許。誠摯推薦大家使用分享 CakeResume 的服務!
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,應該無人不曉,被譽爲下個台機電,未來的新創獨角獸,全球百大 AI 企業。目前主要產品是 AI 廣告與跨螢追蹤等。客戶多是大型跨國企業。Appier 可謂近來最火熱的公司之一。
很早就知道有前端缺,礙於自信不足,沒有嘗試,因緣際會下,朋友說有缺可以幫忙內推,加上很喜歡 JSDC 2017 兩位 Appier 講者給的 RxJS 與 FP 的演說,就主動循正常管道投遞履歷(原以為履歷直接交給朋友就行)。
履歷過關後,便是第一次 on-site 面試,地點是在臺北信義區的總部內。我承認我是土包子,看到門禁設備像捷運一樣要領磁扣過閘門,開始懷疑走錯地方了。
1.工程師
這次面試共有三組人馬,第一組是兩位前端 leader,與前面兩間公司不同,很直接就切入技術層面,先是問選擇 Redux-Observable 實作 Hahow 小專案的理由(不是 Appier 面試嗎,怎麼問起 Hahow 來了呢?),蠻欣慰地是他們很用心看 GitHub 和作品集。接下來繼續追問 Observable 的概念,不知道哪根筋不對,我居然拿出筆電 demo 簡單的 Observable 實作。面試官就說:「既然拿出筆電了,那我們來從頭實作一個 Promise 吧!我跟你同時寫。」實作 promise 談何容易,雖然面試官不斷提點我方向,可惜最後只有半成品,還好實作方向正確。
這硬仗過後,便是口頭觀念問答:
感覺起來都是 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,風格獨特的技術人,先談談過去的經驗,而後從經驗延伸相關問題,大概如下:
後來 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 證明理念,初期商業模式與理想的拉鋸,到擴張期捨我其誰的傲氣,甚是有趣。雖然自己沒能力領導團隊,有幸身在其中參與面試也滿足了。
一連串的面試下來,我覺得最有價值的是「了解自己」,爲了面試,你必須定期整理自己的履歷,反省自己的長處與缺點,並檢視這段歲月究竟成長多少。有時候我們會汲汲營營薪資福利,但機運勉強不來,寶貴的面試經驗才是你最可靠的財富。失敗了,就過半年一年再投一次吧!
我最喜歡問面試官:「你喜歡在這裡工作嗎?」很多時候,得到的是意味深長的微笑,我依稀記得以前部門主管的一席話:「工作不是人生的目標,卻占了一半的人生,學習與之共處才能快樂工作。」工作當然有愉快也有不爽,不過,在臺灣這種低薪、高工時、職場霸凌嚴重、勞權低落的就業環境,除了想辦法讓慣老闆無所遁形外,也別忘了鼓勵那些願意照顧員工,讓員工快樂工作的優良企業。
最後,堅持初衷,擇你所愛,選了就不要後悔。祝福各位都能找到理想中的工作!