最近剛做完 Yelp OA ,整體體驗一句話總結:題目不難,但寫慢一點就容易來不及。這次是標準配置:平臺是HackerRank,題量是2題,時間一般在60min 左右(我這次 20min 提前做完),分享一些高頻真題造福大家。

1. 服務中斷
題目描述
Yelp 的 SRE 需要識別系統中服務間的所有依賴關係。當某個服務發生中斷時,中斷會遞迴級聯影響其所有下游子服務。
現給定服務列表services(每個服務包含serviceId和父服務 ID 列表parentServiceIds)、中断服务列表serviceOutages,以及目標服務targetService,需根據以下規則判斷目標服務的狀態:
- 正常執行(Operational):服務自身未中斷,且其直接子服務(若存在)均未中斷。
- 部分中斷(Partial Outage):服務自身未中斷,但至少有一個直接子服務發生中斷。
- 完全中斷(Full Outage):服务自身发生中断,且其所有直接子服务(若存在)均未中断。最终返回目标服务的状态:
Operational、Partial Outage或Full Outage。
示例
輸入:
json
{
"services": [
{"serviceId": 1, "parentServiceIds": []},
{"serviceId": 2, "parentServiceIds": [1]},
{"serviceId": 3, "parentServiceIds": [2]},
{"serviceId": 4, "parentServiceIds": [2]},
{"serviceId": 5, "parentServiceIds": [1]},
{"serviceId": 6, "parentServiceIds": [5]}
],
"serviceOutages": [2,3],
"targetService": 2
}
輸出:Full Outage
解釋:
- 服务 2 自身在中断列表中,且其直接子服务 3、4 均发生中断,因此服务 2 状态为完全中断;
- 服務 1 自身未中斷,但直接子服務 2 中斷,狀態為部分中斷;服務 5 自身未中斷,子服務 6 未中斷,狀態為正常。
2. 負載均衡
題目描述
Yelp 的網站和移動端應用由多個服務支撐,不同服務存在多例項部署。需實現加權響應時間負載均衡策略,將新請求分配給當前負載 / 工作執行緒數(weight)比值最小的例項;若比值相同,優先選擇 ID 更小的伺服器。
輸入
incoming_requests:需要處理的請求總數;servers:伺服器列表,每個伺服器包含id(唯一 ID)、num_workers(工作執行緒數 / 權重)、load(當前處理的請求數)。
輸出
按請求順序,每行輸出一個伺服器 ID,表示該請求被路由到的伺服器。
要求
- 輸出為伺服器 ID 列表,每行一個;
- 比值相同時,按伺服器 ID 升序選擇;
- 輸入伺服器列表已按 ID 升序排列。
示例
輸入:
json
{
"incoming_requests": 6,
"servers": [
{"id": 1, "num_workers": 5, "load": 2},
{"id": 2, "num_workers": 2, "load": 1},
{"id": 3, "num_workers": 1, "load": 0}
]
}
輸出:
plaintext
3
1
2
1
1
1
解釋:
計算各伺服器load/num_workers比值:
- 伺服器 3:0/1=0(最小),優先分配;
- 後續請求依次按比值 + ID 規則分配,最終得到上述輸出。
3. 活躍商家
題目描述
給定 Yelp 的使用者互動事件列表,需返回活躍商家 ID 列表(按升序排列)。
活躍判定規則
一個商家被視為活躍,需滿足:在至少兩種事件型別中,該商家的事件發生次數≥該事件型別 across 所有商家的平均發生次數。
平均計算規則
某事件型別的平均值 = 所有提供了該事件資料的商家的該事件次數的平均值(缺失該事件的商家不參與計算)。
備註
- 同一商家不會出現重複的事件型別;
- 有效事件型別:
photo_views、ads、page_views、reviews。
示例
輸入:
plaintext
Event('ads', 7, 3)
Event('ads', 8, 2)
Event('ads', 5, 1)
Event('page_views', 11, 2)
Event('page_views', 12, 3)
Event('photo_views', 10, 3)
Event('reviews', 7, 2)
輸出:[2, 3]
解釋:
- 商家 2:
ads(8)≥ 平均值 (7+8+5)/3=6.67、page_views(11)≥ 平均值 (11+12)/2=11.5?不,11<11.5;reviews(7)≥ 平均值 7;滿足 2 種事件,且ads、reviews達標; - 商家 3:
ads(5)<6.67;page_views(12)≥11.5;photo_views(10)≥ 平均值 10;滿足 2 種事件達標; - 最終活躍商家為 2、3,按升序輸出。
4. 唯一餐品
題目描述
給定餐廳的餐品列表,每個餐品由食材列表定義。若兩個餐品的食材集合完全相同(食材順序無關),則視為同一餐品。需統計選單中唯一餐品的數量。
輸入
meals:餐品列表,每個餐品包含name(名稱)、ingredients(食材列表)。
輸出
唯一餐品的數量。
示例
輸入:
plaintext
meals: [
{name: "Basic Burger", ingredients: [Lettuce, Tomato, Onion, Patty]},
{name: "Chief Cheese Burger", ingredients: [Cheese, Tomato, Patty, Lettuce]},
{name: "Jay's Burger", ingredients: [Onion, Tomato, Patty, Lettuce]},
{name: "High Water Sandwich", ingredients: [Tomato, Patty, Lettuce, Cheese]}
]
輸出:1
解釋:
所有餐品的食材集合均為{Tomato, Patty, Lettuce, Cheese/Onion}(去重後一致),因此唯一餐品數量為 1。
5. 連鎖品牌統計
題目描述
給定商家資料(包含品牌名、所在城市、ID),輸入一個城市字串,需返回該城市下各連鎖品牌的門店數量,結果按以下規則排序:
- 門店數量降序排列;
- 門店數量相同時,按品牌名字母序升序排列。
輸入
商家列表(格式:品牌名 – 城市 – ID),示例輸入包含 Austin 城市的商家資料。
輸出
按規則排序的連鎖品牌 – 門店數量列表,示例輸出 Austin 的結果為:
plaintext
Whole Foods - 2
Peets Coffee - 1
Starbucks - 1
備註
輸入已完成解析,需實現函式:入參為商家列表 + 城市字串,出參為連鎖品牌 – 門店數量列表。
Yelp OA / 各種 OA 到底該怎麼準備?
如果需要這些高頻真題的題解和答案或者更多大廠的真題也可以 聯絡我們 领取。
如果你正在準備大廠 OA 或面試,需要一些專業輔助,我可以幫忙提供支援: OA 代寫支援 HackerRank、牛客網、Codesignal 等平臺,我會確保所有測試用例 100% 透過,不透過不收費; VO 面試時,可以由北美 CS 背景的專家提供實時思路引導,幫助你理清思路; 此外,也支援代面試、全程協助服務,從 OA 到 Offer 談判全程幫忙。 其他如模擬面試、演算法輔導、簡歷最佳化等,都可以根據你的需求提供幫助。
歡迎私信詳談,我會根據你的具體情況給出合適的方案。祝大家面試順利,早日拿到心儀的 Offer!