我剛把 Ramp 2026 OA 刷完,趁著記憶還熱,來給大家做一波完整覆盤。這場筆試是在 CodeSignal 上完成的,總共 90 分鐘 4 道 coding,全程需要開攝像頭監考,中途不能暫停,整體節奏還是挺緊的。如果你是第一次做這種連續 4 題 + 強監考的 OA,壓力會比普通 HackerRank 明顯大一截。

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個最大檔案的列表,格式為["()", ..., "()"]。- 檔案按大小降序排序;若大小相同,則按檔名字典序升序排序。
- 若無符合條件的檔案,返回空列表;若符合條件的檔案數少於
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 擁有無限儲存容量。
- 注意:Level 1 中
merge_user(self, user_id_1: str, user_id_2: str) -> int | None:將user_id_2的账户合并到user_id_1。user_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小時加急,直接對接。