folder_open

面試雜記

arrow_right
article

面試心得–Wearisma偀向軟體

面試心得–Wearisma偀向軟體

2018/01/26~2018/02/28【全端工程師】未錄取

第一次知道Wearisma這家公司是因為實驗室帶我的博班學姊向我推銷,說她有個學妹在裡面(其實也是我的學姊),所以我剛好有機會內推賺到面試機會。完整的職缺要求和公司簡介在PTT徵才原文「[徵才] 偀向軟體Wearisma徵全端工程師(70~90k)open_in_new」中都有提及了,是一間英國公司,2018/03要在台灣設立總部,所以目前極力徵才中,雖然優先尋找一個月內可以onboard的資深的工程師,但像我這種菜逼八也是會給予面試機會,未來有junior的職缺可能也能進吧!

職缺介紹

#

應徵的是全端工程師,基本要求如下:

  • 資訊工程背景相關系所畢業,3年以上工作經驗
  • 良好的英語會話與表達溝通能力及傑出的團隊合作
  • 與國外同仁開會時,能接受彈性上班時間 (例如:12PM - 8PM/每週1~2天)
  • 致力於撰寫簡潔有效率、可讀性高、易於維護及測試的程式

第一輪面試過程(英文視訊面試)

#

面試前有信件提醒面試過程約20~25分鐘,前後分為兩部份。面試官大約在面試開始前一刻加我skype,然後用訊息告知即將撥打通話,接通後會簡單問候,然後說明稍後的面試流程。

自我介紹

#

首先是簡單自我介紹,我說明自己是主修資工,研究所的方向是ML相關,未來想成為一位全端工程師,平時會做一些Side Projects來娛樂一下,面試官這時候感到興趣,請我挑一個Side Project來介紹,我就提供了SomeGuy的網址給他,我一邊說明,面試官也一邊詢問使用了什麼技術。

研究內容

#

接著她表示對我的研究非常有興趣,也想瞭解(畢竟徵才文中就有提及要做ML相關的工作),我也簡單介紹了自己做的研究方向還有使用的技術,接著被問到我的研究有什麼樣的Challenge,我就繼續順著問題補充說明,算是勉強過關。

知道Wearisma在做什麼嗎?為何應徵?

#

其實在面試前有翻過Wearisma官方網站,但還是看不懂網站上的介紹,所以面試官向我詳盡地介紹了一次Wearisma是什麼樣的公司,至於為何應徵的這題我倒是沒有太多想法,就回說想當個Web Developer。聽完面試官講解後,我對於Wearisma的理解如下,給大家參考參考:

Wearisma是一間軟體公司,提供一個平台來媒合品牌(Brand)與追蹤者(Influencer),但主要客戶是品牌,Wearisma會從追蹤者的社群網路中蒐集資料,運用資料分析技術將結果匯報給品牌,作為行銷(Marketing)的依據。

Technical Task

#

題目長這樣:

Given a string with left and right parentheses, how you verify the string is valid (balanced) Ex. ((())()()()) -> Valid, ()) → Invalid

一開始我覺得這問題很適合使用Stack來進行運算,解釋完想法後面試官送了這個case過來,我也理解這樣子Stack在Empty時會發生問題,就改用Counter計算括號的方式重新說明新的作法與思路,然後又再一次被這個special case考倒,於是我又想了新的方法,面試官最後才放過我XD

中文問答

#

問完Technical Task後,面試還剩最後3分鐘,面試官也知道我英文頗爛,就特例跟我用中文對談了(面試官也是台灣人),大致就了解一下公司概況,台灣公司3月才會正式開始,所以目前還沒有Developer,最後就詢問何時能開始工作,有問題也能信件保持連絡。

第二輪面試過程(英文視訊面試)

#

第二階段是純粹的Coding Test,面試官開了一個共同編輯的google docs給我,上面已經列好題目如下:

Given an array A, write a function to move all 0's to the end of it while maintaining the relative order of the non-zero elements. For example, A = [0, 1, 0, 3, 12], after calling your function, A should be [1, 3, 12, 0, 0].

乍看下會覺得很簡單,開新的陣列來存不就好了,但是往下一看附帶了2項限制:

Note:
You must do this in-place without making a copy of the array.
Minimize the total number of operations.

function可以用pseudo code來寫,一開始可以寫較差的版本,例如我先建立一個O(n2)O(n^2)的寫法:

function move(arr) {
let len = arr.length;
for (let i = 0; i < len; i = i + 1) {
for (let j = i; j < len; j = j + 1) {
if (arr[i] === 0) {
arr[i].swapToNext();
}
}
}
}

一邊寫的過程中,面試官會詢問你的思路,還會直接在docs上面用範例來演示程式執行的效果,還給了我提示讓我想看看能不能改善這個版本,後來順利寫出O(n)O(n)的版本:

function move(arr) {
let len = arr.length;
let idxHead = 0;
let i = 0;
while (i < len) {
if (arr[i] > 0) {
arr[i].swapToIndex(idxHead);
idxHead = idxHead + 1;
}
i = i + 1;
}
}

到此為止面試時間也差不多半小時,後面就單純詢問我有沒有任何其他問題,然後結束本次面試。

第三輪面試

#

如果通過第二階段的話,據說會面試一小時,創辦人、工程師還有同事都會參加,還會考最後一題Coding Test。但是我在第二輪就被刷掉了,所以無法提供此階段面試的細節。

結論

#

英文面試

#

我自認英文讀寫能力中等,但聽力和口說大概就沒救了,人生中第一次用英文溝通這麼久其實頗緊張,但如果能上的話我覺得是個很棒的練英文環境,而且每年還能免費去英國一趟!面試部分也因為英文不好的關係常常詞不達意,沒辦法百分百發揮。

省錢省時

#

整個面試過程只需要動滑鼠和敲鍵盤,不用在外面搭車奔波,也沒有費時的筆試,其實是個值得推薦的優點!

用心的面試流程

#

從寄出履歷至邀約面試,以及面試的過程都能感受到Wearisma的用心。包括回信時間不會拖拖拉拉,信中問候讓人覺得很親切,約面試時會double check,讓人感覺謹慎,甚至約第二次面試時剛好遇到年假,也能被體諒而順延,個人覺得滿貼心的!面試過程也很積極地讓我了解公司在做什麼,面試結尾時面試官也很坦白地說馬上要面試下一位,從中也能感受到公司對準時和效率的追求,整體而言真的可以感受Wearisma有用心在做好一件事情。