Frontend SWE · VO System Design

Coinbase Signup Form 设计:校验、幂等与 A/B 实验

Frontend VO 的 SD 题围绕 signup form 一问一答,尤其关注 A/B testing;从表单链路到实验指标和护栏完整展开。

题目重点:Frontend VO 的 SD 题围绕 signup form 一问一答,尤其关注 A/B testing;从表单链路到实验指标和护栏完整展开。

题意与假设

这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。

  • 训练版目标是创建基础账号,不推定包括 KYC/资金交易;字段、密码/SSO、法域合规需向面试官确认。
  • 同用户重复点击或网络重试不得产生多个账号;后端用 idempotency key 或唯一约束与事务确认。
  • A/B 实验按匿名 visitor/account 持久分流,主要指标是合法注册完成率,护栏含错误率、反欺诈、可访问性和延迟;具体实验平台未给。

解题路线

  1. 先画用户漏斗:进入表单→填写→校验→提交→账号创建/验证→完成。定义页面范围、字段验证时机、错误恢复与隐私/安全边界。
  2. 客户端即时校验格式/必填并展示可访问错误;服务端重验、限速/滥用防护、唯一性和事务创建。提交按钮 loading、失败可重试,保留可安全复用输入,不把密码写日志。
  3. 前后端接口要区分 validation error、重复账号、临时故障与成功;幂等键绑定一次意图,重试同键返回同一结果。
  4. 实验 variant 分流稳定且同一用户跨会话不乱跳;埋点记录曝光、字段开始、校验失败、提交、完成,分母/归因窗口预先定义。
  5. A/B 比较完成率而非只看按钮点击,检查不同设备/地区/新老用户切片;同时守住 fraud、错误率、页面性能和辅助技术使用者体验。样本量与停实验规则先定,避免每天看一次 p 值提前停。

手动走一遍

训练实验 A 为单页表单、B 为两步表单。B 的首步点击更高不等于注册更好;若最终合法账号完成率下降或欺诈上升,不能宣布 B 胜。用户刷新后应保持同一 variant,避免跨组污染。

规模与取舍

单次提交至少一次服务端验证与唯一性写入,性能受依赖服务/DB 索引影响;实验事件量约每用户漏斗步骤数×访问量。题目未明确 QPS,容量需以访客量和目标延迟估算。

易错点与追问

容易失分的边界

  • 把登录/注册/KYC 混成一份无边界系统。
  • 只在客户端校验,后端信任输入。
  • 网络重试创建两个账号。
  • 实验只看点击率,漏掉最终注册、欺诈与无障碍护栏。
  • 同一访客跨会话重新随机分流。

继续深挖

  • 注册和 KYC 是否应在同一漏斗统计?
  • 如何避免机器人流量污染 A/B 结果?
  • 跨设备同一用户如何分流?
  • 隐私敏感字段怎样埋点而不泄露?
✓已复制微信号!