職缺名稱: Senior Software Engineer, GPU platforms
職等: L5
LeetCode準備: 大約40題 (題數不是重點,詳看後續內文)
實際面試/總共面試: 2/5 (二面後結束,總共有五關面試)
面試結果: 感謝 Phone Call
從JD來看,是要找一個有 C/C++ 專業經驗的,且有網路技術開發、軟硬體設計和嵌入式系統驅動(GPU Driver)工作經驗的人。
工作內容涉略有點廣泛,年資最低要求是10年,但本人工作才快7年,只好硬著頭皮試試看。
某天在LinkedIn上有位來自澳洲的 Google HR 邀請,表示過去我有 GPU Driver 的工作經驗而注意到我的 Profile,
因此介紹了這樣的一個職缺想邀請我來參加面試。收到邀請的當下是蠻驚訝的,心想只是短暫的 GPU Integration 的經驗,居然招來 Google 的注意,
但由於我的新工作才剛上工沒有多久,且工作內容與我的規劃不太相符,因此第一次我婉拒掉了他的邀請。
但後來過了一些時日,他似乎在台灣找了一圈還是找不到相關的人選,所以又回來跟我聯絡並告知這個職缺依然開缺,問我是否有興趣嘗試一下面試,
我後來想一想,雖然自己完全沒準備,但想說體驗一下 Google Interview 好像也不錯,因此就答應參加面試了。
全部面試的介紹如下:
There will be a total of 5 x 45 minute interviews with Google Software Engineers on Google Meet.
The focus of the interviews are below:
Embedded Domain Focussed Interview / GPU related
Focusing on coding in [C or C++] and Embedded domain knowledge relevant to the role and your Embedded expertise
1x Low-Level/Embedded System Design Interview
System Design interview
1x Googleyness and Leadership Interview
A non-technical interview.
2x Software Engineering Embedded Coding Interviews
The interviewer will be interested in your coding ability, your knowledge of computer science principles (data structures, algorithms etc.) and how they can be used in your solutions
Interview Order: We will start with the Embedded domain interview, and low level system design.
If the feedback from those are positive we will do the Embedded Coding interviews.
-------------------------------- 分割線 --------------------------------
實際上是有分兩群,前兩次是一群,後三次是第二群,每一群內的面試順序好像是隨機的,至少我在面試時感覺 Interview Title 好像對不起來,而且面試官似乎不會知道面試者現在是第幾面。
HR Phone Call:
澳洲HR,全程英文介紹了職缺內容,並且有詢問我的期望薪水,整個 Phone Call 大約15分鐘。聽說這關 HR 是會確認一下面試者的英文能力,我自己是覺得好像有那麼一點點的味道,
看到網路上有人分享在這關就被刷掉了...不曉得是不是真的。
第一場面試:
面試官是台灣人,全中文面試,整場面試是一小時(這就跟上面的流程說明不符了)。前面雙方自我介紹了一下,這個環節很精簡,盡量介紹跟職務有關的經驗即可,因為面試時間有限。
題目開始前,面試官說:"就當作我們是合作夥伴,現在要一起計畫一個Project",所有的設計想法都可以寫在 Google Docs 上,題目內容大約是 90~95% 屬於網路技術相關,只有 5~10% 屬於GPU相關的。
還好問的題目在之前的工作經驗也稍微有涉略,因此還算是有把基本的設計架構寫出來,最後有被問到 Follow-up 的問題(面試官有特別提及),雖然我也有回答,但不確定是不是他要的答案。
後來還剩下一些時間,面試官詢問有沒有想問的問題,我就問了一下實際工作內容的部分,然後就結束了第一場面試,完全沒有考 Coding。
整個面試過程的感覺還算不錯,但要有點耐心,必須把每一個想法詳細具體地說清楚,面試官會一直不斷追問。在面試後段閒聊之後,感覺這個工作內容跟我預想的一樣,直白地講蠻像以前在台商豬屎屋工作的感覺。
第二場面試:(不太順利)
面試官是台灣人,剛開始我用中文打了聲招呼,以為應該又是全中文面試,但面試官用英文回我,我就意識到這場面試是英文面試了,還好自己本身工作也有用英文開會,因此就沒那麼緊張。
面試官說明這場面試是45分鐘,沒有自我介紹,直接開頭就問我習慣用什麼語言寫 Code,我回說 C++,然後他就在分享文件上調整了一些東西,可能是程式語言的設定,之後就開始直接說題目了。
題目聽完之後,我當下的感覺是這題目也太大了吧,完全不是 LeetCode 的題型,這要怎麼馬上寫 Code 給他,於是我問他:"我要現在寫 Code (或Pseudo Code)給你看嗎?",他回說:"沒有沒有,我們現在只是在計畫"。我心想那應該就跟第一場面試一樣吧,憑著自己過去的經驗和依稀的記憶先寫下想法吧。
寫完初步想法之後,一樣面試官繼續追問,但這次的感覺跟第一場面試不太一樣,因為他的問題不是延伸問題來完成這個計畫,例如說如果遇到什麼狀況,你應該要如何處理,又或者是你覺得這個設計有什麼優缺點。
而是他不太曉得我的設計是什麼,所以在整個面試的過程中我就一直不斷地解釋,在這過程中,他又會繼續問其他非延伸的問題是我沒遇到過的,像是彈幕一樣的連環問題。
我跟面試官表示我沒遇過這種狀況,所以需要點時間思考一下,他似乎想嘗試引導我,讓我好回答一點,但在我聽來他只是把問題又重複了一遍,並且一直追問我有沒有聽懂問題,我就又跟他表示,我在思考問題,需要一點時間,並盡可能地講出想法,
然後他又再重複了一遍問題,而且似乎不想給我太多時間去想,可能因為面試時間只有45分鐘。
整個面試過程我感覺非常不順利,而且覺得沒辦法一起共事。到面試尾聲時,面試官又丟了兩個題目,一樣是我沒碰到過的狀況,屬於網路技術的問題,
我又跟他說明我需要點時間想,然後一樣,他又再重複了一遍題目,確認我有沒有聽懂。到最後更讓我哭笑不得的是,面試官直接用中文說:"還是我用中文跟你講?",我苦笑了一下說:"好啊,不然用中文說說看"(我心想我不是沒聽懂,我是要一點時間思考)。
到最後還是沒有回答他的問題,因為時間到了,但我想也無所謂了。
最後面試官還是問了我有沒有想問的問題,我就一樣問了實際工作內容,他表示剛剛問的問題都是工作會碰到的,然後沒有其他說明,就急忙著就結束了這場面試。我心裡大概也有數了,這場應該是直接 No Hire 的評價。
總結第二場面試的問題大概有60~70%是網路技術問題,30~40% 是 GPU Driver 相關的問題,不確定是不是有想考 Coding,畢竟面試官前面還問我習慣用什麼語言寫 Code,但到頭來也沒考 Coding。
從介紹來看,也不確定頭兩次的面試到底有沒有打算考 Coding,可以確定的是都有考 System Design。
兩場面試結束之後,其實已經打算想跟 HR 說可以停止後續的面試了,因為這個工作內容我已經大致了解,而且我相信面試官應該也覺得我不夠符合,但就看看 HR 回報 Feedback 時怎麼說了。
第二次HR Phone Call
幾天後,安排了第二次跟 HR 的 Phone Call,主要是講前兩次面試的 Feedback,評價聽起來不確定是哪個面試官給的評價,總的來說就是相關技術欠缺,而且在開頭的時候 HR 就說 "Bad news",我就知道已經結束了。
由於我也沒什麼想問的,雙方彼此感謝花費時間參與/安排面試之後,就結束了通話,通話時間3分鐘結束。
本身抱著平常心來了解這個工作內容,所以儘管在過程中有不順利的地方我也不覺得有什麼,就面試的經驗來說,LeetCode 這樣的題目似乎已經不常見了,本來想說 Google 應該還會保留這樣的傳統,但看來依據面試官是誰而有所不同。
台灣谷歌的薪資以台灣地區來說,算是給得很高的科技公司了,若想追求高薪和履歷加分,確實還是蠻值得一試,YouTube 上也有一些 Mock Interview 的影片可以參考(HR也會給連結)。
每次經歷過一場面試之後,也會更清楚知道自己要的是什麼,我覺得被邀請來參加面試還是有不錯的收穫。
Last updated: