Capital One 是美國 Top-3 信用卡發卡銀行,技術招聘量在金融行業裡僅次於 JPMorgan 和 BlackRock,SWE 與 Technology Development Program (TDP) 每年放出 800+ 個 New Grad / Intern 職缺。它的 OA 流程是業內最規整的——CodeSignal 程式 + HireVue 影片行為,兩關都過才算 OA 通過。
本文按一畝三分地、Reddit r/CapitalOne 與 Glassdoor 上 2025-2026 的最新回饋,把 Capital One OA 的題型、評分、Recruit Loop 銜接講清楚(面向 SWE / TDP track;如果你考的是 Data Science,可以參看我們的 DS 版 OA 文章)。
Capital One SWE / TDP OA 概覽
| 維度 | 細節 |
|---|---|
| 平台 | CodeSignal General Coding Framework |
| 時長 | 75 分鐘(部分批次為 70 分鐘) |
| 題量 | 4 道(Level 1 → Level 4 遞進) |
| 難度 | 字串解析 + 模擬 + 集合運算 + DP 複合 |
| 通過線 | Level 1-3 全 AC + Level 4 ≥ 50% hidden test |
| 後續 | HireVue 行為影片(5-7 題,每題 2-3 分鐘) |
| 回饋週期 | 7-21 天 |
最大特點:Capital One 不出 LC 風格的圖論 / DP 難題,而是出銀行業務相關的字串 / 模擬 / 狀態題。題面長(每道 1-2 屏文字),讀題 + 建模時間 ≥ 一半。
真題:Bank Transaction Logs(4 級遞進)
這是 2025 秋季到 2026 春季出現頻率最高的題面之一。
Level 1:基礎日誌解析
題面:給定字串陣列 logs,每條形如 "2026-04-15 10:23:01 USR_001 DEPOSIT 250.00"。實作 top_k_balance(logs, k),回傳當前餘額最高的 k 個用戶(同餘額按 user_id 字典序)。
操作類型只有 DEPOSIT 和 WITHDRAW。
from collections import defaultdict
def top_k_balance(logs, k):
bal = defaultdict(float)
for line in logs:
parts = line.split()
# parts: [date, time, user, op, amount]
user = parts[2]
op = parts[3]
amt = float(parts[4])
if op == "DEPOSIT":
bal[user] += amt
elif op == "WITHDRAW":
bal[user] -= amt
ranked = sorted(bal.items(), key=lambda x: (-x[1], x[0]))
return [u for u, _ in ranked[:k]]
坑:浮點累加有誤差,hidden test 會卡 0.01 精度。Level 1 一開始就用 int(amt * 100) 改成「分」,後續 Level 全程整數運算,會省事很多。
Level 2:帳戶凍結狀態
新增操作 FREEZE 與 UNFREEZE:被 freeze 的帳戶任何 WITHDRAW 都失敗(仍記錄但不扣錢),DEPOSIT 仍正常。
def parse_logs_v2(logs):
bal = defaultdict(int) # 單位:分
frozen = set()
fail_count = defaultdict(int)
for line in logs:
parts = line.split()
user, op = parts[2], parts[3]
if op == "FREEZE":
frozen.add(user)
elif op == "UNFREEZE":
frozen.discard(user)
elif op == "DEPOSIT":
bal[user] += int(float(parts[4]) * 100)
elif op == "WITHDRAW":
amt = int(float(parts[4]) * 100)
if user in frozen or bal[user] < amt:
fail_count[user] += 1
else:
bal[user] -= amt
return bal, fail_count
評分點:用 int(float(x) * 100) 一行避免後續浮點累計錯。Level 2 還要回傳 fail_count——hidden test 通常包含「用戶 X 應有 5 次失敗 WITHDRAW」的斷言。
Level 3:滑動視窗統計
新增需求:實作 transactions_in_last_k_minutes(logs, query_user, k)——給定查詢用戶與 k 分鐘視窗,回傳該用戶最後一次操作前 k 分鐘內的成功 transaction 總數。
思路:先線性掃一遍構建每個 user 的 (timestamp, op, success?) 列表,然後對查詢用戶做雙指針 / 二分。
from datetime import datetime
from bisect import bisect_left
def build_index(logs):
index = defaultdict(list) # user -> list of (epoch_seconds, success_bool)
bal = defaultdict(int)
frozen = set()
for line in logs:
parts = line.split()
ts = datetime.strptime(parts[0] + " " + parts[1], "%Y-%m-%d %H:%M:%S").timestamp()
user, op = parts[2], parts[3]
if op == "FREEZE":
frozen.add(user)
continue
if op == "UNFREEZE":
frozen.discard(user)
continue
amt = int(float(parts[4]) * 100)
success = True
if op == "WITHDRAW":
if user in frozen or bal[user] < amt:
success = False
else:
bal[user] -= amt
else: # DEPOSIT
bal[user] += amt
index[user].append((ts, success))
return index
def transactions_in_last_k_minutes(index, user, k):
if user not in index or not index[user]:
return 0
last_ts = index[user][-1][0]
threshold = last_ts - k * 60
times = [t for t, _ in index[user]]
pos = bisect_left(times, threshold)
return sum(1 for t, s in index[user][pos:] if s)
坑:題目用 datetime 字串,直接字串比較就夠(YYYY-MM-DD HH:MM:SS 字典序 = 時間序)。但滑窗 k 分鐘最好轉成 epoch,否則跨小時 / 跨日要小心。
Level 4:用戶分群與最優歸併
最終 Level 題面:把所有用戶按「行為相似度」分群(操作時間視窗 + 金額水平接近),回傳 k 個最大的用戶群。需要 K-Means / hash bucketing 或簡單聚類。
70 分鐘內拿滿分非常困難。典型應對:用簡化分桶——按 (avg amount bucket, total transactions bucket) 二維 hash 分桶,然後輸出 size 最大的 k 個桶。能拿 50-70% hidden test,足夠過線。
def cluster_users(index, k):
profile = {}
for user, ops in index.items():
succ = [op for op in ops if op[1]]
if not succ:
profile[user] = (0, 0)
continue
n = len(succ)
# 粗略分桶:操作數桶 0/1/2/3+, 時間跨度桶
if n <= 1:
n_bucket = 0
elif n <= 5:
n_bucket = 1
elif n <= 20:
n_bucket = 2
else:
n_bucket = 3
span = succ[-1][0] - succ[0][0]
s_bucket = 0 if span < 3600 else 1 if span < 86400 else 2
profile[user] = (n_bucket, s_bucket)
buckets = defaultdict(list)
for u, p in profile.items():
buckets[p].append(u)
top = sorted(buckets.values(), key=lambda x: -len(x))[:k]
return [sorted(g) for g in top]
評分點:Capital One 的 Level 4 不要求最優解——能產出「非空的、deterministic 的、解釋得清」的分桶就有 50%+ 分。不要花 20 分鐘跑 KMeans 然後 timeout。
時間分配建議
| Level | 推薦用時 | 關鍵策略 |
|---|---|---|
| Level 1 | 8 min | 乾淨的字串解析 + 整數化金額 |
| Level 2 | 12 min | 在 Level 1 基礎上加 frozen 集合 |
| Level 3 | 18 min | 復用 index,二分定位視窗 |
| Level 4 | 25 min | 雜湊分桶 > KMeans,求過線不求滿分 |
| Buffer | 12 min | debug + 檢查浮點 |
HireVue 影片行為面(OA 通過後必經)
OA 程式過了不代表 OA 整體通過——還要做 HireVue 影片行為面。一般在 OA 通過後 3-7 天內 email 邀請,5-7 題,每題 2-3 分鐘回答時間。
高頻問題
| 問題類型 | 示例 | STAR 準備點 |
|---|---|---|
| 學習經歷 | "Tell me about a time you learned something new under pressure." | 強調 timeline + 學到的具體技能 |
| 團隊衝突 | "Describe a situation when your team disagreed." | 你的 mediation 角色,不要責備 |
| 客戶視角 | "How do you balance speed vs. quality?" | Capital One 的「deliver excellence」value |
| 失敗反思 | "Tell me about a project that didn't go as planned." | 學到的教訓具體化 |
| 為什麼 Capital One | "Why Capital One specifically?" | 提到具體產品 / tech blog |
錄製要點:
- 每題 2-3 分鐘,嚴格控制時間——超時會被自動剪斷
- 看攝影機不看螢幕,笑容 + 節奏穩定比內容華麗更重要
- 不要重錄:HireVue 預設只給 1-2 次重錄機會,珍惜首次
備考策略
| 優先級 | 重點 | 推薦題號 / 資源 |
|---|---|---|
| ⭐⭐⭐ | 字串解析 / split / parse | LC 65、LC 224、LC 736 |
| ⭐⭐⭐ | 模擬 + 狀態機 | LC 348、LC 1396、LC 1352 |
| ⭐⭐ | 滑動視窗 + 二分 | LC 209、LC 1838、LC 1146 |
| ⭐⭐ | OOP 設計 | LC 146、LC 460、LC 355 |
| ⭐ | HireVue 行為題 | Capital One 官方 careers FAQ + Glassdoor BQ 題庫 |
FAQ
Q1:Capital One OA 難度比 FAANG 高還是低?
演算法難度低——Level 1-3 大約是 LC Easy 至 Medium 偏 Easy。但整體不容易過,因為:(1) Level 4 直接 hard;(2) 題面長,讀題 + 建模成本高;(3) 後續 HireVue 影片面也算 OA 通過條件,很多 candidate 程式過了倒在 HireVue。
Q2:Capital One TDP 和 SWE 是同一個 OA 嗎?
程式 OA 完全一樣,但 HireVue 題庫略有不同:
- TDP 多問「為什麼是 rotational program / 如何看待跨團隊學習」
- SWE 多問「程式碼 ownership / 系統設計直覺」
錄取率:TDP 錄取面更廣(也接受非 CS 專業),SWE 偏向 CS / 軟工硬專業,bar 略高。
Q3:Capital One OA 通過後多久 onsite?
OA + HireVue 全過後,通常 2-4 週進入 Power Day(Capital One 的 onsite 名稱):1 個 Behavioral + 2 個 Coding + 1 個 Case(業務情境分析)。整個 OA → Offer 流程平均 6-10 週。
Q4:HireVue 可以提前看題嗎?
不可以。每題點開後有 30 秒思考時間,然後強制開始錄製。建議:把上面 6 個高頻題的 STAR 故事提前寫好背熟,HireVue 時候你能在 30 秒內決定用哪個。
Q5:Capital One 看 GPA 嗎?
TDP 卡 GPA 3.0+(有時 3.2+),SWE 不硬卡但履歷裡 GPA < 3.0 預設進 review queue。如果 GPA 低,強烈建議用 Recruiter Connect / 校招活動認識 recruiter,繞過 ATS 自動過濾。
Q6:Capital One Power Day 通過率多少?
約 30-40%——比 FAANG onsite(25-30%)略高,因為 Capital One 重視 culture fit 多於「能否秒殺難題」。建議:在 Onsite Coding 階段,講清思路 + 寫出 working solution > 一行流寫最優解。
聯絡方式
正在準備 Capital One TDP / SWE / DS 或類似金融科技職缺(JPMorgan, BlackRock, Discover)的 candidate,OA 程式關只是第一道篩子——後面的 HireVue + Power Day 行為面才是真正淘汰主力。我們整理了 Capital One Top 30 HireVue 題 + STAR 模板 + Power Day 真題集,歡迎聯絡交流。
立即加入微信 Coding0201,獲取 Capital One OA 與 HireVue 真題。
- Email:[email protected]
- Telegram:@OAVOProxy