主题
数据库
这些题与问题库里的是同一批,这里按各自主要考察的能力分组。
69 道问题
本页为第 1–50 题,共 69 题。
A · 专业解题与实现35
- 一份内部文档被撤回或改为限权后,检索索引、缓存和已生成的引用可能仍保留旧内容。你会怎样设计更新与验证机制?
- 用户更新账户设置后立即刷新,服务从只读副本读取到旧值。切主读会增加数据库负载,等待同步又可能超时。你会怎样设计一致性体验?
- 写代码和做代码评审时,你有哪些已经形成习惯的检查点,用来防止循环里查数据库、大对象长期不释放这类性能问题?你怎样知道它们真的有效?
- 缓存能让读取变快,也可能让用户看到过期内容。你会怎样判断一份数据适不适合缓存,出错时又怎样发现?
- 一条查询的过滤列上已经建了索引,却仍然很慢。请讲讲索引查找是怎么工作的,以及哪些情况会让它帮不上忙。
- 两个事务同时修改同一批数据,可能出现哪些异常?不同的隔离级别分别防住了什么,又付出了什么代价?
- 新字段需要补算数亿行历史数据,首轮脚本运行后线上锁等待和复制延迟都上升。你会怎样决定暂停、分批、限速或改用在线迁移?
- 新增索引后查询变快了,但写入延迟和存储增长明显恶化。你会怎样判断索引是否值得保留?
- 服务把读请求切到副本后,写入成功的用户偶尔读不到刚才的修改。你会怎样界定并处理这种陈旧读取?
- 一个接口从昨天开始变慢,但没有任何发布记录。给你日志、监控和数据库慢查询记录,你会按什么顺序排查?
- 缓存键已失效,应用日志显示重新读取数据库,但部分用户仍看到旧资料;切换到主库后问题减少却没有消失。你会怎样沿缓存、副本和客户端定位?
- 应用发布可以回滚,但数据库迁移已经删除旧字段,旧版本因此无法启动。你会怎样重新设计发布顺序和回退策略?
- 用户要求删除个人数据,但部分记录进入了备份、分析仓库和下游系统,你会怎样设计可验证的删除流程?
- 备份任务显示成功,但团队从未验证过恢复后的数据完整性和恢复时间,你会怎样建立可证明的恢复能力?
- 在画任何架构图之前,你会用哪几个数字来判断一个服务要不要拆分、要不要加缓存?请用一个你熟悉的服务来说明。
- 本地数据库已更新,但缓存同步或下游消息发送失败。你会如何确保状态最终一致,并设计重试、补偿或人工处理?
- 怎样设计一个搜索系统?索引、召回、排序怎样分工,中文分词和特征怎样构造,怎样评估搜索的好坏?
- 管理后台需要保留不可随意修改的操作记录,既支持按操作者和对象查询,也要应对数据量逐年增长。你会怎样设计写入、索引和保留策略?
- API 延迟升高时数据库 CPU 很低,但应用日志出现等待连接。你会如何区分连接泄漏、池容量不足和慢事务占用?
- 订单写入数据库后需要发布事件给下游;进程可能在任一步骤崩溃。你会怎样设计持久化发布机制,并说明如何处理重复与顺序?
- 管理后台按创建时间翻页时,新增和删除会让用户看到重复或漏项。你会比较 offset 与游标分页,并定义何种一致性预期?
- 某存储服务从读多写少变成持续高写入,团队在 B 树和 LSM 路线间评估。你会根据哪些负载特征比较两者,并关注哪些读写放大代价?
- 数据库字段变更完成后,只有部分下游任务间歇性失败。你会怎样找出仍在使用旧接口约定的消费者,并确定回滚还是兼容修复?
- 对账任务发现同一业务对象的事件时间顺序偶尔倒置,日志又分布在多个区域。你会如何判断是时钟偏差、异步延迟还是业务排序规则的问题?
- 一个高流量服务需要把关键表从旧结构迁移到新模型,期间不能暂停读写。你会怎样组织迁移阶段并验证切换安全?
- 一台机器开始频繁发生 major page fault,同时磁盘 I/O 升高。你会怎样判断工作集变化、内存压力和应用访问模式各自的作用?
- 一个搜索服务需要调整分词和排序特征,同时不能让重建过程造成长时间结果缺失或明显增加写入延迟。你会怎样安排索引演进?
- 一个订阅产品有试用、续费、宽限期、退款和家庭共享。如何设计权益判定,使多个业务服务读取到一致且可追溯的结果?
- 多个团队把脱敏数据复制到开发、预发和性能环境,数据刷新频率各不相同。你会怎样设计测试数据的权限、生命周期和可复现性?
- 更换嵌入模型后,新旧向量不可直接比较,但重建全量向量需要数天。你会怎样设计迁移和查询切换?
- 服务部署到多路CPU机器后,线程在NUMA节点间迁移,内存访问延迟出现波动。你会如何结合CPU亲和性、内存分配和调度行为设计验证?
- 服务完成证书轮换后,短连接正常,但部分客户端在长连接断开后重新连接或恢复会话时握手失败。你会怎样区分证书链、会话恢复、连接池和客户端缓存的影响?
- 移动网络从Wi-Fi切换到蜂窝网络时,部分HTTP/3请求失败但会话仍显示在线。你会如何检查路径迁移、超时和中间网络设备的影响?
- 程序先写入数据文件再更新索引,但断电恢复后索引指向不完整内容。你会如何分析写入顺序、刷盘语义和恢复协议?
- 两个请求几乎同时检查某个业务对象不存在,然后都尝试创建,应用层的“先查再写”偶尔产生重复数据。你会从事务隔离、唯一约束和冲突处理说明如何保证业务不变量?
当前目标在这里暂无匹配题。 ·
B · 业务理解与领域建模15
- 涉及钱的系统,账务和计费应该怎样设计才能算得清、对得上?账户、流水、冻结、结算和对账分别怎样建模,出现差错时怎样追溯和更正?
- 金额、币种、舍入和时区,在交易和结算的模型里应该怎样表达?哪些做法看上去没问题,其实会在对账时出问题?
- 以订单、合同、结算这类商业概念为例,它们是怎样映射到数据模型里的?哪些概念被拆成了多个实体,哪些被合并了,为什么?
- 用户要求删除个人数据,但财务审计仍需要保留交易记录。你会怎样划定删除、匿名化和可追溯性的边界?
- 一张行为事件表里,“一行”究竟代表什么?请说明你怎样确定它的粒度,以及粒度不清会让哪些统计出错。
- 月结报告已发送给管理层,几天后收到迟到退款和一笔价格更正。业务希望更新当前数字,财务还需要解释上次报告为何不同。你会如何建模?
- 订单、支付和退款经常被放进同一张表。你会怎样区分它们的业务身份、生命周期和数量关系?比较将它们分别建模与合并存储的条件、代价及验证方式。
- 客户账户在月中从销售转交客户成功团队,月度绩效既要体现当月结果,也要还原每个时点的负责人。你会怎样定义归属事件和统计规则?
- 费用规则今天修改为新规则,但争议订单发生在旧规则生效期间。你会如何保存规则版本与交易事实,让财务能够重现当时的计算?
- 订单上有一个 status 字段,同时表示履约进度和支付结果,多个团队都在读它。你会怎样把它拆成两个概念,并让旧数据和旧使用方平稳过渡?
- 业务规则发生追溯更正,报表需要显示修正后的结果,但决策者还要查看当时依据的旧结果。你会怎样管理两种历史视图?
- 客服会把重复工单合并,也会把一个复杂问题拆成多个处理单。设计服务质量数据模型时,你如何定义工单、问题、接触次数和解决结果?
- 合作伙伴结算需要把外部订单号、内部订单、支付记录和退款记录对应起来,但各系统的唯一键和更新时间都不同。你会如何建立映射和核对机制?
- 业务报表同时混用订单、订单行和支付尝试,指标在不同页面对不上。你会如何确定事实粒度并验证聚合定义?
- 数据库已删除客户记录,但变更数据捕获(CDC)管道和下游汇总视图仍保留旧值。你会如何追踪删除事件、更新相关视图并验证清理完成?
当前目标在这里暂无匹配题。 ·