folder_open

面試雜記

arrow_right
article

面試心得–MVP Fastlane

面試心得–MVP Fastlane

2018/09/13~2018/09/18【全端工程師實習生】錄取

公司及職缺概況

#

MVP是位於新竹交大育成中心的2年新創公司,規模約1015人,現階段專門將台灣的工程師媒合至美國的開發案件,因此MVP員工需與合作的美國公司簽署雇用合約,並且遠端與該公司員工協作開發,所以對英文能力也需要有基本要求;公司接了許多的案子,原則上每案會由12人負責;辦公環境就直接在育成中心的辦公隔間裡;每日午餐有120元補助額度;上下班時間約10:00至17:30,短工時算是非常誘人的特點。

由於我在研究所畢業至入伍當兵前約有2個月的空檔,在一位認識的MVP員工TZ及另一位正在MVP實習的學弟HY兩人的強力幫我內推之下,展開了這間公司的短期實習。

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

#

CEO Skype閒聊

#

由於CEO常駐在美國,所以直接以Skype線上面談,但是他開頭就告訴我,既然TZ和HY都大力推薦我了,那麼今天基本上就是輕鬆閒聊就好。CEO稍微介紹了自己的經歷,接著主要談論公司的願景還有未來的藍圖,雖然聊得很輕鬆,不過最後還是要求我挑一天到公司進行面試。

第二輪面試過程(On-site面試)

#

工程師面談

#

由2位工程師介紹公司的開發概況,我也自我介紹個人經歷,最後進行簡單的QA,全程搭配電腦demo並以口頭交流。

PM測驗

#

接著進來的是PM,其實讓我有點詫異,一般面試好像都是與工程師面試,遇得到PM的真的很罕見!而且稍微聊了一下之後要進行測驗,PM準備了一份UI設計稿,並說明規格及需求之後,請我規劃To-do List,但我也是第一次遇到這樣的測驗,自認為ticket沒有開得很好。

工程師Coding Test

#

最後一關是由第三位工程師進行Coding Test,題目只有一題,解題過程不太順利,我想到的演算法都無法正確算出解答,所以答得並不理想,但過程中還是保持與面試官交流思路。事後透過關鍵字搜尋,得知本題是出自Leetcode 543. Diameter of Binary Treeopen_in_new

Coding Test結束之後,面試官還問了我知不知道Stable Sort,雖然只需口頭回答,但演算法離我太久遠,我在面試官提示之下才勉強想起來。

隔日Onboard

#

CEO彙整了所有面試官的評價之後,就邀請我隔日中午來公司和同事們一起用餐,然後下午直接Onboard,據說是公司有史以來最快從面試到Onboard的記錄XD

Return Offer

#

實習接近尾聲時,CEO也有與我討論,決定提供MVP的Return Offer給我,待我當完兵之後可以選擇回來MVP繼續工作。

核薪結果

#

  • 本薪:65k/mth×13mth/annum=845k/annum65k/mth \times 13mth/annum = 845k/annum

附錄—Coding Test參考解答

#

在寫本篇心得時,同時在Leetcode把這題解掉了,以下附上提交的JS程式碼:

/**
* Definition for a binary tree node.
* function TreeNode(val) {
* this.val = val;
* this.left = this.right = null;
* }
*/
/**
* @param {TreeNode} root
* @return {number}
*/
var diameterOfBinaryTree = function(root) {
let emptyLeaf = { lDepth: 0, rDepth: 0, diameter: 0 }
let parse = (root) => {
let lsubtree = emptyLeaf,
rSubtree = emptyLeaf
let lDepth = 0,
rDepth = 0
// leaf
if (!root || (!root.left && !root.right)) {
return emptyLeaf
}
// subtree
if (root.left) {
lsubtree = parse(root.left)
lDepth = Math.max(lsubtree.lDepth, lsubtree.rDepth) + 1
}
if (root.right) {
rSubtree = parse(root.right)
rDepth = Math.max(rSubtree.lDepth, rSubtree.rDepth) + 1
}
// find max candidate diameter
let diameter = Math.max(
lsubtree.diameter,
rSubtree.diameter,
lDepth + rDepth
)
return {
lDepth: lDepth,
rDepth: rDepth,
diameter: diameter,
}
}
return parse(root).diameter
}