面試問答
live coding
主要是有關多執行緒的...
一面:一開始是HR,大約半小時,會問一堆BQ,如果你能提到user experience會加分xd,然後問到一半就突然切
成英文,好像有問為什麼會離職跟5年內的目標為何,確認我英文ok後又切回中文然後讓我問一些問題,這環節大約20分鐘。
再來是技術面試,有兩位應該是tech lead, team manager的角色,一開始直接coding test,特別提一下這間考得蠻有趣,給一個雲端vscode的編輯器,裡面已經有大致寫好框架的一些code,然後它有把requirement用註解打下來,先給你10分鐘讀需求跟code,再來實作。題目大概是在實作一個event process的service,在大量event進來之後,event的lifecycle會開始,然後會開多執行緒去處理,在main function後面也有設ttl去stop所有執行緒,其實大部分的code都寫好了,主要要考你比如說“要怎麼確認執行緒都執行完了”、“要怎麼停掉所有執行緒”、“要怎麼去在每個function都記錄下該執行緒執行的requestID“等等,過程中探討了不同操作執行緒的方式也驗證你對執行緒的理解,比如說”unbuffer/buffer channel”, “select”, “WaitGroup”, “context”等等功能的操作,雖然過程我回答的有點坎坷,但面試官人很好會用引導的方式來跟你討論,這部分大概花了半小時多。再來就請我自我介紹,還叫我直接講我做過最難的task,如何解決,也開始針對履歷寫的每一點去細問,這主管也是技術底很深的,大部分也圍繞在我API優化、DB調教的細節,比如說我講過我發現N+1 query的問題並改善,他會細問說原本query的情境、大概資料量多少、優化後query的語法、如果join太多會有什麼問題等等…。再來另一個主管也問我一些問題,比如說有什麼原生的工具可以看SQL裡面有沒有N+1嗎?怎麼查詢DB的效能問題?有沒有用過golang的原生工具去看現在code執行的效能好不好?我覺得這些問題蠻能看出來一個工程師日常工作對程式的品質要求,算蠻細節的!再來就是QA環節,一樣問了tech stack,因為他們是實體機器,所以他們的軟體UI是會打包然後patch到客戶的機器上,客戶還要自己載下來壓縮等等的,也比較久才更版一次,不像現在雲端web服務快速迭代,也因為這樣,所以他們用的服務大部分都是地端的,然後也有提到可能有一些高流量,但不太會有高併發問題,可能再搜集一些event上流量蠻高的,但他有補充其實也還好xd 整體面下來覺得還算強度蠻高的公司,問題都問的蠻刁鑽的,我覺得算是有鑑別度,而且也不會感覺到壓力很大會讓你很難堪,面試者如果感受到你不會的話自己會提示或直接解釋給你聽~
面試問答
live coding
主要是有關多執行緒的概念,給你看一個code base,裡面大致功能都寫好了,只是有一些執行緒上的錯誤,要你去修正
面試建議
他們還是主要想找對Nas有經驗的人選,再來就是golang有經驗的人,感覺他們標準很高,不過系統設計倒是沒問太多