Yelp OA 高頻真題整理|HackerRank 兩題速通攻略 + OA準備指南

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

Yelp OA 高頻真題整理|HackerRank 兩題速通攻略 + OA準備指南

1. 服務中斷

題目描述

Yelp 的 SRE 需要識別系統中服務間的所有依賴關係。當某個服務發生中斷時,中斷會遞迴級聯影響其所有下游子服務。

現給定服務列表services(每個服務包含serviceId和父服務 ID 列表parentServiceIds)、中断服务列表serviceOutages,以及目標服務targetService,需根據以下規則判斷目標服務的狀態:

  1. 正常執行(Operational):服務自身未中斷,且其直接子服務(若存在)均未中斷。
  2. 部分中斷(Partial Outage):服務自身未中斷,但至少有一個直接子服務發生中斷。
  3. 完全中斷(Full Outage):服务自身发生中断,且其所有直接子服务(若存在)均未中断。最终返回目标服务的状态:OperationalPartial OutageFull 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,表示該請求被路由到的伺服器。

要求

  1. 輸出為伺服器 ID 列表,每行一個;
  2. 比值相同時,按伺服器 ID 升序選擇;
  3. 輸入伺服器列表已按 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 所有商家的平均發生次數。

平均計算規則

某事件型別的平均值 = 所有提供了該事件資料的商家的該事件次數的平均值(缺失該事件的商家不參與計算)。

備註

  1. 同一商家不會出現重複的事件型別;
  2. 有效事件型別:photo_viewsadspage_viewsreviews

示例

輸入

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 種事件,且adsreviews達標;
  • 商家 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),輸入一個城市字串,需返回該城市下各連鎖品牌的門店數量,結果按以下規則排序:

  1. 門店數量降序排列;
  2. 門店數量相同時,按品牌名字母序升序排列。

輸入

商家列表(格式:品牌名 – 城市 – 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!

author avatar
Jory Wang Amazon資深軟體開發工程師
Amazon 資深工程師,專注 基礎設施核心系統研發,在系統可擴充套件性、可靠性及成本最佳化方面具備豐富實戰經驗。 目前聚焦 FAANG SDE 面試輔導,一年內助力 30+ 位候選人成功斬獲 L5 / L6 Offer。
END
 0