题目与范围
公司运营 Web 应用、移动端、分析系统和广告集成,需要遵循浏览器级 Global Privacy Control 信号、用户明确选择与变化中的地区规则。请设计控制面和请求时执行路径,覆盖匿名访客、登录用户、多设备、合作伙伴和政策更新。
核心能力是分布式政策执行与隐私状态建模,因此归入 system-design。
面试官考察什么
第一,能否区分信号与法律决定?Sec-GPC 请求头或浏览器属性是输入,是否适用以及允许处理哪些目的由政策和上下文决定。
第二,能否定义优先级与作用域?全局退出可能按浏览器、账户、家庭或地区适用,系统不能静默合并不同作用域。
第三,能否在数据离开边界前执行?分析、广告技术、导出和合作伙伴 API 都需要共享决策点,而非只有横幅。
第四,能否让决定可解释、可撤回?保留政策版本、来源、时间和有效期,同时最小化个人数据。
第五,能否安全失败?政策存储、缓存或地区判断异常时,对可选共享默认最严格模式,并输出可观测原因。
先澄清的问题
- 覆盖哪些地区和目的,权威规则来自哪里?
- 登录后 GPC 是作用于账户,还是只作用于浏览器上下文?
- 阻止哪些目的:出售、共享、定向广告、度量,还是所有可选处理?
- 撤回需要多快到达缓存、队列、仓库和合作伙伴?
- 需要保留哪些证据,哪些数据要删除或匿名化?
- 所有出站集成是否都能调用同一政策决策服务?
30 秒回答框架
“我会把浏览器信号和明确选择规范化为带版本的隐私意图,在每个数据出站边界结合地区和目的政策评估。决定包含作用域、政策版本、有效期和原因;可选共享采用短缓存和失败关闭。撤回事件传播到队列与合作伙伴,追加最小审计证据。测试匿名转登录、冲突作用域、政策更新、缓存陈旧和合作伙伴失败。”
分步作答
第一步:规范化输入并避免过度识别
边缘层记录 GPC 信号、来源、用户代理上下文、账户状态和声明地区。匿名浏览器标识与账户标识分离,只有政策允许时才关联。把明确选择规范化为出售、共享、度量和个性化等目的。
第二步:评估带版本的政策
政策服务接收主体作用域、目的、地区、信号来源和时间,返回 allow、deny 或 unknown,并带政策版本、有效期和原因码。GPC 本身不是所有地区所有目的都禁止的证明,评估器必须应用对应规则。
第三步:在每个出站边界执行
分析、广告技术、导出和合作伙伴 API 发送前都要求短期决策令牌。SDK 可以减少误采集,但服务器必须执行,因为客户端可被修改。队列和批处理在投递前再次检查,而不是只在入队时检查。
第四步:传播变化与撤回
按作用域主体引用发布隐私意图事件。消费者使缓存失效、停止后续导出,并标记需要删除或抑制的数据。合作伙伴只接收目的、作用域、生效时间和验证信息,令牌足够时不要广播原始身份。
第五步:审计决定而非载荷
记录请求类别、主体作用域哈希、目的、政策版本、信号来源、决定和时间。加密访问、限制保留期,并将运维日志与用户解释分离。审计应能回答为何允许或拒绝传输,但不要复制敏感事件内容。
第六步:失败关闭并观测
政策查询或撤回传播失败时,阻止可选共享并排队重试。指标包括未知决定、陈旧版本、拒绝传输、合作伙伴确认和撤回耗时;告警要区分政策故障与真实退出增加。
第七步:测试边界与对抗场景
测试匿名浏览后登录、多标签页、账户与浏览器作用域冲突、时钟偏差、地区变化、重放信号、缓存过期、队列重投、合作伙伴超时和政策回滚,确认拒绝决定不能通过另一条导出路径绕过。
示例回答
“我会构建带版本的隐私决策服务,并在每个可选数据出站边界要求短期决策令牌。边缘层规范化 GPC 与明确选择,同时保持浏览器和账户作用域分离。政策评估结合目的、地区、来源和生效时间,返回原因与版本。队列和合作伙伴投递前再次检查,撤回事件使缓存失效并触发抑制流程。
服务对可选共享失败关闭,保存最小决定证据,并观测未知决定、陈旧缓存、确认和撤回耗时。测试覆盖登录转换、冲突作用域、重放、地区变化、重试和替代导出路径。横幅本身不是执行机制。”
常见错误
- 把 GPC 当成通用布尔值 → 丢失作用域和地区 → 一起评估信号、目的和政策。
- 只在浏览器执行 → 修改客户端可绕过 → 在服务器出站处执行。
- 立即关联匿名与账户身份 → 产生不必要画像 → 无正当依据不要关联。
- 只在入队时检查 → 撤回与投递竞态 → 发送前再次检查。
- 政策故障时放行 → 可选数据泄露 → 失败关闭并重试。
- 审计完整载荷 → 日志变成隐私风险 → 保存最小决定证据。
- 忽略合作伙伴确认 → 无法证明传播成功 → 跟踪回执和时限。
追问
追问 1:GPC 会取代同意横幅吗?
不会。它是浏览器级信号,含义取决于适用政策。界面可以收集额外选择,但执行必须遵循评估结果。
追问 2:登录后如何处理?
保持浏览器与账户作用域分离,再应用明确的关联规则。没有政策依据时,不要静默扩大到账户偏好。
追问 3:决定可以缓存多久?
只能在风险和政策允许的时间内缓存。使用短 TTL、版本失效和无法证明新鲜时的失败关闭。
追问 4:合作伙伴离线怎么办?
超过确认时限就停止可选投递,保留最小重试记录,合作伙伴恢复后再对账。
追问 5:审计记录应包含什么?
作用域引用、目的、信号来源、政策版本、决定、原因和时间通常足够,避免复制事件载荷。
追问 6:如何证明没有绕过路径?
盘点所有出站路径,在共享中间件强制决策令牌,并对 SDK、批处理、导出和合作伙伴重试运行拒绝测试。