面試問答
(筆試) 算法 - LeetCode 題目 Easy 一題,可用程式碼或 pseudo code 解釋
考了 Min Hea...
在求職網上接受面試邀請,面試前需要填寫基本資料表,包含過去工作的待遇等,在錄取後將需要提交相關的證明,以及傳一段董事長的
訪談影片(約一小時),但是面試時完全沒有討論到該影片內容。
到達面試地點後,由門口的人員表明為面試者身份後,需要拿能夠表明身份的證件換取訪客證,接著帶領至一個會議室。
首先進行筆試 30 分鐘,印象中題目約 8 題,每題比重不同,可斟酌在哪些題目花較多時間答題。
原本有些題目我想在提交試卷面談時,以口頭的方式補充說明,但在後續面談沒有談論到該份筆試內容。
提交考卷後,待工程的主管批改完試卷後,進行面談,沒有進行自我介紹,而是直接依據履歷與過往經歷進行提問。過程中主要聚焦在技術背景與實務經驗,包含常見的題目如:過去待過的公司離職原因、過往遇過什麼樣的技術挑戰等,後段則由我向主管詢問公司產品方向、團隊組成與實際運作方式,瞭解到 Golang 的團隊不負責該公司的簡訊服務 EVERY8D 以及團隊通訊服務 team+,而是 GECP,聽描述並非為一個具體的產品,而是一個框架、平台,release 頻率多為一個月一次,期間未主動討論薪資相關議題。
隨後由人資接續面談,進一步確認履歷內容,並詢問我的理想待遇。可能由於我提出的期望月薪高於求職網上該職缺所列之上限,人資說明公司薪資結構主要包含固定薪資與 KPI 獎金,正常表現情況下,獎金約為 2 個月左右,而具體能夠獲得多少,是根據個人的成效決定,並請我重新評估並回覆期望待遇。
但我再次提出來的最低金額為前一份工作的基本待遇,但仍高於該職缺所列之上限。最後人資回覆將與技術主管及總經理進一步討論,後續是否安排與總經理進行第二階段面談,將另行通知。
但經過一週以上未得到回應。
面試問答
(筆試) 算法 - LeetCode 題目 Easy 一題,可用程式碼或 pseudo code 解釋
考了 Min Heap 類型的題目,雖然個人不習慣用筆試的方式解題,或者使用白板的方式邊撰寫邊說明的方式會更好,且此題佔筆試分數相對較低。
(筆試) 算法 - 說明前一題的時間及空間複雜度
將算法的每個步驟產生的 Time Complexity 及 Space Complexity 都寫出來,並最後加總,省略不重要的項目。
對於演算法、資料結構的基礎扎實,便能夠解出來。
(筆試) 資料庫 - 根據題目提供的查詢條件設計複合索引
依照最左前綴原則設計即可。
(筆試) 資料庫 - 說明前一題為何如此設計
依據最左前綴原則,索引僅在與查詢以及排序欄位順序一致時才會使用。
(筆試) RESTful API - 根據題目設計 RESTful API 的 HTTP method 以及 url
記得是修改資料使用 PATCH 方法,url 則使用資源的名稱作為路徑。
(筆試) RESTful API - 接上題,若是使用者端重複發送,如何確保最後一次執行的結果與第一次相同,也就是冪等性
request body 包含執行 ID,第一次執行時需要資料庫儲存該 ID,下次再接收同樣的 ID 時,則直接回應同前一次的執行結果。
(筆試) 分散式系統的 2PC 分別是哪兩個 phase,以及 2PC 的缺點
參考網路上能夠查詢到的資料即可。
(筆試) 再執行 Email 發送或是大檔案處理等與外部服務整合的背景任務時,提出考慮的三個重要因素(重試次數、重試間隔)
執行任務時,需要有任務 ID,並且第三方服務需要支援根據該 ID 的查詢,在執行任務前先向該第三方服務進行確認,避免之前第三方服務執行成功,但回應時因網路或各種因素失敗,導致內部未接收並變更狀態為執行成功。若是確認過去已執行成功則更新狀態即可,反之則執行任務並變更狀態。
- 可靠性
- 避免重複執行
該題我不確定三個重要因素究竟為何。
面試建議
面試地點在台北矽谷大樓 11 樓,但是沒有找到平面圖,繞了大樓一圈才找到入口,建議面試者提前到達,熟悉環境,雖然有說之後辦公室會換地點。
筆試整體不難,但範圍較廣,含算法題、資料庫索引、RESTful API 設計、分散式系統等題目,建議還是平時就要養成不斷的學習、理解、記憶、複習等習慣,遇到考題廣泛的面試,雖然不一定答的完美,但起碼能夠說出一二。
與工程主管面談的部分,建議對自己的履歷、過往的經驗進行檢視、回顧,主管會問的蠻細節,從過往學習階段到每一份工作的離職原因、中間的空窗期等。