2018/09/13~2018/09/18【全端工程師實習生】錄取
MVP是位於新竹交大育成中心的2年新創公司,規模約1015人,現階段專門將台灣的工程師媒合至美國的開發案件,因此MVP員工需與合作的美國公司簽署雇用合約,並且遠端與該公司員工協作開發,所以對英文能力也需要有基本要求;公司接了許多的案子,原則上每案會由12人負責;辦公環境就直接在育成中心的辦公隔間裡;每日午餐有120元補助額度;上下班時間約10:00至17:30,短工時算是非常誘人的特點。
由於我在研究所畢業至入伍當兵前約有2個月的空檔,在一位認識的MVP員工TZ及另一位正在MVP實習的學弟HY兩人的強力幫我內推之下,展開了這間公司的短期實習。
由於CEO常駐在美國,所以直接以Skype線上面談,但是他開頭就告訴我,既然TZ和HY都大力推薦我了,那麼今天基本上就是輕鬆閒聊就好。CEO稍微介紹了自己的經歷,接著主要談論公司的願景還有未來的藍圖,雖然聊得很輕鬆,不過最後還是要求我挑一天到公司進行面試。
由2位工程師介紹公司的開發概況,我也自我介紹個人經歷,最後進行簡單的QA,全程搭配電腦demo並以口頭交流。
接著進來的是PM,其實讓我有點詫異,一般面試好像都是與工程師面試,遇得到PM的真的很罕見!而且稍微聊了一下之後要進行測驗,PM準備了一份UI設計稿,並說明規格及需求之後,請我規劃To-do List,但我也是第一次遇到這樣的測驗,自認為ticket沒有開得很好。
最後一關是由第三位工程師進行Coding Test,題目只有一題,解題過程不太順利,我想到的演算法都無法正確算出解答,所以答得並不理想,但過程中還是保持與面試官交流思路。事後透過關鍵字搜尋,得知本題是出自Leetcode 543. Diameter of Binary Treeopen_in_new。
Coding Test結束之後,面試官還問了我知不知道Stable Sort,雖然只需口頭回答,但演算法離我太久遠,我在面試官提示之下才勉強想起來。
CEO彙整了所有面試官的評價之後,就邀請我隔日中午來公司和同事們一起用餐,然後下午直接Onboard,據說是公司有史以來最快從面試到Onboard的記錄XD
實習接近尾聲時,CEO也有與我討論,決定提供MVP的Return Offer給我,待我當完兵之後可以選擇回來MVP繼續工作。
在寫本篇心得時,同時在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}