投 Roblox 之前我在網上找了半天 OA 的資料,結果發現他們家的 OA 跟傳統的 HackerRank 完全不是一回事。整個測評是在 Roblox 自己的遊戲化平臺上做的,不寫程式碼,純靠邏輯思維、資源分配和決策能力。做完之後感覺挺新鮮,但也有不少坑,這篇把我的經歷和思路都寫出來,給後面的人一個參考。

Roblox OA 基本情況
- 平臺:Roblox 自研遊戲化招聘平臺
- 題目數量:4 個 Task
- 總時長:約 2 小時 40 分鐘
- 形式:
- Task 1:程式設計技能測評(50 分鐘)
- Task 2:問題解決與溝通測評(45 分鐘)
- Task 3:問題解決測評(25 分鐘)
- Task 4:決策制定測評(20 分鐘)
整個測評介面做得挺精緻,但操作上有些地方不太順手,建議提前適應一下。
四個 Task 詳細拆解
Task 1:程式設計技能測評(50 分鐘)
這個 Task 是傳統的演算法題,類似 LeetCode,但題目包裝比較厚。
我遇到的題目:
給定一個字串陣列,要求統計不同字元對的數量。字元對的定義是:兩個字元的長度和數字總和都可以透過交換數字得到。
示例:
輸入:members = ["xc", "xt1ox", "td2x"]
輸出:["MESSAGE", "0", "*ALL xt1x td1x *", ["OFFLINE", "1", "xt1x"], ["MESSAGE", "2", "xt1xa st1xa"], ...]
核心考點:
- 字串處理和解析
- 數字提取和比較
- 配對演算法(類似雜湊表或排序)
我的思路:
- 先把每個字串裡的數字提取出來
- 對於每個字串,計算它的長度和數字總和
- 用雜湊表儲存
(長度, 數字總和)作為 key - 遍歷陣列,統計相同 key 的數量
def count_pairs(members):
from collections import defaultdict
def extract_digits(s):
return [int(c) for c in s if c.isdigit()]
def get_key(s):
digits = extract_digits(s)
return (len(s), sum(digits))
count_map = defaultdict(int)
for member in members:
key = get_key(member)
count_map[key] += 1
result = 0
for count in count_map.values():
# 組合數 C(n, 2) = n * (n-1) / 2
result += count * (count - 1) // 2
return result
注意事項:
- 讀題要仔細,題目描述比較長,容易漏掉細節
- 測試用例有 public 和 hidden 兩種,先過 public 再最佳化
- 時間複雜度最好控制在 O(n log n)
Task 2:問題解決與溝通測評(45 分鐘)
這個 Task 也是演算法題,但更側重實際場景。
題目:
給定一個整數陣列,統計不同的數字對 (i, j) 的數量,滿足條件:數字對的長度和數字總和可以透過交換數字得到。
核心考點:
- 數字位數統計
- 排列組合
- 雜湊表最佳化
我的思路:
跟 Task 1 類似,關鍵是找到合適的 key 來分組。
def count_distinct_pairs(numbers):
def get_signature(num):
# 將數字轉為字串,排序後作為 key
digits = sorted(str(abs(num)))
length = len(str(abs(num)))
digit_sum = sum(int(d) for d in str(abs(num)))
return (length, digit_sum, ''.join(digits))
from collections import defaultdict
count_map = defaultdict(int)
for num in numbers:
sig = get_signature(num)
count_map[sig] += 1
result = 0
for count in count_map.values():
result += count * (count - 1) // 2
return result
Task 3:問題解決測評(25 分鐘)
這個 Task 是個遊戲化的工廠模擬題,跟 Task 1 和 2 完全不同。
題目背景:
你要管理一個工廠,控制生產線生產不同的產品,目標是讓利潤最大化。
遊戲機制:
- 有多條產線,每條產線可以生產不同產品
- 原材料有限,需要合理分配
- 每個產品有不同的售價和成本
- 時間有限,需要快速決策
我的策略:
- 優先高利潤產品:先看哪個產品利潤率最高,優先生產
- 資源平衡:別把所有資源都投到一條產線上,容易卡瓶頸
- 時間管理:生產是有時間的,別等一個產品做完再開始下一個
踩坑點:
- 介面操作不太流暢,建議先熟悉一下按鈕位置
- 有些產品需要多步加工,別忘了中間環節
- 最後幾分鐘別再買新裝置了,把手上的資源用完
Task 4:決策制定測評(20 分鐘)
這個 Task 是行為測試,給你一些職場場景,讓你選出最有效和最無效的應對方案。
題目形式:
每道題給 4 個選項,你要選出:
- 1 個最有效的做法
- 1 個最無效的做法
核心考察:
- 團隊協作意識
- 溝通能力
- 問題解決思路
- 職業素養
我的建議:
這部分沒有標準答案,但 Roblox 比較看重這幾點:
- 透明溝通:有問題直接說,別藏著掖著
- 團隊優先:個人成就 < 團隊成功
- 使用者導向:決策時優先考慮使用者體驗
- 主動解決:遇到問題主動推動,別等別人來解決
舉個例子:
場景:你的隊友工作進度落後了,影響到整個專案。
選項: A. 直接向上級彙報 B. 私下找隊友溝通,瞭解原因並提供幫助 C. 自己加班把他的工作做了 D. 在團隊會議上公開指出問題
我的選擇:
- 最有效:B(符合 Roblox 的溝通文化)
- 最無效:D(公開批評不利於團隊氛圍)
測試結果
做完四個 Task 之後,系統會給出即時反饋。我的結果是:All Pass
說實話看到這個結果還是挺開心的,特別是演算法題部分,所有 test cases 都過了,包括 hidden tests。遊戲化測評和行為測試沒有具體分數,但從後續進入面試來看,應該也沒什麼問題。
整個 OA 做下來大概用了 2 個半小時,結束後建議休息一下,別立刻去覆盤,容易影響心態。等第二天再回顧一下哪裡做得好、哪裡可以最佳化。
這次 OA 前我找了 ProgramHelp 團隊做了專門的助攻。他們團隊背景都很硬,牛津、普林斯頓、北大碩博 + Amazon、Google、阿里一線大廠的人。如果你時間緊或者沒什麼頭緒,可以找他們看看。 OA 輔助,簡歷包裝、面試輔導、VO 助攻這些都有:ProgramHelp · VO輔助