Hulu 實習面試心得

Jimmy Hung
Hungys.blog()
Published in
7 min readMar 5, 2016

又差不多到了開始投實習履歷的季節,今年延續去年的模式又把一些美國家喻戶曉的網路公司、軟體公司投了一輪,包括 Facebook, Microsoft, Twitter, LinkedIn, Dropbox, Adobe, PayPal, Twitch, Hulu……等等。不過早就有心理準備,想當然爾清一色無聲卡,連個面試機會都沒有,只能說沒身份、沒內投就幾乎就不用妄想了。

因為這次的面試經驗其實應該跟一般矽谷公司的方式滿類似(至少看前人的經驗是如此),所以就簡單記錄一下是怎麼被虐的。

Hulu 北京

好像滿多人沒聽過 Hulu,事實上 Hulu.com 是美國前三大的影音串流服務,前面還有兩大競爭對手 Netflix 和 Amazon。一方面是跟競爭對手還有一段不算小的差距,另一方面是服務目前不像 Netflix 有進到台灣,所以在國內知名度還是比較低。

雖然這篇是要簡單記錄面試 Hulu 的心得,但事實上投給美國總部的履歷根本沒有被打開的跡象,我拿到的 interview 機會是位在北京的研發中心,也是 Hulu 在 Santa Monica 總部之外最大的一個辦公室。當時主要是想要丟美國的職缺,正好看到有中國的實習機會就順手一起投了,畢竟去北京簽證也比較不是問題。

履歷投遞、安排面試

履歷投遞的部分大部分的美商都滿類似,大概就是很簡單的個人資料(也是有一些公司的系統囉唆又複雜),上傳一份 Resume,基本上以一頁為佳,不過我最後整理出來的版本是兩頁。比較特別的是有些公司會有 optional 的 Cover Letter,據網路上的說法這主要是禮貌性的寒暄並介紹、推銷一下自己,不過我有點懶所以都沒有附上就是……(逃)

這次面的職缺是北京的 Software Developer Intern,雖然跟美國的履歷是同一天丟出去的,但北京這份 application 很快地就收到 HR 的信說要安排 phone interview。

我覺得 Hulu 滿好的一點是他們用了一個叫 Jobvite 的平台,所有的信件都是透過這個平台寄送,直接從信箱回信也都會記錄到這個平台上。另外一點滿方便的是可以隨時追蹤應聘狀態(登入才發現去年 Twitter 的 Not Selected…),也可以看到安排的面試時間還有面試官等資訊。

專案經驗

不只演算法重要,也要有 project 能聊。

跟去年面 Google Taiwan 的經驗很類似,我的感覺是面試官應該是沒有看過履歷,也不會在面試過程中對你的背景有太多的興趣。面試一開始簡單自我介紹完後兩家公司都是要你挑一兩個有趣、有挑戰性的 project 來介紹,所以平時累積一些專案的經驗是必要的。

介紹完 project 後緊接的問題就是問你在 project 中遭遇的一些困難和挑戰。這問題我個人覺得不是很好回答,最好還是預先要有準備一些答案。因為有些你覺得是挑戰的問題在面試官看來其實根本不算什麼,像是我過去做的一些專案遇到的困難我很少覺得真的是很高深的問題,尤其是純實作面。我想如果能從架構設計演算法設計效能優化這幾個面向去答應該會比較有話聊。所以突然覺得過去做的 project 都好沒深度……

專業知識

履歷、說出的每字每句都要誠實不膨脹。

之前面 Google 時聊完 project 很快的就開始做題,不過 Hulu 還多聊了一些關於分散式系統相關的專業知識。會問到的原因一方面是這個 Audience Platform 部門是在做 large scale distributed system & big data processing platform,另一方面是在自我介紹時有聊到過去雖然有三年多的 mobile 開發經驗,但近期開始想轉向後端、分散式系統的領域去做更深入的研究。

