Anthropic ★★ Frequent Medium-Hard ACIDLedgerAudit

A27 · Design a Banking App A27 · 设计银行应用

Verified source经核实出处

Prompt: "Design a Banking App." — interviewing.io. Credibility C/D.

Core concerns (traditional SD)核心考察(传统系统设计)

  • Double-entry ledger: every transfer = two entries (debit + credit). Enforce SUM(balance) = 0 invariant.双重记账:每次转账 = 两条记录(借 + 贷)。强制 SUM(balance) = 0 不变量。
  • Idempotent transfers: idempotency_key; safe retries.幂等转账:idempotency_key;重试安全。
  • Two-phase commit or saga for cross-account / cross-system transfers.两阶段提交Saga用于跨账户/跨系统转账。
  • Audit log: append-only, cryptographically chained entries.审计日志:追加式、密码学链接条目。
  • Fraud detection: rules + ML model; decision latency < 100ms.反欺诈:规则 + ML;决策延迟 < 100ms。

Data model数据模型

Account(account_id, owner_id, currency, status)
LedgerEntry(entry_id, account_id, amount, currency, ref_tx_id, created_at)
-- Invariant: for each tx, SUM(entries.amount) = 0
Transaction(tx_id, idempotency_key, status, initiated_at)

Related study-guide topics相关学习手册专题