Capital One 的 Senior SWE 招聘比 entry-level / TDP(Tech Development Program)嚴苛得多——尤其是 Power Day 的 4 輪連環面試,會把候選人按「演算法 + 系統 + Java/Spring 工程實踐 + Behavioral」四個維度同時碾壓一輪。社群裡關於 Capital One Power Day 的描述常常含糊其辭,這篇文章基於 Senior SWE 通過案例給出每一輪的真題與回答骨架。
本文不再覆蓋 entry-level OA(站內已有 SWE TDP OA 文),而是聚焦 Senior 職位 特有的 system design 複雜度、Java 記憶體模型追問、以及 Capital One 五大 LP(Leadership Principles)的精準命中。
Senior SWE 招聘流程總覽
| 階段 | 時長 | 題型 | 決策權 |
|---|---|---|---|
| Recruiter Screen | 30 min | Why Capital One + 履歷 | 入門 |
| Tech Phone | 60 min | LeetCode Medium + 簡單系統 | 關鍵過濾 |
| Power Day Round 1 | 60 min | Coding Hard | 決定 |
| Power Day Round 2 | 60 min | System Design | 決定 |
| Power Day Round 3 | 60 min | Java + Spring 工程題 | 決定 |
| Power Day Round 4 | 45 min | Behavioral / LP | 決定 |
Power Day 關鍵規則:4 輪中至少 3 輪 strong hire 或 hire 才會發 offer。任何一輪 strong no 幾乎一票否決。
Recruiter Screen:30 分鐘內必答的 5 個問題
- "Walk me through your last 5 years of work."
- "Why are you interested in Capital One specifically?"
- "What's your salary expectation? Can you work in McLean / Plano / NYC?"
- "Describe a project where you owned end-to-end delivery."
- "Do you have any current offers?"
關鍵回答策略:
- "Why Capital One" 必須提到金融科技轉型:Cloud-First、AWS 全面遷移、ML 在 Underwriting 的應用
- 薪資期望給一個區間(例:240-290k base + 20% bonus),別給單一數字
- Offers 問題誠實回答,但不要透露具體公司名
Tech Phone:標準 LeetCode 風格
真題:Top K Frequent Words with Tie-Break
給一段日誌陣列,求出現次數最多的 K 個 IP 位址。次數相同時按字典序輸出。
import heapq
from collections import Counter
def top_k_ips(logs, k):
cnt = Counter(logs)
heap = [(-c, ip) for ip, c in cnt.items()]
heapq.heapify(heap)
return [heapq.heappop(heap)[1] for _ in range(k)]
複雜度:O(N log N),N 為不同 IP 數。 Follow-up:如果 K=10 而 N=1e6,怎麼優化?答案:用 size=K 的最小堆,O(N log K)。
Power Day Round 1:Coding Hard
真題:分散式 Rate Limiter
實作一個分散式限流器:每個 user_id 在任意 60 秒滑動視窗內最多 100 次請求。要求多實例共享狀態。
思路:滑動視窗 + Redis sorted set。
import time
import redis
def rate_limit_check(r: redis.Redis, user_id: str, limit=100, window=60):
key = f"rl:{user_id}"
now = time.time()
pipe = r.pipeline()
pipe.zremrangebyscore(key, 0, now - window)
pipe.zcard(key)
pipe.zadd(key, {str(now): now})
pipe.expire(key, window)
_, count, _, _ = pipe.execute()
return count < limit
Follow-up 鏈:
- Redis 單點故障怎麼辦?→ Redis Cluster + 一致性雜湊
- 網路分區時怎麼 degrade?→ 本地 token bucket fallback
- 極端高並發下 Redis 是否成瓶頸?→ Lua script 原子化 + sharded by user_id
Power Day Round 2:System Design
真題:設計 Capital One 的即時反詐騙引擎
要求:
- 處理每秒 50K 筆信用卡交易
- 端到端延遲 < 100ms
- 誤報率 < 0.1%
- 能根據歷史規則 + ML 模型雙路決策
回答骨架(5 層架構):
- Ingestion:Kafka,按 user_id 分區,保證同一使用者訊息有序
- Feature Store:Redis(即時特徵 + 60s 滑動)+ Cassandra(30 天歷史)
- Decision Engine:
- 規則引擎(Drools 或自研 DSL)
- ML 模型(XGBoost online inference via TensorFlow Serving)
- 雙路平行 → 投票或加權融合
- Storage:交易結果 + decision trace 寫入 DynamoDB(寫多讀少)
- Feedback Loop:客服標記 false positive → 重訓練資料集
關鍵 tradeoff:
- 嚴格要求 100ms:ML 模型必須 inference < 30ms,否則用 cached score
- 保證資料一致性 vs 可用性:金融場景 CP > AP
Power Day Round 3:Java + Spring 工程題
真題:Spring Boot 微服務呼叫鏈 Debug
給一段 controller → service → repository 的程式碼,發現 production 偶發
ConcurrentModificationException。請定位並修復。
考察點:
ConcurrentHashMapvsCollections.synchronizedMap區別- Spring
@Transactional的 propagation 是否吞了異常 - ThreadLocal 在 async / WebFlux 上下文遺失
典型修復
// Bad: HashMap 在多執行緒下直接 GG
private Map<String, Account> cache = new HashMap<>();
// Good: 並發安全
private Map<String, Account> cache = new ConcurrentHashMap<>();
// Better: 加 size limit + LRU
private Map<String, Account> cache = Collections.synchronizedMap(
new LinkedHashMap<>(1000, 0.75f, true) {
@Override
protected boolean removeEldestEntry(Map.Entry<String, Account> eldest) {
return size() > 1000;
}
}
);
Follow-up:什麼時候用 ConcurrentHashMap.compute() 而不是 putIfAbsent?答案:當你需要原子性「讀-改-寫」。
Power Day Round 4:Behavioral / LP
Capital One 五大 LP
- Customer Obsession
- Champion Diversity, Inclusion & Belonging
- Do the Right Thing
- Lead with Excellence
- Take Smart Risks
每個 LP 準備 1-2 個 STAR 故事。Senior SWE 的 STAR 必須有量化結果:
- "Reduced API latency by 40% (P99 from 250ms to 150ms)"
- "Migrated 12 microservices to AWS, saving $200K annually"
- "Mentored 3 junior engineers, all promoted within 18 months"
真題範例
"Tell me about a time you took a smart risk that didn't work out."
STAR 回答骨架:
- Situation:專案背景 + 風險點
- Task:你的角色和決策權
- Action:你做了什麼、為什麼這麼做
- Result:失敗了,但學到了什麼 + 後續如何用這個經驗
關鍵:Capital One 不是懲罰失敗,而是看你反思深度。
FAQ
Q1:Power Day 4 輪在一天內還是分散? 通常集中在一天,4 個 60 分鐘 + 1 個 45 分鐘,全天約 5 小時。中間有 30 分鐘 lunch break。
Q2:Senior SWE 必須懂 Java 嗎? 幾乎是。 Capital One 後端棧以 Java + Spring Boot 為主,部分 Cloud team 用 Python。但 Power Day Round 3 通常強制 Java。
Q3:System Design 必須用 AWS 嗎? 不強制,但強烈建議。Capital One 是 AWS first,用 GCP / Azure 答會被反覆追問。
Q4:薪資 base 範圍是多少? Senior SWE base 通常 200-280k,加 stock + bonus 總包 280-380k(McLean / NYC 略高於 Plano)。
Q5:visa 友善嗎? Senior 職位 H1B 友善,但部分 Cloud 團隊 因 contract 限制只招美國公民或 GC。問 recruiter 時直接問明白。
正在準備 Capital One Senior SWE Power Day?
如果你想做 System Design 5 層架構演練、Power Day 4 輪模考,或希望 Power Day 那天有真人 VO代面 / VO輔助 全程陪跑、Java 並發陷阱即時輔導,可以聊聊看完整的 OA代面 / VO輔助 / VO代面 方案。
聯絡方式
需要面試真題與客製備戰計畫?立刻聯絡微信 Coding0201,獲取真題。
Email: [email protected] Telegram: @OAVOProxy