面试真题讲解
逐题讲清解题思路、关键实现与常见追问。
产品经理面试:如何设计客户顾问委员会?
建立能把客户意见转化为可验证产品决策的顾问机制,避免沦为 VIP 许愿清单。
系统设计面试:如何设计可安全重放的 Webhook 投递?
设计至少一次投递、持久化事件、签名、去重、重试和租户隔离的 Webhook 平台。
后端面试:如何用 ETag 与 If-Match 防止丢失更新?
设计带强验证器、412 响应、重试和缓存语义的 HTTP 乐观并发控制契约。
数据科学面试:如何处理带删失的生存分析?
用 Kaplan–Meier、生存风险集、删失假设和 Cox 模型回答留存与时间到事件问题。
算法面试:如何用区间 DP 求切割木棍的最小成本?
从最后一次切割推导区间动态规划,处理端点、切割顺序、复杂度和可证明的边界测试。
通用面试题:HTTP 508 Loop Detected 何时出现,客户端如何处理?
从 WebDAV 绑定循环和 Depth infinity 出发,区分 208 与 508,设计检测、响应和客户端恢复策略。
算法面试:如何在线性时间求最大环形子数组和?
从 Kadane 不变量推导环形数组的两种情况,处理全负数组并证明 O(n) 解法。
数据科学面试:如何判断 MCAR、MAR、MNAR 并处理缺失值?
用缺失机制、数据泄漏和验证设计回答缺失数据题,避免机械填充带来的偏差。
HTTP 424 Failed Dependency 应该何时使用?如何设计可重试的 API 契约?
从 WebDAV 的标准语义出发,判断依赖失败、部分成功与重试边界。
行为面试:讲一次你用数据挑战定价决策的经历
用 STAR 结构回答定价分歧,展示如何验证假设、量化客户与收入影响,并在不确定性下推动可逆实验。
系统设计面试:如何把 Kafka 消费组迁移到协作式再平衡?
设计 Kafka 消费组从 eager 到 cooperative 再平衡的滚动迁移,覆盖兼容矩阵、分区所有权、提交和故障恢复。
算法面试:如何用最大堆求到达终点的最少加油次数?
从可达性不变量推导延迟贪心,使用最大堆选择已经过站点的最大油量,并覆盖不可达与整数边界。
前端面试:如何用 Atomics.waitAsync 协调 Worker 并支持取消
围绕 SharedArrayBuffer 设计非阻塞等待协议,解释 waitAsync、notify、超时、取消和兼容性降级。
算法面试:如何用二分查找第 k 个缺失正整数?
从缺失数量的单调性推导二分边界,处理答案在数组末尾、重复约束、越界和 O(log n) 复杂度证明。
数据科学面试:如何用 CUPED 降低实验方差而不改变因果估计?
从处理前协变量、协方差系数和随机化边界推导 CUPED,说明何时能提高实验灵敏度、如何防止数据泄漏并用对照实验验证。
编程面试:如何原地求下一个字典序排列?
用从右寻找拐点、交换后缀最小更大值、反转后缀的三步法,在 O(n) 时间和 O(1) 空间生成下一个排列。
编程面试:用单调栈解决循环数组的下一个更大元素
把循环数组展开为两趟索引扫描,用单调递减栈在线性时间求每个元素右侧第一个更大值。
编程面试:删除至多一个元素后的最大子数组和
用两个动态规划状态在线性时间内求解允许删除一个元素的最大连续子数组和,并处理全负数组边界。
后端面试:如何用 RFC 9457 统一 HTTP API 错误?
从状态码、Problem Details 媒体类型、错误类型 URI 与字段脱敏出发,设计可演进的 API 错误契约。
系统设计面试:如何设计带负责人和依赖关系的软件服务目录?
从服务发现、负责人元数据和新鲜度约束推导软件目录架构,覆盖导入、查询、权限、冲突和失效路径。
产品经理面试:B2B SaaS 是否应该提供客服代入用户功能?
用客户价值、风险边界和可审计控制评估 support impersonation,给出分阶段上线与度量方案。
数据工程面试:如何用 t-digest 估算分位数并控制误差?
从流式数据约束推导 t-digest,解释尾部精度、合并策略、压缩参数与验证方法,避免把近似分位数当成精确排序。
编程面试:用点分治维护动态树上最近特殊节点距离
从重心不变量推导点分治,支持节点染色与最近距离查询,并说明复杂度、实现边界和何时应改用重链剖分。
通用技术面试:DNS 负缓存为什么会让刚创建的域名仍返回 NXDOMAIN?
用 NXDOMAIN、NODATA、SOA 最小 TTL 和失败缓存解释 DNS 负响应,并设计安全排障与恢复方案。