使用场景
面试官设计
这些题与问题库里的是同一批,这里按各自主要考察的能力分组。
994 道问题
本页为第 151–200 题,共 994 题。
A · 专业解题与实现46
- 构建仓库需要清理多年积累的镜像,但线上仍有服务依赖旧版本回滚。你会如何确定保留策略和制品可恢复要求?
- 两个线程通过一个标志位传递“数据已准备好”的信号。为什么仅把标志位声明为原子类型仍可能不足以保证数据可见?
- 管理后台需要保留不可随意修改的操作记录,既支持按操作者和对象查询,也要应对数据量逐年增长。你会怎样设计写入、索引和保留策略?
- 消费者处理速度低于生产者,消息队列持续增长,但上游仍显示请求成功。你会怎样确定控制上游发送速度应作用在哪一层,并保护系统恢复能力?
- API 延迟升高时数据库 CPU 很低,但应用日志出现等待连接。你会如何区分连接泄漏、池容量不足和慢事务占用?
- 支付创建接口需要支持安全重试。你会怎样定义防止重复扣款的请求标识,包括它的作用范围、保存期限和冲突处理规则?
- 订单写入数据库后需要发布事件给下游;进程可能在任一步骤崩溃。你会怎样设计持久化发布机制,并说明如何处理重复与顺序?
- 管理后台按创建时间翻页时,新增和删除会让用户看到重复或漏项。你会比较 offset 与游标分页,并定义何种一致性预期?
- 一个 API 部署在多个实例后,单机请求限制使总额度随实例数增加。你会根据突发容忍度、精度和故障策略设计请求速率限制,并说明状态放在哪里?
- 某存储服务从读多写少变成持续高写入,团队在 B 树和 LSM 路线间评估。你会根据哪些负载特征比较两者,并关注哪些读写放大代价?
- 多核程序中两个线程各自修改不同字段,性能却随核心数增加而下降。请解释缓存行共享可能怎样造成这种现象,以及代码层面如何验证。
- 组织要把多个仓库从旧的自动构建与检查平台迁到新平台,但团队不能同时停下交付。你会怎样分批迁移,并判断哪些仓库可以进入下一批?
- 客户端需要上传大文件,但系统可能随时暂停或终止后台任务。你会如何拆分任务、保存进度并保证重复调度不会破坏结果?
- 用户通过外部链接直接打开需要登录的订单详情页。你会怎样设计路由解析、登录回跳和权限校验,避免深链绕过应用内流程?
- 一个列表页面滚动卡顿,但网络指标正常、内存也未明显增长。你会如何判断是主线程计算、布局/绘制还是锁等待导致?
- 请实现一个支持并发读写、按条目过期并可清理过期数据的映射。你会如何定义过期语义、同步边界和确定性测试?
- 实现一个深度相等函数,输入可能包含嵌套数组、共享引用和循环引用。请先定义相等语义,再说明如何避免无限递归与错误地混淆引用结构。
- 实现一个小型任务队列,支持并发 worker、任务取消和失败重试;测试不能依赖真实 sleep。你会怎样设计调度接口和状态转换?
- 实现一个逐块接收 UTF-8 数据的增量日志解析器:输入块可能截断多字节字符、字段顺序变化,也可能包含多条记录或超长单行。请定义解析状态、错误恢复策略和内存上限,并实现可重复解析的核心逻辑。
- 一个服务把工作线程数从 16 提到 256 后,吞吐没有提升,CPU 使用率反而更高。你会怎样解释上下文切换可能造成的影响,并用什么证据验证?
- 数据库字段变更完成后,只有部分下游任务间歇性失败。你会怎样找出仍在使用旧接口约定的消费者,并确定回滚还是兼容修复?
- 对账任务发现同一业务对象的事件时间顺序偶尔倒置,日志又分布在多个区域。你会如何判断是时钟偏差、异步延迟还是业务排序规则的问题?
- 月度汇总与明细报表最初一致,几周后差异逐渐扩大。你会如何把问题缩小到规则变更、迟到数据、重复处理或历史回补?
- 一个关键依赖只在某个区域间歇性超时,整体健康检查仍显示正常。你会如何判断影响面,并安全地隔离或临时关闭非核心功能?
- 消息积压经常在扩容后下降,几小时后又反弹。你会检查哪些生产者、消费者和消息特征,以判断真正瓶颈在哪里?
- 服务平均耗时基本不变,但最慢 1% 的请求连续一周变慢,投诉集中在少数大客户。你会如何定位问题并决定先验证什么?
- 设计一个供多个业务团队提交“在某个时间之后执行”的任务服务,任务可能被取消、改期或重复提交。你会怎样划分数据模型和执行组件?
- 数百个仓库都锁定了不同版本的第三方依赖,安全团队发现高危漏洞时很难知道影响范围。你会怎样建立依赖更新和风险处置机制?
- 服务已经切到新地址,一些用户仍连着旧节点,不同网络的恢复时间也不同。你会怎样检查 DNS 缓存、客户端缓存和现有连接?
- 一个缺陷只在线上出现,开发和预发环境都无法复现。你会如何判断问题来自环境差异、流量形态还是数据特征,并改进环境设计?
- 多个服务在请求路径中读取功能开关和分群规则。如何设计控制面与本地求值,让控制服务故障时线上行为仍然可预期?
- 一个关键完整流程测试偶尔失败,团队开始重跑直到通过。你会怎样确定它是否真实暴露产品风险,并改进测试流程?
- 第三方工具包的回调更新了数据,但界面没有刷新;手动触发刷新后又出现重复更新。你会怎样判断框架的刷新边界,并确定正确接入点?
- 一个服务被声明为单例后,不同用户请求偶尔读到彼此的临时状态。你会如何解释依赖注入生命周期与请求作用域,并设计安全的对象边界?
- 加入鉴权、日志和异常处理中间件后,部分错误没有 trace id,且未授权请求仍触发昂贵的解析逻辑。你会如何分析执行顺序并重新安排边界?
- 一个列表项从记录 A 更新为记录 B 后,输入框仍保留 A 的草稿。你会如何解释组件身份、key 和状态复用之间的关系,并选择修复位置?
- 一个自定义弹层鼠标操作正常,但键盘用户无法可靠进入、关闭或返回原位置。你会检查哪些焦点管理行为,并如何验证修复?
- 用户更新后偶尔加载到新 HTML 和旧 JavaScript,页面因此报错。你会怎样设计静态资源命名、缓存策略和发布顺序来降低不一致?
- 一个搜索框输入后界面短暂冻结,网络请求很快完成。你会如何用事件循环、任务队列和主线程占用解释现象,并确定长任务来源?
- 某页面服务端 HTML 正常,但水合后出现内容闪动并伴随控制台警告。你会如何定位服务端与客户端渲染结果的差异来源?
- 滚动列表时帧率下降,Performance trace 中反复出现 layout。你会如何判断代码是否触发布局抖动,并说明读写 DOM 的顺序为何重要?
- 页面的 HTML 很快返回,但用户仍长时间看不到主要内容。你会怎样沿着资源发现、下载、解析、执行和绘制过程定位阻塞点?
- 请设计一个可复用的长列表虚拟化组件:滚动窗口只渲染可见项,但行内选择状态不能因回收和复用 DOM 而串到其他数据。你会怎样定义接口并测试?
- 服务平均耗时稳定,但最慢 1% 的请求会周期性变慢,时间点与内存分配高峰接近。你会如何判断垃圾回收是否是原因,并区分其他暂停来源?
- 一个高流量服务需要把关键表从旧结构迁移到新模型,期间不能暂停读写。你会怎样组织迁移阶段并验证切换安全?
- 一个请求启动了多个异步任务;客户端断开或请求超时后,部分下游工作仍占用线程和连接。你会怎样让取消信号传到相关任务,并释放资源?
当前目标在这里暂无匹配题。 ·
B · 业务理解与领域建模3
D · 交付执行与持续运营1
当前目标在这里暂无匹配题。 ·