面试真题讲解
逐题讲清解题思路、关键实现与常见追问。
后端面试:如何为大规模且持续变化的列表设计稳定分页?
从 OFFSET 与 keyset 的代价出发,设计带唯一排序键、可验证游标和明确一致性语义的列表 API。
产品经理面试:你会如何规划 API 版本迁移?
从受影响客户、兼容策略、迁移工具、弃用沟通和成功指标出发,规划一次可逆、可观测的 API 版本迁移。
数据工程面试:如何设计财务交易对账管道?
设计连接内部账本、支付服务商和银行流水的可审计对账管道,处理重复、延迟、部分匹配、汇率和差异闭环。
前端面试:如何设计一个可响应容器尺寸变化的仪表盘卡片?
用 ResizeObserver 监听元素而不是窗口,区分测量、布局和渲染边界,处理回调反馈环、清理、批量更新与降级。
通用面试:你如何写并维护一份架构决策记录(ADR)?
用背景、选项、决策、后果和状态记录重要技术取舍,并在决策变化时保留可追溯的演进历史。
前端面试:如何加载第三方脚本而不拖慢页面?
从关键渲染路径、脚本执行顺序、隐私同意和安全边界出发,设计第三方脚本治理方案,并用真实用户数据证明性能没有被牺牲。
系统设计面试:如何隔离多租户服务中的噪声租户并实现公平调度?
从租户身份、资源预算和隔离层级出发,设计可承受突发流量的多租户服务,并用配额、公平队列和 shuffle sharding 限制噪声租户的爆炸半径。
产品经理面试:面对互相冲突的客户需求,如何确定优先级?
从目标结果、用户机会、证据质量、战略契合、风险和学习速度建立优先级决策,并把大客户压力转成可验证的产品选择。
行为面试:讲一次你给出困难反馈的经历
用真实经历说明你如何基于可观察行为给出及时、私下且可执行的反馈,处理防御反应并跟进改变,同时保持尊重、责任和必要的升级边界。
通用面试:一次生产事故后,如何主持无责复盘并让行动项落地?
从事件范围、证据时间线和贡献因素出发,设计无责复盘流程,并把模糊的改进愿望转成有负责人、优先级和可验证终态的行动项。
编程面试:如何设计一个可恢复的分批迭代器?
从 hasNext/next 契约出发,设计一个按页读取远程数据、支持暂停恢复、避免重复和正确传播错误的迭代器。
数据科学面试:如何判断分类模型的概率是否校准?
从校准定义、可靠性图、Brier 与 ECE 的边界出发,判断概率能否直接用于决策,并选择不泄漏的校准和监控方案。
后端面试:PUT 与 PATCH 应该如何选择?
从完整替换、部分修改、幂等性、并发条件与字段语义出发,设计一个不会静默覆盖数据的资源更新 API。
前端面试:CSS 容器查询与媒体查询有什么区别?
从响应对象、容器建立、作用域和组件复用四个维度回答 CSS 容器查询与媒体查询,并处理嵌套容器、兼容性和测试陷阱。
系统设计面试:如何设计订阅计费系统?
从订阅状态机、账单快照、幂等扣款和 Webhook 事件出发,设计支持试用、升级降级、按比例计费与失败重试的订阅计费系统。
SQL 面试:按 30 分钟无活动间隔划分用户会话
用 PostgreSQL 的 LAG、边界标记和窗口累计和划分用户会话,讲清 30 分钟临界值、稳定排序、时间范围、迟到事件与验证方法。
算法面试:如何实现快照数组?
用按索引组织的变更历史、同版本写入合并和二分前驱查询实现快照数组,并证明时间、空间与快照语义。
产品经理面试:如何为农村用户设计邮件产品?
先收窄宽泛的农村用户,再从昂贵且不稳定的网络约束推导离线优先邮件 MVP,并验证理解、发送信心、隐私与真实任务完成。
数据科学面试:如何无泄漏地验证时间序列预测模型?
从真实预测时点反推滚动回测,处理特征可用时间、预测步长、城市聚合和指标选择,并用最终留出集验证选出的模型。
行为面试:讲一次你在速度与质量之间做取舍的经历
用 STAR 讲清质量底线、主动缩减的范围、可逆发布方式,以及即时交付和延期工作的双重结果。
Linux 面试:如何实现崩溃安全的原子文件更新?
区分原子可见性与崩溃持久性,并从约束推导同目录临时文件、fsync、rename 和父目录 fsync 组成的正确 Linux 文件替换协议。
前端面试:SPA 路由切换后如何管理焦点?
设计可预测的 SPA 路由焦点策略,覆盖跳转分类、异步提交竞争、历史恢复、状态播报与无障碍测试。
后端面试:如何安全可靠地接收并处理 Webhook?
设计安全的入站 Webhook 接收器:基于原始请求验签并阻止重放,在确认前持久接收事件,去重重试,并安全处理乱序事件。
如何设计一个多区域 API 网关?
为 300 个服务和每秒 50 万峰值请求设计 API 网关,覆盖路由、认证、配置发布、区域故障、过载保护与可观测性。