DnD-mag / magazine

magazine
3 stars 0 forks source link

前端面試總結 #8

Closed kjj6198 closed 7 years ago

kjj6198 commented 7 years ago
  1. Accupass
  2. Codementor
  3. Linker Network Inc.
  4. 樂天市場
  5. 17 media
kjj6198 commented 7 years ago

終於有時間整理最近的面試歷程了。先總結一些看到的事情:

  1. 通常公司面試只考 Javascript 的熟悉度,多數關於演算法或是解釋原型鍊等等,很少考 DOM 或是 Event 的操作
  2. 幾乎不考 CSS,就算有也只是簡單判斷 class, ID 優先度這種基本題目而已
  3. 沒有面試考 HTML,例如 semantic tag, accessilbility, input type 使用等等。
  4. React, Redux, ES6 語法幾乎成為前端必備技能。

1. Accupass 活動通

一個活動票券的網站,最近正在將架構從 Angular 改寫為 React,原因是原本的 Angular 較難維護,而且很容易產生牽一髮動全身的情形。

面試前

在 104 上被邀約面試。是由 PM 邀約面試的。

面試中

團隊正在擴編。面試主要聊一些自己的工作經驗以及一些小項目。當天面試我的前端工程師是一位日本人XD,但是中文講得很好(全程都是中文面試)。

聊了關於 Accupass 的開發狀況、如何開發功能、管理時程等等,也和前端工程師聊技術,從 CSSModules, RxJS 聊到 CycleJS,感覺是個對前端技術很有熱忱的工程師。

面試後

婉拒 offer。PM 相當希望我能夠加入 Accupass 團隊,婉拒後也撥了通電話詢問原因,並提及如果以後有機會希望能夠一起合作。不過由於其他職位更吸引我,所以拒絕了 Accupass 的 offer。

2. Linker Network Inc. 美商寶蘊凌科網路科技有限公司

專門做 IOT、AI、機器學習的雲端運算平台,因為這些 platform 需要 UI 的支持,所以需要前端工程師。

面試前

在 104 上主動投遞履歷,被電話邀請面試。這間公司做的技術含量很深,也有在線下辦一些社群。

面試中

感覺得出來是個蠻技術含量很紮實的公司。自我介紹談了一下過去的工作經驗,以及用 React, Redux。

我之後才知道原來當初面試我的是 @c9s,想說怎麼那麼眼熟。感覺得出來是位大大,技術的掌握度很深。

面試時考了些偏優化的題目

  1. js 如何做 minify?

    這題是要你大概解釋一下 js minify 的過程,最後簡化到如何消除程式碼中不必要的空白。這題的想法很簡單,不過實作起來有一些細節要注意,當時沒有想很多,被提示很多次才寫出來

  2. 前端效能優化可以怎麼做?

    提了一些常見的方式,不過感覺沒有很合面試官的胃口。像是 base64 編碼減少請求數、快取、ServiceWorker 等等。

  3. 如果要你做一個 SPA 的 framework,你會怎麼做?

    如果要我做,首先要考慮的是 router 的處理方式,畢竟 SPA 需要依靠前端做 router。後來被提醒了還要考慮 lifecycle 的問題

  4. 一些 Javascript 的問題

    1. 原形鍊的原理
    2. new 背後發生了什麼事?
    3. 如何實作繼承
    4. this 指向誰

最後由一位看起來是主管的人跟我談一些公司現況、未來發展等等。

面試後

無聲卡(三週),大概是太菜了吧QQ

3. 台灣樂天市場

之前有參加過一次面試,不過因為沒辦法提供全職的上班時間(也不確定是不是)。所以重新又投了一次。就...眾所皆知的電商。

面試前

HR 聯絡,寄給我一張身家調查表以及程式考題。上頭的格式大概跟 104 履歷差不多。這邊我想特別講一下他們的面試邀約信。

一般的公司通常在信上附上地址,不過樂天市場會把一些重要的地標標示出來,例如 XX 號出口、在 XX 銀行上面、出電梯右轉等等,雖然這是一個微不足道的提醒,但對面試者來說很有用,畢竟誰都不想在大太陽底下看 google map 還不小心走反方向。

面試中

這次的面試比起以前好像又更制式一些,還要寫智力測驗跟人格測驗的考卷,考一些類似加減乘除之類的題目,我好像還錯了幾題XD。整個面試流程又因為這樣拉長了一些時間

不過跟工程師面試的過程蠻愉快的,主要也是聊一些工作經驗以及對技術的了解,兩位工程師感覺也是技術很強的大大。後來我還發現原來有一位就是 react-bootstrap 的 creator。

考了一些 Javascript 的東西,像是:

  1. 遞迴,以及實際應用

  2. 閉包與實際開發的應用

  3. IIFE(立即執行函式) 的好處

    我舉了幾個例子,不過後來一位工程師跟我分享 jQuery 的原始碼,說用 IIFE 的方式也可以有效幫助 minify(因為把 window 參數化了)

  4. React, Redux 的開發場景應用

之後問了一些比較工程化的問題,像是 CI/CD、如何跑開發流程等等,樂天市場的技術線蠻多的,Angular, React, RoR, GraphQL 都有。

面試後

因為還是資格不符,所以基本上應該是被淘汰。不過兩位工程師很友善,結束時還請我喝了一杯飲料(雖然是公司的販賣機啦XD)。

4. Codementor

做一對一的線上 mentor 的服務。衍伸出來許多服務,像是線上 code review、debug、pair programming 等等。

面試前

因為技術含量高,而且面對的對象又是工程師,想說是個很好練功的地方,在 104 上投遞履歷,隔天收到 HR 線上面試邀請。我還蠻喜歡線上面試的,不用額外跑到公司一趟對工程師來說實在是一大福音啊!

