文章

2021 前端工程師面試心得

文章發表於

前言

哈囉,大家好,從大學時就開始從軟體社群獲取到非常多寶貴的資訊,也想趁這次的機會分享我在 2021 年底面試心得。

個人背景 & 求職目標

自己並非 CS 相關科系畢業的,更沒有參加過任何程式競賽,只是在大學時因緣際會下接觸到了程式,在此之後發現這就是自己的熱情所在,並且開始朝著成為工程師這條道路上前進。

背景: 財金相關科系畢業 / 2 年工作經驗 / 接觸程式至今 4 年

準備方向: HTML / CSS / JS / React Ecosystem / Leetcode 48 題 / Web Security

求職目標: 跨國合作機會 / 世界級產品 / 符合自己的團隊文化

語言能力: 其實自己英文不怎麼樣,就只是敢說而已,而在這次的面試過程中,就是努力的表達自己的想法,多數面試官也會有耐心的聽完,真的很感謝面試官們。

準備資源

  • https://javascript.info/

    整本書深入淺出,比起 YDKJS 我更喜歡這本書的解釋,作者用非常淺顯易動的詞彙講解 JS 的觀念,如果有不懂的觀念從這裡找準沒錯!

  • https://react.dev/

    老手新手皆宜,React 的官網,如果想要學習 React 第一站就是這裡,裡面有很多實用的範例以及教學。

  • https://www.patterns.dev/

    整本書有三章,第一章介紹基本常用的 Design Pattern,第二章則是介紹 Rendering Pattern,也是我認為最精彩的部分,同時也是面試最常被問到的,尤其現在 Next.js 當道,那為何要用 Next.js,而又怎麼從 JQuery,Backbone 時代到 CSR 在到現在的 SSG/SSR 中間的利與弊都在這裡可以看到。最後一章則是介紹效能優化。

  • https://bigfrontend.dev/

    Leetcode 不用說多少要刷一下,而這個是前端的 Leetcode, 建議可以從如何實作一些的原生 JS method 開始著手。

面試總覽

公司管道(D)結果時長英文
YahooHR 邀約一面後感謝信D+60P
FoodpandaHR 邀約HR call 後無回應NY
Dcard官網投遞後感謝信D+1N
OneDegree官網線上測驗後感謝信D+15N
PicCollage官網一面後感謝信D+11Y
BinanceHR 邀約Offer getD+23N
Appier內推Offer getD+38P
Houzz獵頭Offer getD+43Y
Shopback官網一面後感謝信D+30N
Line官網婉拒一面邀請D+41N

*Y - 全英文, P - 部分英文, N - 中文

此次的面試時間是在 2021 年 11 ~ 12 月之間,內容可能會隨著時間推移而過時,主要分享著重在於準備方式以及學習。

面試公司

Yahoo

  • 職缺

    Sr. Frontend Engineer, International Frontpage

  • 面試過程

    HR LinkedIn 邀約(D) -> HR call(D+6) -> 1st with TL (D+12) -> 感謝信(D+60)

  • 第一面 - TL

    流程: 自我介紹 -> 基礎前端問題 -> Q&A (1hr)

    英文自我介紹 / 過往經驗 / CSS / JS

  • 心得

    整體下來自己沒有表現得很好,但面試過程是舒服的,當有些基礎 JS 的問題答不出來時,面試官會講解一次其概念,也是學到了不少。

  • 結果

    感謝信

Foodpanda

  • 職缺

    Front-End Engineer

  • 面試過程

    HR LinkedIn 邀約(D) -> HR call (D+1)

  • 心得

    HR 透過 LinkedIn 聯繫,過程中皆是英文交流,面試流程大概是基本自介、聊過去的經驗最後 HR 則會簡單介紹 foodpanda 這家公司以及為什麼來台灣等等的資訊。

    由於是第一次全英文面試,有很多冗詞贅字導致沒有回答到重點,所以中間被打斷很多次。雖然整體面試體驗有點差,但覺得是自己表現太爛所導致。因為這場面試,讓我有抓到英文面試的感覺,也非常感謝 foodpanda 給我面試機會。

  • 結果

    HR 到最後說,會將我的履歷 forward 給 hiring manager, 但到現在還是無聲卡。

Binance

  • 職缺

    Front-End Developer

  • 面試過程 (*基本上 1 小時內就會知道結果)

    HR LinkedIn 邀約(D) -> 1st with RD (D+6) -> 2nd with RD (D+13) -> 3rd with HR (D+16) -> 4th with TL (D+20) -> offer call (D+23)

  • 第一面 - RD (CN)

    流程: 自我介紹 -> 技術面試 -> Q&A (1hr)

    問題: Web 優化 / React hooks / JavaScript

    註: 比較特別的是面試完後,該面試官還有透過 HR 給我 feedback。

  • 第二面 - RD (TW)

    流程: 自我介紹 -> 技術面試 -> Q&A (1hr)

    問題: Promise / React&Redux / JavaScript / 過往經驗

  • 第三面 - TL (TW)

    流程: 技術面試 + Behavior questions -> Q&A (1hr)

    問題: 網頁優化 / 過往經驗 / Behavior questions

  • 小結

    問題通常是由淺入深,所以就不多著墨於問了什麼,值得一提的是, Binance 面試流程是非常有效率,體驗也很不錯。

    而主管跟裡面員工也不吝於分享他們的經驗,也很感謝他們給我的職涯建議。

  • 結果

    Offer get

