← 返回博客列表
Uber

Uber SDE2 VO 面經複盤:First One-Time Visitor 服務設計題 + 3 個高頻 BQ

2026-04-12

Uber SDE2 VO Interview Recap

這輪 Uber SDE2 Level VO 的 coding/design 題本身不難,但很考驗候選人對「動態更新 + 順序約束」的建模能力。

題目要求實作兩個操作:

若不存在,回傳 None / null


這題真正要考什麼

它同時包含兩個條件:

很多人卡在「使用者第二次訪問時,要怎麼從順序結構中間刪掉」。


最穩的建模方式

兩個資料結構就夠:

更新路徑

呼叫 postCustomerVisit(customerId) 時:

  1. 次數加一
  2. 若是第一次出現,加入隊尾

查詢路徑

呼叫 getFirstOneTimeVisitor() 時:

  1. 檢查隊首目前次數是否仍為 1
  2. 若不是,表示已失效,彈出隊首
  3. 重複直到隊首有效或隊列為空
  4. 有效隊首即答案;空隊列回傳 None

為什麼懶清理是關鍵

隊列中會有失效元素:第一次訪問時入隊,但後續又訪問過。

這是刻意的設計。與其在每次更新時做中間刪除,不如在查詢時從隊首懶清理,邏輯更簡單,也更符合流式場景。


SDE2 常見追問

1)時間複雜度

每個元素最多只會被彈出一次。

2)並發一致性

SDE2 常被追問 thread safety:

3)記憶體控制

長時間運行下 ID 會增長,可補充:


Uber SDE2 高頻 3 個 BQ 問題

  1. 講一次你發現團隊方向有問題並主動修正的經歷。你怎麼識別風險、怎麼推動落地?
  2. 講一次你和 PM 或跨團隊在優先級上有分歧的經歷。你如何平衡交付速度和工程品質?
  3. 講一次你處理 production incident 的經歷。你如何排查、溝通同步與後續防再發?

這類 BQ 主要看 SDE2 的 owner 意識:不只是把任務做完,而是對結果和後續影響負責。


備考建議

這類題建議按這個順序練習:

面試裡把這個節奏講順,通常會比直接埋頭寫程式更加分。


需要面試真題? 立刻聯繫微信 Coding0201獲得真題


聯繫方式

Email: [email protected]
Telegram: @OAVOProxy