面试真题讲解
逐题讲清解题思路、关键实现与常见追问。
产品经理面试:如何设计可操作的 API 错误体验?
把 API 错误从模糊字符串变成可诊断、可修复、可度量的开发者体验,兼顾标准化、局部失败、兼容性和支持成本。
如何用 PerformanceObserver 构建可靠的真实用户性能采集?
设计可采样、可补取、能发现缓冲区丢失与跨域限制的 RUM 采集器,准确上报 LCP、资源和交互性能。
如何处理流式聚合中的迟到事件与乱序数据?
用事件时间、水位线、允许迟到窗口和更正输出处理乱序流,平衡结果准确性、延迟、状态大小与可重放性。
如何设计时序指标的分层保留与降采样服务?
为高基数指标规划写入、查询、降采样、保留期和成本边界,保证长期趋势可用且短期故障不被抹平。
如何实现 Skip List,并解释它为何期望 O(log N)?
用随机层高构建可插入、删除和按序查找的跳表,说明期望复杂度、随机数边界、重复键和内存取舍。
如何用 Little 定律估算服务并发与队列容量?
用 L = λW 连接吞吐、平均延迟和系统内请求数,识别排队失控并制定限流、扩容与容量验证方案。
如何在线安全地创建或重建 PostgreSQL 索引?
在持续读写的生产表上规划并发索引、失败恢复、流量保护和上线验证,避免锁表与隐性性能回退。
如何解释流式处理中的 Exactly-once 语义与外部副作用?
区分消息投递、管道处理和外部写入的保证,设计可重试、可去重且可观测的数据流水线。
如何实现 Vose Alias Method 做 O(1) 加权随机采样?
用概率表和别名表把静态离散分布预处理为常数时间采样,并处理权重更新、数值精度和分布验证。
如何用 Web Locks API 协调多个标签页的共享任务?
用 navigator.locks 在标签页和 Worker 间串行化共享资源访问,处理排队、取消、故障释放与兼容性。
如何为回归模型构建具有覆盖率保证的 Conformal Prediction 区间?
从非一致性分数和校准集构建分布无关预测区间,并说明交换性、覆盖率、漂移和区间宽度的边界。
如何设计 Saga 编排多服务订单履约并处理补偿?
把跨服务订单流程拆成局部事务,设计编排器、幂等步骤、补偿动作和可观测的最终一致性。
如何安全使用 scheduler.postTask,并为不支持的浏览器设计降级?
用浏览器优先级任务调度拆分长任务,处理取消、动态优先级、兼容性与长期任务监控。
如何设计 Transactional Outbox 保证数据库与消息最终一致?
用事务性 Outbox 拆解双写问题,设计可靠消息中继、重复投递幂等、顺序与积压处理。
如何实现 Count-Min Sketch 估算数据流中的频率?
用二维计数器和多组哈希在固定内存中估算任意键的出现次数,并解释误差上界、合并与重置。
如何设计一个隐私保护的产品遥测与分析平台?
设计从端侧采集到聚合发布的隐私遥测平台,处理最小化、贡献裁剪、差分隐私预算、可靠性和可审计性。
如何解释差分隐私的 epsilon、敏感度与隐私预算?
从邻接数据集和敏感度出发,推导噪声机制、组合预算与准确率权衡,避免把差分隐私误解成简单匿名化。
QUIC 如何在切换网络或 NAT 重绑定后保持连接?
从连接 ID、路径验证和地址验证令牌出发,解释 QUIC connection migration 的安全流程、限制与排障方法。
A/B 测试中总体结果反转,如何识别 Simpson 悖论并做上线决策?
从分层分母、随机化平衡和预注册估计量出发,识别聚合偏差,避免被总体转化率误导。
如何用 HyperLogLog 近似估算海量数据的去重数量?
用固定内存的 HyperLogLog 估算流式数据基数,掌握寄存器更新、误差修正和分布式合并边界。
前端面试:如何安全实现滚动驱动动画?
使用 CSS 滚动与视图时间轴、渐进增强、减少动态效果和合成器友好属性,避免每次滚动都执行处理器。
产品经理面试:如何为用量型定价选择价值指标?
选择能反映客户价值、可计量可审计、随成功增长且不会制造账单惊吓的用量指标。
行为面试:讲一次你提出异议后仍全力执行最终决定
用证据、尊重的异议、决策责任和可衡量的后续行动回答 disagree and commit 行为面试题。
分布式系统面试:Lamport 时钟什么时候不够,什么时候需要向量时钟?
解释 happened-before、Lamport 排序、向量时钟因果关系、并发事件、元数据成本与物理时钟的边界。