2018/01/26~2018/02/28【全端工程師】未錄取
第一次知道Wearisma這家公司是因為實驗室帶我的博班學姊向我推銷,說她有個學妹在裡面(其實也是我的學姊),所以我剛好有機會內推賺到面試機會。完整的職缺要求和公司簡介在PTT徵才原文「[徵才] 偀向軟體Wearisma徵全端工程師(70~90k)open_in_new」中都有提及了,是一間英國公司,2018/03要在台灣設立總部,所以目前極力徵才中,雖然優先尋找一個月內可以onboard的資深的工程師,但像我這種菜逼八也是會給予面試機會,未來有junior的職缺可能也能進吧!
應徵的是全端工程師,基本要求如下:
面試前有信件提醒面試過程約20~25分鐘,前後分為和兩部份。面試官大約在面試開始前一刻加我skype,然後用訊息告知即將撥打通話,接通後會簡單問候,然後說明稍後的面試流程。
首先是簡單自我介紹,我說明自己是主修資工,研究所的方向是ML相關,未來想成為一位全端工程師,平時會做一些Side Projects來娛樂一下,面試官這時候感到興趣,請我挑一個Side Project來介紹,我就提供了SomeGuy的網址給他,我一邊說明,面試官也一邊詢問使用了什麼技術。
接著她表示對我的研究非常有興趣,也想瞭解(畢竟徵才文中就有提及要做ML相關的工作),我也簡單介紹了自己做的研究方向還有使用的技術,接著被問到我的研究有什麼樣的Challenge,我就繼續順著問題補充說明,算是勉強過關。
其實在面試前有翻過Wearisma官方網站,但還是看不懂網站上的介紹,所以面試官向我詳盡地介紹了一次Wearisma是什麼樣的公司,至於為何應徵的這題我倒是沒有太多想法,就回說想當個Web Developer。聽完面試官講解後,我對於Wearisma的理解如下,給大家參考參考:
Wearisma是一間軟體公司,提供一個平台來媒合品牌(Brand)與追蹤者(Influencer),但主要客戶是品牌,Wearisma會從追蹤者的社群網路中蒐集資料,運用資料分析技術將結果匯報給品牌,作為行銷(Marketing)的依據。
題目長這樣:
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來寫,一開始可以寫較差的版本,例如我先建立一個的寫法:
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上面用範例來演示程式執行的效果,還給了我提示讓我想看看能不能改善這個版本,後來順利寫出的版本:
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有用心在做好一件事情。