Appier

  • 職缺

    Front-End Developer

  • 面試過程 (*面試後基本上 1 天就會知道結果)

    朋友內推(D) -> 1st with RDs (D+10) -> 2nd with PL/VP/CTO (D+17) -> 3rd with CEO (D+21) -> offer conversation (D+22) -> offer call (D+31)

  • 第一面 - RD* 5

    流程: 自我介紹 -> 輪流提問 -> 技術面試 -> Q&A (2.5 hr)

    問題: 過往經驗 / 兩題線上實作 (Promise & React)

  • 第二面 - Product Lead* 2 / VP / CTO

    每關流程: 自我介紹 -> Behavior questions -> Q&A (Total: 3.5 hr)

    根據你過去的經歷去提問以及各種 Behavior questions

  • 第三面 - CEO

    流程: Q&A (0.5 hr)

    這關基本上就是閒聊,整個過程算是非常愉快的。

  • 心得

    有些人可能會覺得 Appier 為什麼需要這麼多關卡,但自己面完後並不會覺得這是冗長不必要的,反而每一輪面試都讓我與 Team 有更多時間認識彼此,以及了解自己是否符合對方的文化。

    另外 Appier 是這幾間公司當中面試體驗最好的公司,從第一面與多位面試官 live coding 的氣氛以及跟各主管面試交流的過程中,感受到大家都是非常友善並且熱於分享經驗,收穫良多。公司方面也能感受到裡面的同事都非常有能力,並且薪資也是非常有競爭力的,個人認爲是一間非常不錯的公司!

  • 結果

    Offer get

Houzz

  • 職缺

    Front-End Software Engineer

  • 面試過程 (*面試後基本上 1~7 天內就會知道結果)

    獵頭 LinkedIn 邀約(D) -> 獵頭 call (D+8) -> 1st with RD (D+18) -> 2nd-1 with Engineer Manager, 2nd-2 with Engineer Manager (D+24) -> 3rd with Hiring Manager (D+39) -> offer call (D+43)

  • 第一面 - RD (JP)

    流程: 自我介紹 -> 技術面試 -> Q&A (1hr)

    問題: CSS Module vs CSS-in-JS / Code-Splitting / Reverse String

    註: 比較特別的是面試官有認真看過我的部落格,所以也互相討論了 Functional Programming 議題以及對將其引入到團隊看法,最後請我將 Reverse String 用 Functional Programming 改寫。

  • 第二面之一 - Engineering Manager (US)

    流程: 自我介紹 -> 技術面試 -> Q&A (1hr)

    自我介紹完與問一些問題後,就開始進入程式測驗。這關只有一題,類似實做 Promise.all + throttle 的 method。由於面試官一開始給的資訊偏少,所以我就先寫出如何使用該 method 以及寫出一個 test case,確認彼此是在同一個頻率後才開始實作。寫完後會問你哪裡可以優化以及再提出幾個 case 測試該的程式,之後就是 Q&A。

  • 第二面之二 - Engineering Manager (JP)

    流程: 自我介紹 -> 技術面試 -> Q&A (1hr)

    問題: String to Int

    一樣是先自我介紹完與問一些問題後,就開始進入程式測驗。整場面試非常好玩,感覺非常像是在 pair programming, 過程當中面試官會請你先寫 pseudo code, 然後去做時間複雜度分析,再來會問哪邊可以優化,直到面試官覺得我們在同一個頻率才會開始實作,中間也會來回討論以及給你 hint。是目前所有面試中最有趣的面試,也是面試完學到最多的一次面試。

  • 第三面 - Team Hiring Manager (US)

    流程: 介紹團隊 -> Q&A (1hr)

    這關基本上就是未來所屬 Team 的 Hiring Manager 聊天,交換彼此的想法,過程非常輕鬆愉快的,也更加確定這就是未來我想要進入的公司。

  • 結果

    Offer get

結論

其實一開始面試都非常挫折,第一輪投的前四家都吃了感謝信或是無聲卡,當時覺得自己沒準備好就裸辭換工作是不明智的抉擇。但還是只能回頭檢討自己,把自己的心態調整好,很幸運的是第二輪就有拿到一些 offer,而且也是自己喜歡的公司!

也很感謝前同事們在我氣餒時幫我一把,給了我勇氣!

最後想說的是,收到感謝信或無聲卡都沒關係,那都很正常。重要的是把心態調整好,努力準備自己,一定會有公司看上你!

如果您喜歡這篇文章,請點擊下方按鈕分享給更多人,這將是對筆者創作的最大支持和鼓勵。