不過事實就是目前對這個領域的專業知識還不是很足,除了之前在 UIUC 修課外(還修很爛拉低 GPA),大概就是有 google 過一些相關的議題還有一些常見的分散式系統。雖然我也是沒在履歷寫說我擅長分散式系統,但只能說真的必須對自己的履歷誠實,不然亂寫的話真的可能都會被問到臉很腫啊!

後來還有聊到 Cassandra 和 HBase 這類分散式資料庫系統的核心設計以及差異。因為本來就知道 Hulu 有用這兩套,算是有做過功課,勉強可以掰出一些例如 distributed hash table 的設計以及 horizontal scaling 的優勢,或是像兩者一個有 master/slave 設計、一個是單一種 node 構成 DHT ring……等等廢話。不過後來還被問到兩者在 consistency model 設計上的差異,就炸了。

除此之外也有問到程式語言,要我排序一下拿手程度,但說實在這是之前就發覺得一個問題,雖然好像寫過很多語言,但沒有一個敢說得上專精。另外也被順便問到 C# 以及 Java 的一些差別。

演算法設計

不要問,資料結構、演算法好好學就對了。

美商出名的愛考演算法設計,只不過第一題被問到的跟預期的類型不同。題目大概就是有一份億級的資料,問一些相關的 processing 及演算法優化。老實說對這方面根本沒有經驗,過程中就大概只提了 hash table、data splitting、sorting、map/reduce、two pointers 一些技巧去解,還有時間複雜度分析。面試官人滿好的都會給引導提示,最後也算是有講出他想要的答案(真的是這樣嗎?)

後來又做了另一道題,起初題目聽得霧煞煞,可能受到一些大陸用詞的影響吧,後來才發現大概就是 regular expression 的 matching(囧)。一開始很 naive 的做法就是用 recursion 去跑,後來又想到應該可以用 DP 解,只是有點緊張整個亂了思緒,光列出動態規劃的關係式就搞了好久,我都想掛掉 Skype 躲起來了 XD 感謝面試官超級有耐心啊……

最後他丟了一個連結給我,基本上就是在一個協作的編輯器上寫 code,這編輯器比 LeetCode 的難用一些,不過至少有 syntax highlighting,比去年 Google 用 Google Doc 寫的體驗好多了。

說實在我很不習慣在別人面前寫程式,更別說還要一邊講思路,所以功力都得先減一半,整體來說寫 code 這關真的表現得超差,再來就是對 Dynamic Programming 的掌握度還不是很好。(雖然我覺得練到的 LeetCode 題目都感覺沒那麼難想啊)

LeetCode 必練

除了很重要得說三次,還要練三遍。

臺灣的公司不說,為什麼說面外商、矽谷公司必練?因為後來查了一下 LeetCode 裡面就真的有這麼一題 Regular Expression Matching……Orz 而且難度還是 Hard 等級,我想大概是 DP 稍微複雜一點,但我還沒練到這題。(竟然還是第 10 題,但我沒照順序刷題)

我其實不到一週前才開始刷題,到現在大概是 50 題出頭的進度而已。刷題的目的不是背解法(雖然對面試有正向幫助),主要是練了真的手感跟思路還是會順很多,否則平常好像真的不常練到 DP 跟 recursion 的一些技巧。

再一次震撼教育

去年面完 Google 就已經信心受創一次了,雖然我知道去年被問的題目其實應該不算難,只是那時完全沒準備,掃過一下 Cracking the coding interview 但也沒時間真的去練。

這回面試前搜尋了一下網路的心得,幾乎每一篇都是說 Hulu 的面試相當有難度,還有說演算法「巨難」,至於對公司的評價在中國可說是名列前茅。面完雖然還沒收到感謝函,但我想應該是不會有機會繼續往下一關吧。面試官最後還問是幾月到幾月可以去實習,我想應該也只是問個意思一下吧 XD

總之,真的還有很多需要加強的地方啊。

更新:兩週後收到感謝函。

--

--