面試中

第一階段—工程師面試

跟 team lead 面試,聊一些過去的工作經驗,問了一些開發上的問題。口頭考了一些 javascript 跟 react 的理解

  1. 閉包

  2. flux v.s MVC 解決了什麼問題 老實說我沒有實際用過 flux,只有看過架構圖跟 code 而已。所以只能靠自己的理解來回答。

  3. javascript 是如何做到非同步的?

    談對 call stack 跟 event loop 的理解

第二階段—co-founder 面試

一樣在線上跟 co-founder 聊天。對於技術的部分反而比較少提,自我介紹完了之後,他對我的一個 side project 好像很有興趣XD,問我當初成立的動機以及為什麼沒有把它變成完整的服務。有好一段時間都在談這個小專案。

後來問了一些 code mentor 的歷史以及一些團隊文化。總共約 30-40 分鐘左右

第三階段—CEO 面試

CEO 人在 California,一樣在線上面試。也是聊一些自己的工作內容跟開發經驗,同樣也是問一些關於人格特質的問題。應該是希望從對談當中聊聊彼此之間的契合程度吧!總共也是約 30-40 分鐘左右。

因為 code mentor 的 co-founder 以及 CEO 都是工程師出身,聊起來相當愉快,不會有種從上往下看你的感覺。

面試後

約五天後被婉拒,公司希望找到更 senior 的人

5. 17 media

這應該是我目前面試過最愉快的一間公司。從 f2e jobs 上看到徵才資訊,一直猶豫要不要投履歷,後來是朋友推薦後獲得面試邀約。

面試中

因為 team lead 是用下班時間面試 18:30。我很準時到達辦公室,team lead 也很準時出現在辦公室。這點讓我很欣賞。

有些公司因為不確定面試者什麼時候來,所以多數都是工程師還在工作的狀態下突然被通知要面試才匆匆忙忙準備相關資料,或者臨時看一下履歷表。問了一下目前到現在面試幾個人了,他還特地秀出 slack 的訊息,還順便註記了幾個人遲到。是個相當重視時間的人。

剛開始先由 HR 帶領晃過公司一圈。辦公室挺大的,零食櫃跟冰箱很猛,還有咖啡機、咖啡豆、微波爐等器具,聽說 RD team 還有另外一間辦公室,不過當天去的情況看來還是有點擠。

再來是 team lead 面試,首先先自我介紹跟講一些工作經驗。

一邊聊一邊帶到目前公司、團隊的狀況。感覺起來是個蠻保護團隊的人。之後就是 live coding 了,為了模擬真實的情況,所以不會斷網路,主要考一些 javascript 常見開發應用跟 built-in function 的實作。

寫出來之後,team lead 就會從你寫的 code 當中開始討論技術。像是這邊為什麼要這樣寫,有沒有更好的寫法等等,他花了很多時間在討論、問問題以及提出自己對這段 code 的意見,感覺就像實際在 code review 一樣。這邊也花了最久時間,大概也有 1.5hr 左右吧。

最後會給你一段髒髒的程式碼要你做 code review 跟解 bug,一起討論完之後,面試就結束了。

他給我幾個感覺:

  1. 真實:不會隱瞞公司的狀況,讓你進來後覺得被騙。而且過程中不經意會講一些工作上遇到的無奈與感嘆XD
  2. 真誠:不會用很奇怪的考題來電人,還會跟你一起討論 code quality、這段 code 要如何改進。這在面試當中是一件相當難得的事情。再來我跟他提到因為辦公室太大讓我不知道一進門要找誰時,他說會再反映給 HR。原本我以為他只是說說而已(畢竟大部分的公司也都是聽聽而已),沒想到他真的有跟 HR 反應,讓我非常感動。

面試後

offer get。HR 打電話來說明 on board 相關流程。

心得

履歷準備:

因為我平常就有寫 medium 跟部落格的習慣,履歷表就能順便放進去。github 算是工程師必備的,面試官可能會點進去看看你的 repo 以及 contributions,或是看看你的專案裡頭的 coding style。是個相當準確的判斷標準。

工作經驗:

工作經驗並不是把公司名稱、職稱、年資寫進去而已,你負責哪些工作內容,在公司做了什麼事情都值得寫進去,面試官也很可能從你的描述裡頭再繼續深入下去。

作品集:

除了工作以外,如果有自己的 side project 就更好了。可以讓面試官知道你喜歡的領域以及技術線,而且每個專案當中一定會有一些特定的問題是困擾你很久或是花了許多時間解決的。

其他

像是語言測驗、其他技能,都可以放進去履歷當中,雖然測驗並不一定完全能呈現一個人的語言能力。

通常我都會問一些公司內部的問題,像是:

  1. 有沒有自動化?

    很多公司都還是土炮手動 SSH 登入部署。這種開發方式很可能間接一步反映到公司文化上,例如:申請預算流程繁瑣、對能夠自動化的東西視若無睹。

  2. 如何解決 bug?

    解決 bug 的方式可以看出公司如何排程。例如 bug 怎麼被回報的、誰來決定 bug 的優先度等等,通常從對方的回答就能判斷他們是否有一套規範來決定如何排程的

  3. 需求是否常常變動?

    從需求變動這個問題來看可以從很多角度切入,什麼是常常變動?在什麼時候變動?怎樣才叫做變動?

    這時候就能看出這間公司是否會出現明明開發時說 A,結果交差卻說 B 的情形了。

接下來就是從這上面延伸出來的回答繼續追問。面試應該是個你來我往的雙向溝通,而不是一場你問我答的標準流程而已,知道如何反問對方,也能夠增加你對公司的了解程度。