面試問答
實作 array shuffle
跑一個 for 拿 ...
實體面試前有跟 HR 聊一下這職缺,以及接下來的流程,會需要做份作業,給了一週多的時間,共四題:
- 第一題:對題目裡
的 code 做 review 並給出想法。
- 第二題:做出一個計時器顯示隨機數,每秒會執行一次,但每五秒才會更新隨機數,所以 1-5 秒一個固定值,6-10 秒新的值。
- 第三題:程式會 fetch 一個列表,拿到 1000 個 id,並再 fetch 這 1000 個 id 的 detail 資料,然後 render UI 在畫面上,但一次 render 這 1000 個會非常 lag,需要優化它。
- 第四題:做一個選擇比賽博弈的畫面,每個比賽有主場、客場、平手可以選,左下角顯示選擇後的賠率,若一場比賽有多個選擇則需要變成互斥的 UI,左下角賠率變成 range。
提交作業後大概兩週工作天收到下階段面試邀請。
第二階段共有兩個辦公室要跑,共有四個 team 要面,上午一個,下午三個。
上午:
只有一個小時,三個面試官,都是前端。
一開始不是自我介紹,而是直接討論作業題目,每一題都要解釋你寫了什麼、解題思路,過程中會問為什麼會這樣寫、若遇到什麼樣的情境會怎麼改,很像一般團隊在會議 code review 那樣,故需要清楚知道自己寫了什麼。
後來面試官開始說明他們 team 在做什麼,以及目前用的技術有哪些。
整體氛圍不錯,不會有感覺哪位站在高點在面試你的樣子。
下午:
三個 team 輪流進來,每輪都是三個面試官,都是前端,三個 team 的面試流程都滿像的,過程都有介紹他們 team 是做什麼的,然後請面試者自我介紹,之後開始做技術考核,題目有:
- 給一段有同步和非同步的 log,說明順序
- 實作 array shuffle
- 實作 array group
- 實作 get function
- 實作 object flatten
- 實作 Promise.all
- 實作 Promise.race
- 一個 function 接受一個參數,該參數的型別該怎麼寫才能限制是某個 object 才有的 key
- 實作一個將 interface/type 的 key 全轉為 optional 的 utility
- 實作一個能取得一個 object key 的 utility
- 實作一個能取得一個 object value 的 utility
- 給一個 function,讓其 this 印出預期的值
- 實作兩秒內點擊一個按鈕五下時顯示一個隱藏的 UI
- 給一個 input,用戶會在該輸入框輸入 1~50 之間共 5 個不重複的數字,並用逗號 (“,”) 隔開,當按下按鈕時該如何檢查輸入是否符合規格?
- 一個 function 給兩個皆是陣列的參數,一個是 raw data,另一個是希望排列的順序,實作這個 function
- 延上,該 function 的 worst 和 average 時間複雜度是多少
- 若有一組上萬筆的資料要做計算,會怎麼處理?
- Vue2 和 Vue3 差異?
- Vue 和 React 差異?
- 新專案怎麼做技術選型?
- 目前為止最引以為傲的專案是哪個?為什麼?
- 優化都做了什麼事?
考完後都是 QA 時間
三個 team 都結束後 HR 會進來,詢問這四個中意哪個 team,後來問目前待的公司有多少人、幾個 FE、職等怎麼區分、績效考核怎麼做,然後說明他們這兩個辦公室績效考核會做什麼、獎金等等說明。
最後是 QA,以及說明接下來會判斷是否發 offer,流程會如何。
面試問答
實作 array shuffle
跑一個 for 拿 index 去做 random 取隨機數,再對陣列做交換
實作 array group
陣列跑 reduce 去搜集值
面試建議
面試中的考題風格偏向八股題類型,一些經典的 promise 實作和 lodash 實作,很吃硬實力。
但現在有 AI 所以只要知道大概實作內容如何,寫不寫得出來倒是其次。