前端面試心得文 — 2020

Louis
6 min readJan 20, 2021

前言

基於最近有幸獲得海外職位,分享一下面試心路歷程,可能沒什麼參考性(?
把到處撞牆的路程分享給大家,被拒絕跟無聲卡的族繁不及記載,這邊只列出比較有印象跟有收穫的

背景

待過兩家新創公司,人數少於 20人,職務內容專注大多在於 Web 前端開發,有觸及少量後端。

Binance — LinkedIn 投遞

流程:只走到二面

一二面都是技術考題,會請你 Live Coding,會問很多大量 React 相關的問題,像是 memo vs useMemo,其中有一題是想問 createPortal,但我沒用過,這過程有點小鬼打牆,我想確認他的實際需求來去解決,就問說什麼情況會有這種需要,然後考官就說他是要問 createPortal,就跳過了 XD。然後問說能不能 implement 一個簡單的 React.lazy,沒寫出來,只大概提一下概念。

二面考了一個演算法,也是花了一段時間確認需求,只寫出暴力解,但考官希望時間複雜度要更好,最後無聲卡,也就是從這裡開始我自己又回去複習一些演算法的基礎知識 XD。

比如說像是 DFS, DFS 這種入門演算法應用

Positive Grid — (朋友內推)

流程:一面遠端技術考試,二面主管面試,三面CEO

第一階段- 實作白板題,二選一

一個跟 Promise 有關,一個是考 DOM 相關的事件操作。

我選了 Promise 那個,整體來說就是要符合題目需求並滿足寫好的 test 就算過關,解題過程中我習慣先解釋說我要怎麼做,預期達到什麼結果,然後開始實作,但想當然爾,莫非定律,沒有一次通過這種好事,結果一寫完就壞掉 XD,我當下就說了一下我要怎麼去 Debug,然後一步步完成,結果好像解得不算慢,還有時間,考官問我要不要寫另外一題,不寫也沒關係,我想說題目頗有趣,不然寫看看。

結果一度卡住 XD,不過過程是開放 google 的,所以我都會說我現在哪裏卡住,我要去 MDN 找什麼需要的資訊,幫助我接下來的實作這樣,最後時間關係這個沒寫完(但解得差不多)。

第二階段- 考實作CSS

考官會給你一個模板,還有需求,請你在只能改 css 的情況去滿足需求,也不是太難,就是常見的一些對齊置中等等的東西,應該只是想知道你對這些基本的用法熟不熟悉。

寫完之後,考官會問你你寫得東西會達到什麼效果,為什麼選擇這個,改別的會發生什麼事情,這邊可以解讀成,你知不知道你宣告的語法代表什麼意義,還是你只是隨便複製貼上。

最後第三階段 - 技術觀念問答

這邊考了很多 JS, React 以及一些 web fundamental 的知識,有興趣可以把 google 的文章肝起來。

二面的時候是各部門主管面試,會有 Marketing 跟 Manager 面試,簡介一下自己後會問一些過往經歷,還有工作上的意見交流,這部分主要就是做各種角度的評估適不適合一起工作,像是遇到問題通常是怎麼解決的。

三面CEO,主要是聊天, 簡單自介後,CEO 會針對個人背景問一些問題,然後接著換我提問,這邊印象很深刻的部分是 CEO 特別針對新創常常遇到的一些狀況做一些分享,比如說大部分的小公司在初始階段常常會遇到需求的不確定性,這種時候公司員工對於 Navigate 的能力會比 Execute 能力還來的更為重要,把事情依照 Spec 一五一十的達成已經不是最重要的事情,同時還要不斷反思是不是有朝著預期的方向去靠近,這部分給了我很大的反思。

結果: Offer Get

ByteDance 新加坡— LinkedIn 收到邀請

流程: 三關技術面談,最後HR面談

前兩關著重在 Live Coding,會考一些簡單的演算法,並同時根據經歷回答問題,演算法一直不算是我的強項,平常很少像網路上的大神一樣刷爆 Leet Code,這部分考的時候我是有點一度卡住,但我通常就是跟考官解釋我對於題目的理解,我現在有什麼想法,要做些什麼事情,然後慢慢寫這樣,我覺得就是不斷的溝通。

除了演算法之外會問很多大量跟經歷有關的問題,為什麼這麼做,你怎麼做決定的,這樣做有什麼理由,你預期達到什麼事情,你知道背後的行為是什麼嗎,不外乎就是 Why, How, What 。

第三關是主管面試,到這裡就沒有考 Live Coding了,這部分則是問了大量 Lazy Loading 相關的問題。

最後 HR 面談的時候會問一些 General Questions,主要是了解你這個人,並問一下你有沒有薪資期待,順便了解一下你英文的程度。

只有這關是幾乎全英文溝通,前三關考官都是用中文溝通。

結果: Offer Get

必要的結尾 (淦話)

自己跟網上很多大神還差得很遠,但不斷碰壁的過程中,我是一直不斷調整心態,開始去花很多時間了解 Open Source 的內容,並補充複習一些曾經學過但幾乎不記得的東西,盡量去減少黑盒子的狀況,一方面也能從別人的 Code 長長知識。

還記得一個可敬的前輩曾經叮囑我:

『你就是需要再追根究底一點,不然怎麼彰顯你的價值』

正如我思故我在嘛,沒有思考的 Code,怎麼會有靈魂呢

希望弱弱的心得能夠帶來幫助 <(_ _)>

--

--