Roblox OA 要玩小游戏和编程 |Roblox OA 北美秋招 考点拆解

20Times read
Roblox OA 要玩小游戏和编程 |Roblox OA 北美秋招 考点拆解

这个 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 方阵,再按缺失值重排

Roblox OA 要玩小游戏和编程 |Roblox OA 北美秋招 考点拆解

题目描述

矩阵 mat 有 4 行、4 × n 列,由 n 个并排的 4×4 方阵组成。每个方阵本应恰好包含 116,但有一个位置用 ? 表示缺失数字。

需要完成两步:

  1. 找出每个方阵缺失的数字,并替换 ?
  2. 按缺失数字从小到大重新排列这些 4×4 方阵;若两个方阵缺失数字相同,保持它们在原矩阵中的相对顺序。

最后返回更新后的 mat

解题思路

116 的和固定为 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 天改成卖出,求最大总收益

Roblox OA 要玩小游戏和编程 |Roblox OA 北美秋招 考点拆解

题目描述

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 题型解析、算法训练和模拟练习都应围绕这些环节展开。

author avatar
Jack Xu MLE | 微软人工智能技术人员
Princeton University博士,人在海外,曾在谷歌、苹果等多家大厂工作。深度学习NLP方向拥有多篇SCI,机器学习方向拥有Github千星⭐️项目。
End of text
 0