
这个 Roblox OA 机器人25min,工厂25min,决策力25min,前哨站40min 编程50min没把握可以 辅助,其他也可以问问,跟optiver差不多的。
这套 Roblox SWE OA 共五不分:机器人 25 分钟、玩具工厂 25 分钟、Decision Making 25 分钟、前哨站 40 分钟,以及两道 Coding 50 分钟。节奏快,先熟悉游戏规则比急着冲分更重要;Coding 则是标准的读题、建模和边界检查。
Roblox 官方把技术岗位测评分成游戏化问题解决、职场决策和 Coding 三部分,并提供可重复练习的游戏环境。练习入口与测评说明 值得提前过一遍。
造小车:先跑通,再优化组合
这一段要从部件库里搭出小车,通过不同地形。每辆车最多装三个部件,部件放的位置和组合关系都会影响结果。
先用最少的部件跑通第一张地图,记录能量消耗、失效位置和部件搭配。第二张地图再改组合。不要一开始就追求复杂解法,测试回放能直接告诉你问题是动力不足、重心不稳,还是两个部件没有形成有效配对。
玩具工厂:利润不是只看售价
工厂题给定原材料、生产线、时间和仓储限制,要在 24 小时内安排生产,目标是拿到更高收益。
先算每种玩具的单位成本、单位利润和单位时间收益。原料充足却堵在某条生产线,或产成品堆积在仓库,都会让看上去利润高的方案失效。Buff 也要放进总账:它能缩短哪一段时间、增加多少产能、最后是否真的提高利润。
Decision Making:把责任讲清楚
这段是职场场景题。回答要体现三件事:问题有人负责、信息及时同步、分歧能落到行动上。
遇到上线风险,先说明影响范围和当前数据,再拉上相关同事给出可执行的处理方案;不要回避问题,也不要把责任推给别人。近期候选人记录也将这部分描述为独立的 workplace scenario 测评,而非单纯的性格问卷。相关经历
前哨站:读清资源和目标条件
前哨站的时间更长。先花几分钟确认资源流向、解锁条件和失败条件,再决定先补短板还是先扩张。每次改动后看结果,不要同时修改多项配置,否则很难判断是哪一步带来了收益或损失。
把原文里的两段 Coding 替换为以下版本即可。第一题重点改正为“每块固定含 1–16,总和为 136”;第二题改正为“选连续 k 天并强制全卖出”。
第一题:补全 4×4 方阵,再按缺失值重排

题目描述
矩阵 mat 有 4 行、4 × n 列,由 n 个并排的 4×4 方阵组成。每个方阵本应恰好包含 1 到 16,但有一个位置用 ? 表示缺失数字。
需要完成两步:
- 找出每个方阵缺失的数字,并替换
?。 - 按缺失数字从小到大重新排列这些
4×4方阵;若两个方阵缺失数字相同,保持它们在原矩阵中的相对顺序。
最后返回更新后的 mat。
解题思路
1 到 16 的和固定为 136。遍历每个方阵,累加已知数字后直接计算:
missing = 136 - knownSum
补全 ? 后,把该方阵、缺失值和原始下标一起保存。排序键使用 (missing, originalIndex),即可同时满足升序与稳定顺序要求。最后按排序结果把每个 4×4 方阵横向拼回答案矩阵。
def solution(mat):
n = len(mat[0]) // 4
blocks = []
for block_id in range(n):
start = block_id * 4
block = [row[start:start + 4] for row in mat]
known_sum = 0
missing_pos = None
for r in range(4):
for c in range(4):
if block[r][c] == "?":
missing_pos = (r, c)
else:
known_sum += block[r][c]
missing = 136 - known_sum
r, c = missing_pos
block[r][c] = missing
blocks.append((missing, block_id, block))
blocks.sort(key=lambda item: (item[0], item[1]))
result = [[] for _ in range(4)]
for _, _, block in blocks:
for r in range(4):
result[r].extend(block[r])
return result
复杂度:补全所有方阵为 O(n),排序为 O(n log n)。
第二题:把连续 k 天改成卖出,求最大总收益

题目描述
prices[i] 表示第 i 天股票价格,algo[i] 表示机器人原计划:
0:买入一股;1:卖出一股。
现在可选连续 k 天,把这段计划全部改成卖出。收益等于所有卖出价格之和减去所有买入价格之和。求最大收益。
解题思路
先计算不修改计划时的原始收益:
algo[i] = 1 -> +prices[i]
algo[i] = 0 -> -prices[i]
如果某天原本是买入,把它改成卖出,收益会从 -prices[i] 变成 +prices[i],增益是:
gain[i] = 2 × prices[i]
原本已经是卖出的天改完后不变,增益为 0。因此问题变成:在 gain 数组中找长度恰好为 k 的最大子数组和,用滑动窗口完成。
def solution(prices, algo, k):
base_revenue = 0
gains = []
for price, action in zip(prices, algo):
if action == 1:
base_revenue += price
gains.append(0)
else:
base_revenue -= price
gains.append(2 * price)
window_sum = sum(gains[:k])
best_gain = window_sum
for right in range(k, len(prices)):
window_sum += gains[right]
window_sum -= gains[right - k]
best_gain = max(best_gain, window_sum)
return base_revenue + best_gain
例如 prices = [2, 4, 1, 5, 2, 6, 7]、algo = [0, 1, 0, 0, 1, 0, 0]、k = 4:
- 原始收益为
-15; - 最大增益窗口是最后四天,增益为
36; - 最终收益为
21。
复杂度:时间 O(n),额外空间 O(n);若不单独保存 gains,可压缩到 O(1) 额外空间。
Roblox OA 的时间安排
- 前四段先读目标和规则,首次尝试以建立反馈为主。
- Coding 前两分钟确认输入、输出和边界,不要边读边写。
- 第一题完成后先跑样例,再进入第二题。
- 最后留几分钟检查整数溢出、下标范围和空数组。
FAQ
Roblox OA Coding 是两题共用 50 分钟吗?
是,时间应按两题总量分配。先拿下结构更清晰的一题,再处理状态更多的题。
工厂题要追求最高分吗?
先保证资源链路完整,再优化利润。产能错配和原料浪费会直接拖低结果。
车辆题卡住怎么办?
回看测试结果,单独改一个部件或位置。一次改太多项,无法判断真正生效的组合。
参考来源
备考支持
Roblox OA 的准备重点是限时读题、游戏化任务里的状态判断,以及 Coding 的实现与调试。OA 题型解析、算法训练和模拟练习都应围绕这些环节展开。