投 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辅助