Ramp 2026 OA |CodeSignal真题解析 + 4道Coding题思路还原 + 高效通过指南

46次閱讀
No Comments

我刚把 Ramp 2026 OA 刷完,趁着记忆还热,来给大家做一波完整复盘。这场笔试是在 CodeSignal 上完成的,总共 90 分钟 4 道 coding,全程需要开摄像头监考,中途不能暂停,整体节奏还是挺紧的。如果你是第一次做这种连续 4 题 + 强监考的 OA,压力会比普通 HackerRank 明显大一截。

Ramp 2026 OA |CodeSignal真题解析 + 4道Coding题思路还原 + 高效通过指南

Level 1

云存储系统需要支持文件操作:

  • add_file(self, name: str, size: int) -> bool:向存储中添加一个名为 name 的新文件,size 是该文件所需的内存字节数。若同名文件已存在,则操作失败。成功添加文件返回 True,否则返回 False
  • get_file_size(self, name: str) -> int | None:若文件 name 存在则返回其大小,否则返回 None
  • delete_file(self, name: str) -> int | None:删除文件 name。成功删除则返回被删除文件的大小,若文件不存在则返回 None

解题思路:

level1,要你维护一个 文件名->文件大小 的映射,需要支持增删查,并且按要求返回 bool 或者 None,就用哈希表管理一下状态就行了,把重复添加还有不存在删除这两类边界条件判断清楚就行了。

Level 2

实现一个操作,用于检索具有特定前缀的文件统计信息:

  • get_n_largest(self, prefix: str, n: int) -> list[str]:返回名称以 prefix 开头的前 n 个最大文件的列表,格式为 ["<name_1>(<size_1>)", ..., "<name_n>(<size_n>)"]
    • 文件按大小降序排序;若大小相同,则按文件名字典序升序排序。
    • 若无符合条件的文件,返回空列表;若符合条件的文件数少于 n,则返回全部符合条件的文件。

解题思路:

就新增了要你求前n大,就是在已经有的文件里面,做前缀过滤,然后取出前n大就行了,按大小降序,文件名升序的顺序排序,就直接在我们存的哈希表里面筛,再排个序,最后按指定格式返回字符串。

Level 3

实现多用户支持,所有用户共享同一个文件系统,但每个用户有存储容量限制:

  • add_user(self, user_id: str, capacity: int) -> bool:添加一个新用户,capacity 为其存储容量上限(字节)。若 user_id 已存在则操作失败。成功创建返回 True,否则返回 False
  • add_file_by(self, user_id: str, name: str, size: int) -> int | None:功能与 Level 1 的 add_file 一致,但文件归 user_id 所有。若添加后会超出用户容量限制,则无法添加。成功添加则返回用户剩余容量,否则返回 None
    • 注意:Level 1 中 add_file 操作默认由 user_id = "admin" 执行,admin 拥有无限存储容量。
  • merge_user(self, user_id_1: str, user_id_2: str) -> int | None:将 user_id_2 的账户合并到 user_id_1user_id_2 的所有文件所有权转移给 user_id_1,剩余容量也加到 user_id_1 的容量限制中。合并成功后 user_id_2 被删除,返回 user_id_1 合并后的剩余容量;若任一用户不存在则返回 None

解题思路:

需要在全局文件系统的基础上,增加用户维度的容量管理与账户合并逻辑。我们可以用多个哈希表分层维护:一个全局哈希表记录所有文件归属与大小,再用用户专属哈希表记录每个用户的已用容量和总容量限制。新增用户时检查 ID 是否重复;添加文件时校验用户容量是否足够,满足条件才写入并更新剩余容量;合并账户时,将被合并用户的文件所有权转移、容量累加,最后删除被合并用户,全程保证文件状态与用户容量数据的一致性。

Level 4

实现用户文件备份功能:

  • backup_user(self, user_id: str) -> int | None:备份 user_id 所有文件的当前状态(文件名和大小),备份存储在独立系统中,不受后续文件操作影响。若该用户已有备份则覆盖。成功备份返回备份文件数量,若用户不存在则返回 None
  • restore_user(self, user_id: str) -> int | None:将 user_id 的文件状态恢复到最近一次备份。若从未备份过,则删除该用户所有文件。若因其他用户已存在同名文件导致无法恢复,则忽略该文件。成功恢复返回恢复的文件数,若用户不存在则返回 None
    • 注意:merge_user 不影响 user_id_1 的备份,user_id_2 及其备份会被删除。
    • 注意:restore_user 操作不影响用户的容量限制。

解题思路:

在 Level 3 的基础上叠加备份与恢复功能,需要额外维护用户备份快照的独立存储。备份时将用户当前所有文件的状态(名称和大小)完整保存为快照,覆盖旧备份;恢复时先清空该用户的当前文件,再逐一遍历快照尝试恢复,遇到全局已存在的同名文件则跳过,最终统计成功恢复的文件数,同时保证备份数据不受后续操作影响,且恢复操作不改变用户的容量限制。

关于 Ramp OA 怎么过

Ramp OA 时间紧、隐藏 case 多、还开摄像头,不少同学容易卡住。 我已经帮助数百名各种背景的学员顺利上岸。需要帮助的可以直接找Programhelp,团队成员来自牛津、普林斯顿、北大及 Amazon/Google/阿里,所有 OA 代写 和 CodeSignal 代考均亲自操作。所有测试用例 100% 通过,不通过全额退款。24-48小时加急,直接对接。

author avatar
Jory Wang Amazon资深软件开发工程师
Amazon 资深工程师,专注 基础设施核心系统研发,在系统可扩展性、可靠性及成本优化方面具备丰富实战经验。 目前聚焦 FAANG SDE 面试辅导,一年内助力 30+ 位候选人成功斩获 L5 / L6 Offer。
正文完
 0