主题
分布式系统
这些题与问题库里的是同一批,这里按各自主要考察的能力分组。
55 道问题
本页为第 1–50 题,共 55 题。
A · 专业解题与实现47
- AI 助手可以代表用户创建工单、退款或修改账户。它发起退款时发生超时,系统不知道退款是否已经完成;自动重试可能造成重复退款。你会怎样确认操作结果、控制重试,并确保操作仍在用户授权范围内?
- 一个多步骤 Agent 在开始时读取了项目权限,执行到第三步时用户被移出项目,但任务仍持有已签发的工具令牌。你会如何设计权限检查和取消语义?
- 用户更新账户设置后立即刷新,服务从只读副本读取到旧值。切主读会增加数据库负载,等待同步又可能超时。你会怎样设计一致性体验?
- 缓存能让读取变快,也可能让用户看到过期内容。你会怎样判断一份数据适不适合缓存,出错时又怎样发现?
- 服务把读请求切到副本后,写入成功的用户偶尔读不到刚才的修改。你会怎样界定并处理这种陈旧读取?
- 缓存失效后,大量请求同时回源,服务恢复时又出现第二次流量尖峰。你会怎样定位并抑制缓存击穿与预热风暴?
- 生产者日志显示事件已发布,Broker 也返回确认;消费者没有报错,但业务对象未变化。你会如何区分确认语义、处理失败的消息、过滤、反序列化和重复处理问题?
- 用户请求依次调用四个下游,每个服务都使用完整的 2 秒超时,导致整体尾延迟很高,客户端还会在响应失效后继续计算。你会如何传递截止时间和预算?
- 分片后总体容量充足,但少数租户的热点键仍持续超载。你会怎样重新评估分区策略?
- 两个服务都直接写同一张业务表,短期内不能停机改造,你会怎样逐步建立单一数据所有者?
- 订单已成功更新,但跨服务报表数分钟后才反映变化,产品要求展示“实时状态”。你会怎样定义并实现一致性预期?
- 跨服务流程包含扣款、库存预留和发货。后续步骤失败时,你会怎样确定哪些操作可以补偿、哪些难以撤回?
- 故障在服务交界处反复发生,每个团队都能证明自己的服务健康,但无人负责完整流程恢复。你会怎样修复责任链?
- 多个服务由不同团队维护,但一次小改动常需要三四个团队同步发布,你会怎样判断服务边界是否失效?
- 用户离线编辑并排队了多条变更,恢复网络时登录令牌已过期,且部分请求可能已经被服务端处理。你会怎样设计重新登录、避免重复提交和冲突处理?
- 系统用预签名 URL 让用户直接下载私有文件,链接可能被转发或长期留存。你会怎样设计授权与失效边界?
- 付款后发券原本是同步执行,现在要改成异步队列加重试。请审查这个改动:你最担心哪些失败过程,上线前要演练什么?
- 在画任何架构图之前,你会用哪几个数字来判断一个服务要不要拆分、要不要加缓存?请用一个你熟悉的服务来说明。
- 怎样设计一个多人实时协同编辑的文档系统?多人同时修改同一段文字时,怎样保证最终一致,离线编辑后又怎样合并?
- 本地数据库已更新,但缓存同步或下游消息发送失败。你会如何确保状态最终一致,并设计重试、补偿或人工处理?
- 明年大促或业务出海,预期增长五倍。从你现在的系统架构出发,你怎样检查网关、核心请求流程、存储和机器资源中的瓶颈?你打算分几个阶段、投入多少人力提前准备,又怎样验证判断?
- 支付创建接口需要支持安全重试。你会怎样定义防止重复扣款的请求标识,包括它的作用范围、保存期限和冲突处理规则?
- 订单写入数据库后需要发布事件给下游;进程可能在任一步骤崩溃。你会怎样设计持久化发布机制,并说明如何处理重复与顺序?
- 一个 API 部署在多个实例后,单机请求限制使总额度随实例数增加。你会根据突发容忍度、精度和故障策略设计请求速率限制,并说明状态放在哪里?
- 对账任务发现同一业务对象的事件时间顺序偶尔倒置,日志又分布在多个区域。你会如何判断是时钟偏差、异步延迟还是业务排序规则的问题?
- 一个关键依赖只在某个区域间歇性超时,整体健康检查仍显示正常。你会如何判断影响面,并安全地隔离或临时关闭非核心功能?
- 服务平均耗时基本不变,但最慢 1% 的请求连续一周变慢,投诉集中在少数大客户。你会如何定位问题并决定先验证什么?
- 设计一个供多个业务团队提交“在某个时间之后执行”的任务服务,任务可能被取消、改期或重复提交。你会怎样划分数据模型和执行组件?
- 服务已经切到新地址,一些用户仍连着旧节点,不同网络的恢复时间也不同。你会怎样检查 DNS 缓存、客户端缓存和现有连接?
- 一个高流量服务需要把关键表从旧结构迁移到新模型,期间不能暂停读写。你会怎样组织迁移阶段并验证切换安全?
- 一个多人协作工具需要展示成员在线状态和正在编辑的位置;短暂延迟可以接受,但离线成员不能长期显示为在线。你会怎样设计状态更新和过期机制?
- 产品要向数千万用户发送事务通知和可选营销通知,用户可以随时调整渠道偏好。你会如何设计通知发送流程?
- 一台机器开始频繁发生 major page fault,同时磁盘 I/O 升高。你会怎样判断工作集变化、内存压力和应用访问模式各自的作用?
- 一个全球服务需要按地区启用不同功能和数据保留规则,同时总部仍要观察整体运行情况。你会怎样划分配置、执行和汇总边界?
- 一次下游抖动后,上游流量没有明显增加,但请求数和队列长度翻倍,多个服务开始超时。你会怎样判断是否出现重试放大?
- 一个多租户平台要向客户系统发送事件通知(Webhook)。你会如何设计发送和重试流程,并处理客户端长期不可用的情况?
- 服务部署到多路CPU机器后,线程在NUMA节点间迁移,内存访问延迟出现波动。你会如何结合CPU亲和性、内存分配和调度行为设计验证?
- 服务完成证书轮换后,短连接正常,但部分客户端在长连接断开后重新连接或恢复会话时握手失败。你会怎样区分证书链、会话恢复、连接池和客户端缓存的影响?
- 移动网络从Wi-Fi切换到蜂窝网络时,部分HTTP/3请求失败但会话仍显示在线。你会如何检查路径迁移、超时和中间网络设备的影响?
- 程序先写入数据文件再更新索引,但断电恢复后索引指向不完整内容。你会如何分析写入顺序、刷盘语义和恢复协议?
- 平均耗时稳定,但最慢 1% 请求的响应时间逐步变长,且不同租户差异明显。你会怎样区分排队、锁竞争、下游调用和资源隔离问题?
- 多个客户共享异步作业平台,有的租户会提交大量长任务。你会怎样设计调度、隔离、配额,以及用日志、指标和调用记录了解队列运行情况?
- 某些对象成为热点,读取延迟恶化而写入又必须保持顺序。你会怎样划分缓存、分区和写入协调策略?
- 业务要求追溯每次状态变化,并在必要时安全地重新处理历史消息;但部分旧事件格式不完整。你会怎样设计事件版本、保留期限和重新处理范围?
- 跨区域服务需要在区域故障时维持关键功能,但部分数据不能接受冲突覆盖。你会怎样选择故障期间保留哪些功能、如何复制数据,以及如何恢复?
- 实时协作服务有大量长连接,慢客户端会积压更新。你会如何选择丢弃、合并、限制慢客户端接收和重新同步策略?
- 用户可在手机离线修改资料,同时也可能在网页端编辑;设备恢复联网后必须同步,且不能静默覆盖有价值的更改。你会如何设计版本、冲突检测、合并和用户确认机制?
当前目标在这里暂无匹配题。 ·