Ramp 自 2024 年起把所有 SWE 崗位(NG / Backend / FullStack / Platform)都收口到同一份 CodeSignal Industry Coding 測評——題目復用率 ~60%,但評分門檻和崗位 mapping 一直在調整。本文不是題解清單,而是從工程師視角回答:「拿到 Ramp OA 邀請之後,我應該如何系統性準備?」
一、Ramp 招聘大局觀(2026 H1)
| 維度 | 現況 |
|---|---|
| 總部 | NYC(80% HC) + 舊金山 + 遠端少量 |
| 在招崗位 | SDE NG、Backend、FullStack、Platform、Data |
| 招聘平台 | Ashby + CodeSignal |
| OA 形式 | CodeSignal Industry Coding(4 題 70 分鐘) |
| onsite 邀請 cutoff | 學員觀察 ≥ 720 / 850 |
| 薪資中位 | NG total comp $190k–$240k |
關鍵變化:2026-Q1 起 Ramp 把「OA 通過率」從 35% 降到 ~25%,主要靠提高 cutoff 而不是換題——所以題庫本身仍可參考。
二、CodeSignal 平台機制(必須知道)
| 項目 | 詳情 |
|---|---|
| 題量 | 4 題,難度遞增 |
| 時長 | 70 分鐘(1 次性) |
| 評分 | 單題部分用例計分;總分 850 |
| 重做 | 不能,一次決定 |
| 反作弊 | 切屏記錄、剪貼板監控、鏡頭部分啟用 |
| IDE | 瀏覽器內編輯器,Python / Java / JS / Go 等 12 種 |
| 除錯 | 有 console,但不能逐步除錯 |
三、4 題分布與時間預算
Q1 (200 分) ≈ 資料結構基本操作 → 10 分鐘
Q2 (250 分) ≈ 字串 / 狀態機 → 15 分鐘
Q3 (300 分) ≈ 業務建模(bank/refund 類)→ 20 分鐘
Q4 (300 分) ≈ 綜合實作 + 優化 → 25 分鐘
--------
70 分鐘
學員觀察:80% 拿到 720+ 的學員都是 Q1-Q3 全 AC + Q4 拿到 60-70%。把所有時間堆在 Q4 上、放棄 Q1 優化的策略幾乎都失敗。
四、Q3 業務建模:Bank Transaction System(必考)
題面:實作一個 Bank 系統,支援:
create_account(t, id)deposit(t, id, amount)withdraw(t, id, amount)(餘額不足返回 None)transfer(t, src, dst, amount)top_spenders(t, n)(按累計支出降序返回前 n 個帳戶)
class BankSystem:
def __init__(self):
self.accounts = {}
self.spending = {}
def create_account(self, t, account_id):
if account_id in self.accounts:
return False
self.accounts[account_id] = 0
self.spending[account_id] = 0
return True
def deposit(self, t, account_id, amount):
if account_id not in self.accounts:
return None
self.accounts[account_id] += amount
return self.accounts[account_id]
def withdraw(self, t, account_id, amount):
if account_id not in self.accounts:
return None
if self.accounts[account_id] < amount:
return None
self.accounts[account_id] -= amount
self.spending[account_id] += amount
return self.accounts[account_id]
def transfer(self, t, src, dst, amount):
if src not in self.accounts or dst not in self.accounts:
return None
if src == dst or self.accounts[src] < amount:
return None
self.accounts[src] -= amount
self.accounts[dst] += amount
self.spending[src] += amount
return self.accounts[src]
def top_spenders(self, t, n):
ranked = sorted(self.spending.items(), key=lambda kv: (-kv[1], kv[0]))
return [f"{aid}({amt})" for aid, amt in ranked[:n]]
時間複雜度:操作 O(1),top_spenders O(k log k) 空間:O(n)
得分關鍵:很多學員跌在
top_spenders的「同分時按 id 字典序」——主動列出排序鍵 tuple 是高分動作。
五、Q4 綜合實作:Refund + Spending Limit 狀態機
Q4 在 Q3 基礎上擴展:
- 客戶可申請 Refund:扣回已支出的金額(影響 spending 累計)
- 加入 Spending Limit:每月超過 limit 的支出被拒絕
- 加入 Cashback:每筆支出 1% 返現到餘額
from collections import defaultdict
import heapq
class RampSystem(BankSystem):
def __init__(self):
super().__init__()
self.limits = {}
self.month_spend = defaultdict(int)
self.refund_queue = []
@staticmethod
def _ym(t):
return t // (30 * 24 * 60 * 60 * 1000)
def set_limit(self, t, account_id, limit):
self.limits[account_id] = limit
return True
def pay(self, t, account_id, amount):
if account_id not in self.accounts:
return None
ym = self._ym(t)
used = self.month_spend[(account_id, ym)]
limit = self.limits.get(account_id, float("inf"))
if used + amount > limit or self.accounts[account_id] < amount:
return None
self.accounts[account_id] -= amount
self.spending[account_id] += amount
self.month_spend[(account_id, ym)] += amount
cashback = amount // 100
self.accounts[account_id] += cashback
return self.accounts[account_id]
def request_refund(self, t, account_id, amount):
heapq.heappush(self.refund_queue, (t + 24 * 3600 * 1000, account_id, amount))
return True
def process_refunds(self, t):
processed = []
while self.refund_queue and self.refund_queue[0][0] <= t:
due, aid, amt = heapq.heappop(self.refund_queue)
self.accounts[aid] += amt
self.spending[aid] = max(0, self.spending[aid] - amt)
processed.append((aid, amt))
return processed
時間複雜度:pay O(1), refund O(log r) 空間:O(n + r)
Q4 評分關鍵:24 小時延遲和超 limit 拒絕 是 2026 年新引入的兩個 hidden case,單純抄 2025 題解會丟 30 分。
六、崗位差異(拿到同樣分數後)
| 崗位 | onsite 數量 | 重點考察 | 同分情況下的 mapping 優勢 |
|---|---|---|---|
| SDE NG | 4 輪 | 演算法 + System Design + BQ | 通用 |
| Backend | 4–5 輪 | 系統設計 + Postgres / Redis | 強後端專案 |
| FullStack | 4 輪 | React + REST API 設計 | 前端 portfolio |
| Platform | 5 輪 | infra / Kubernetes / CI | DevOps 專案 |
| Data | 4 輪 | SQL + Python ETL | 資料 pipeline 專案 |
學員觀察:同樣 OA 750 分,FullStack 收到邀請最快(平均 3 天),Platform 最慢(10+ 天,因為 HC 緊)。
七、備考路線(4 週計畫)
Week 1: Bank System Q3 全套真題 + 設計模式回顧
Week 2: 字串 / 滑窗 / 佇列 (Q1 + Q2)
Week 3: Refund + Limit + Cashback 綜合 (Q4)
Week 4: 限時模擬 3 次 + 錯點複盤
每週固定 2 次 70 分鐘限時模擬——很多學員掛在節奏不在題目。
八、常見 Pitfalls
- 沒讀完題就開寫:Ramp 題面長 (~600 字),前 5 分鐘讀題不虧
- 忽視邊界:餘額剛好為 0、轉帳給自己、refund 超過原支出
- Q4 不寫 helper:所有邏輯擠在一個函數 → 難除錯 + 易錯
- Python 用 list.pop(0):Q4 流式處理 TLE 主因,改用 deque
- 不讀 expected output:CodeSignal 的輸出格式嚴格,多空格少換行都扣分
九、常見問題 FAQ
Q1:Ramp OA 多少分能進 onsite?
A:學員觀察 720 分 是隱形 cutoff;NG 760+ 邀請穩,Lateral 可能 700 也能進。
Q2:Ramp OA 重複題率有多高?
A:Q3 的 bank system 幾乎100% 復用(題面微調);Q4 每季度換 1 個 twist。
Q3:Ramp 給 H1B sponsor 嗎?
A:給。NYC HC 大頭,對 H1B 友好度 ≈ Stripe / Plaid。
Q4:onsite 難度怎麼樣?
A:4 輪——1 演算法、1 系統設計、1 專案深挖、1 BQ。演算法難度 LC Med,系統設計偏支付 / 帳本類。
Q5:用 Python 還是 Java?
A:Python 推薦——80% 學員選 Python,Q3/Q4 業務建模 Python class 更短。Java 在 Q4 容易 TLE。
十、需要 Ramp OA / VO 輔助?
Ramp 的 bank-system 題考察的是業務建模 + 狀態機思維,不是 LeetCode 難度。如果你正在準備:
- 微信:Coding0201 · 立即聯絡
- Email:[email protected]
- Telegram:@OAVOProxy
我們提供:Ramp 當週 CodeSignal 真題、Bank System 多變體訓練、onsite 系統設計 mock、Stripe / Plaid 等同類公司題庫串練。
聯絡方式
Email: [email protected]
Telegram: @OAVOProxy
微信: Coding0201
最後更新:2026-05-18 | 作者:oavoservice 面試組