2021 Amazon Ring Software Dev Engineer Intern 面試心得
國立臺灣科技大學
如題,今天很意外地收到 offer,整個蠻驚喜的,原本我壓根不覺得自己有機會上...
由於沒有簽保密條款,因此來分享一下面試流程順便做個紀錄,如果有任何不妥的部份我會刪文,給有興趣的朋友參考!
#背景:
台科電子,學 + 碩。
大學時系排中間,覺得自己有點選錯系,對電類相關科目很沒興趣,比較喜歡軟體...
大學畢業後先當了半年兵,之後在某間上市公司寫了一年半的 Embedded MCU 後,回來進修。
碩士的話,實驗室主要搞 DL 跟影像處理相關,用 python居多。
#技術:
python 還算熟練,是唯一有把官方文件大概看一次的,所以還算明白語言特性,比如 python heap 的 index 比較特別,是從 0 開始算之類的實作細節。其他像是 Java, C, MySQL 都是略懂一些皮毛而已。
基礎科目部分,資料結構跟演算法算還不錯,其他可以無視。
作品則只有一些課堂上的 project,譬如 MySQL server + Android App 之類的應用,沒有什麼特別值得提的,不過這些 project 我的分數還可以,在班上大概都是前三高的。
Coding 部分,個人從小就對一些邏輯跟益智問題很感興趣,所以覺得 Leetcode 還蠻有趣的,會當成休閒娛樂玩玩。
上碩班後為了熟悉 python,等 training 時有空就會用 python 刷個題,大概用 9 個月從題號 1 刷到當時的最後,差不多 1200 題,中間常常放飛自我所以有跳一些 hard 哈哈。
#準備:
會有這次的面試機會,是 Amazon HR 從 LinkedIn 知會的,並詢問我是否有興趣。
原本是在找 EE intern,版上似乎有些同學也有收到相關通知,後來我回復問到有沒有 SDE intern,想不到還真的有 XD
那時候覺得不管有沒有上,都是一個學習的好機會,就答應了。
在這裡要謝謝 HR,在面試的過程中很細心的幫忙,也回答了我很多有的沒的問題 XD
面試前兩天我寫信問 HR,coding 方面有沒有語言限制,HR 表示 intern 主要是用 C / C++,因此會以這兩個語言為主。
當下我其實有點小錯愕,因為我上次寫 C++ 是大一,約六年前的事了,C 的話遇到需要用 stl 的問題又很麻煩,因此趕緊惡補一些 C++ 基本知識跟語法,然後兩天花了大概 7, 8 個小時,用 C++ 把 top interview 裡面的 120 題 easy 跟 medium 全部寫完,老實說 1 天刷 60 題還蠻累的...
#面試流程:
一面:
線上面試,用 Amazon chime + livecode,全程中文
面試官是台灣的主管,一開始很隨和地先聊了下天,接著就開始介紹 Ring 在台灣的情況。
大約介紹了 20 分鐘左右,問我有沒有什麼問題想問,我簡單問了幾個好奇的問題後,面試官就請我分享一下前一份工作的經驗,並問了一些相關的問題,例如前一份工作的工作內容、有什麼特殊的事蹟等等... 這部分就照實回答。
接著是 coding test,題目貼出來的當下我鬆了一口氣,不是那種會用到特殊資料結構的 hard 題,差不多 medium 的程度,是 two sum + Linked list 的變形。
看到題目的當下差不多就知道最佳解了,所以面試官講解完後,我馬上簡單說了一下自己的思路跟複雜度,面試官覺得可行後,就開始 coding,大概花了 5 分鐘左右寫完,然後面試官抓出一個 return type 的錯誤,馬上改正 ( 用 python 思維寫 C++ 的下場... )
途中有問一個 C++ 的語法觀念,以我惡補兩天的 C++ 功力,理所當然不會QQ
寫完後,面試官 follow up 請我給出另一種不同的解法,這邊我卡了大概 1 分鐘,之後根據 input 的範圍,給出了一個用 bucket sort 取代 set 的解,複雜度跟原解一樣。
coding test 結束後,就是簡單 Q & A 一下,跟聊天時間,可能 coding test 花比較少時間的關係,面試比預期早了 15 分鐘結束。
面完當下覺得自己過一面的機率不是很高,因為我的 C++ 真的不太行。
接著一個禮拜後收到二面通知,自己還蠻意外的,可能 coding test 有加分到。
二面
線上面試,用 Amazon chime + livecode,全程中文
二面的時間是今天早上,面試官同樣是台灣的主管,一進來先問我吃飽了沒,小聊了一下。過程中面試官一直都是笑笑的,親和力 max,頓時好感度大增!
他先問我上一輪的面試狀況,我說我的 C++ 只有入門,但上一輪的題目偏簡單所以還應付的了。
接著就是悲劇的開始。
他開頭直接請我實作 C++ 的 memory 相關 function,我聽到題目直接愣住,因為我根本不懂那個 function 的機制,也沒什麼想法,當下就知道爆掉了。
面試官人很好的給了一些提示,但過了 10 分鐘我連一行 code 都吐不出來,面試官就直接先跳過這題。
接著問了幾題 C++ 的觀念題,是很基本的題目,但我還是有一半都不會,一直尷尬的表示不清楚。我的 C++ 真的爛...
面試官人真的很好,面對我這種小丑級演出,還是不斷笑著引導我,到這裡我其實已經感到蠻抱歉的,覺得有點在浪費面試官時間QQ
大概經過 40 分鐘後,面試官差不多已經知道我 C++ 多爛,就沒再問了。
最後出了一題 coding test,是一題 code 量比較多 medium 變形,跟 math, linked list 相關,當下也是看到題目就知道怎麼寫,簡單解釋一下之後 10 分鐘寫完,面試官提示有個小問題,檢查一下後快速補上粗心的部分。
接著 follow up ,請我看看 code 還有沒有哪裡可以改進的,就稍微優化了一些迴圈跟判斷。
後來可能看還有一點時間,面試官就加問了一個 BQ,大意是你曾經在過去什麼事情上做了超出自己職責的工作,然後取得不錯的效果? 這題我自認答的不好,連及格都不到。
結束的時候面試官一如既往地笑著寒暄了一下,我還蠻感動的,覺得這真的是一個非常棒的前輩,很想和他一起共事看看!
這場面完後,想不到自己錄取的任何一分可能性。
結果過了幾個小時,HR 突然打來說主管覺得我在 C++ 上的熟練度不足,不過演算法方面的 coding 還可以,因此決定給我一次機會!
當下有種柳暗花明又一村的感覺,一邊聽 HR 姐姐細心的 offer 解說,一邊默默的在心裡感謝那些所有幫助過我的人、熱心的 HR 以及人超好的主管哈哈哈。
#結論
首先,感謝所有支持我以及讓我明白自己不足的人,造就了今天的我。
自己知道這次算是運氣成分蠻重的,從小到大我的運氣一向很糟,可能都累積到今天了XD
這次的面試也蠻清楚的讓我明白了自己的不足,兩輪面試的前輩也給了很多建議,讓我很多缺點都暴露了出來,我覺得這是很珍貴的經驗,真心感謝。
同時,也發現自己的心態還是沒有想像中好,一開始是覺得 ring 的產品很有趣,加上抱持學習的心態來面試的,所以得失心其實不是很重,一面也是很輕鬆的面了過去,但二面大爆炸後還是很懊惱,覺得自己很沒用。
歸根究底,一切的問題就是實力不足導致的,再來還要繼續努力,不愧對自己與對我有期許的人。
很期待能夠進入世界級的公司學習並努力嘗試用自己的力量做出一些改變!
offer 方面,個人覺得很不錯,intern 就跟我前一份正職底薪差不多,同時目前似乎是 WFH,會寄電腦過來的樣子,不過還不確定。
如果大家有什麼問題想問的話,歡迎留言~
