Nest 實習電面分享

avatar 237709
leebigyu
1385
3
很幸運的能夠拿到 Nest 的 internship offer,有鑒於地裡比較少關於 Nest 的資訊,因此想把自己的面試過程回饋給地裡。由於小弟我是轉專業的,出國前沒有太多寫程式的經驗,在上學期也是一個面試都沒有。也希望藉著這篇文章稍稍鼓勵一下轉專業跟還在找實習的夥伴們。也希望覺得這篇文章有幫助的朋友,幫忙加個米,感謝

timeline
======
12/11/2017 請朋友內推
1/26/2018 收到面試邀請
2/12/2018 一面
2/22/2018 二面
2/26/2018 offer extended via email

一面
======
給一個 doubly linked list,以及一個裝有 node 的 array。前後能夠連接起來的 node 算成一個 block,總共有幾個 block?

a b c d e f
[align="left"] +---+ +---+ +---+ +---+ +---+ +---+[/align][align="left"] | |<-->| | <-->| | | | | | | | [/align][align="left"] +---+ +---+ +---+ +---+ +---+ +---+[/align][align="left"] ^ ^ ^ ^[/align][align="left"] | | | |[/align][align="left"] + + + +[/align][align="left"] [-------------------------] [-----][/align][align="left"] 1st block 2nd block[/align]

[align="left"]e.g. 在 array 裡可能給你的是 [b, e],因為 b 可以往前各走到 a, c,因此 (a, b, c) 算一個 block;e 只有自己,(e) 算一個 block。因此總共兩個 block[/align]
[align="left"]這題其實不難想,是一個 dfs 的簡單題目,只是用 doubly linked list 包裝起來而已。記得用合適的 data structure 去記錄走過的點就可以得到最佳解了。[/align][align="left"]我 dfs 寫完後,因為一面的前一天晚上剛好寫到哩扣漆參漆,我就跟面試官說這題似乎可以用 union-find 解。跟面試官大家說了一下我的想法,他覺得滿有趣的,就叫我寫看看。[/align][align="left"]寫的過程中有一個小 bug 讓面試官幫我指出來,寫完後面試官叫我分析了一下時間複雜度,而這個算法複雜度比第一個還高,還是第一個比較好。寫完之後問了一下面試官問題就結束了。[/align]
[align="left"]二面[/align][align="left"]=======[/align]
[align="left"]這輪的面試官就比較嚴肅,不苟言笑。上來先請我介紹自己,接著抓著 resume 往下問:分享一個最近的 project、用了什麼技術、想解決什麼問題、做了哪些 optimization 等等。過程大概 15 分鐘左右,接著開始 coding exercise。
[/align]
[align="left"]哩扣參肆零 [/align]
[align="left"]一開始聽到面試官描述題目,想說遇到原題很開心,之後發現是這題的變形。原題是給定一個 string,但面試官改成如果今天是一個一個 character 丟給你,你該怎麼設計。可以想像有個 crawler 在爬一篇新聞或雜誌,它會一直爬一直吐 character 給你的 function,因此你的 service 是要禁的起一直被 call 的。所以在 performance 上跟 memory 上都要考慮[/align]
[align="left"]這題我其實沒有答的很好,因為我還是以原題的思維下去想。之後面試官應該是有點看不下去了,就開始給我提示並且提供幾個例子給我看。我其實過程中也是沒有很懂,最後就說可以用一個 list 去紀錄每個 character 出現的 index,然後如果在 current character 發現超過 k distinct characters,那就從頭開始刪。面試官就回答 it may work,然後就結束了....整個過程沒寫幾行 code...[/align]

[align="left"]心得[/align][align="left"]=======[/align][align="left"]Nest 電面是我第一個 serious coding interview,之前的都比較著重在 behavior question 跟 resume。面試過程中其實整體算很舒服,面試官也會適時地跟你討論跟幫你指出小錯誤,感覺真的很像在一起解決一道問題。我原本已為我應該是跪了,因為二面真的是表現得沒有很好,所以最後收到 offer 真的有點意外。我因為二面過程中沒有掌握得很好,有跟面試官說了我應該可以做得更好之類的話,面試官就說:you did just fine, and actually I don't expect you can solve this question within 30 minutes. You have tried to nail this down and gave me a possibile solution, which is great. 因此,我覺得除了真正把 code 寫的 bug free 之外,良好的溝通以及快速的反應也是很重要的。[/align]
[align="left"]今年找實習的情勢真的是很辛苦,身邊很多比我厲害的人仍然在努力,我是真的很幸運。找實習的過程中,有種感悟是:拿到面試機會,比面試本身還難。不過我相信只要努力,最後一定會有好結果。大家加油![/align]
  • 1
3条回复