面试真题讲解
逐题讲清解题思路、关键实现与常见追问。
系统设计面试:如何设计高并发票务预订系统?
从虚拟等候室、座位状态机与支付边界推导高并发票务系统,重点解决热门开售时的流量整形、短时占座、不超卖和未知支付结果。
后端面试:如何保持数据库与缓存一致?
从 cache-aside 的写后失效出发,拆解失效丢失、旧读晚回填与副本延迟,并用有限陈旧预算、事务型 outbox 和版本栅栏设计可验证的数据库缓存一致性方案。
如何回答“讲一次你适应重大变化的经历”?
用 STAR 讲清重大变化如何使旧假设失效,你怎样重判约束、协商取舍、建立过渡节奏,并用业务连续性和适应结果证明改变有效。
前端面试:Web Worker、SharedWorker 和 Service Worker 应该如何选择?
用大文件解析、跨标签页单连接和离线重试三个需求,推导 Dedicated Worker、SharedWorker 与 Service Worker 的选择,并覆盖生命周期、通信、持久化、兼容降级和测试。
数据工程面试:如何诊断并治理数据湖仓的小文件问题?
以一张持续微批写入的 Apache Iceberg 表为例,拆解小文件的证据链、写入侧预防、并发压实、快照清理、容量估算与上线验收。
网络面试:TCP 如何检测并恢复丢包?
从字节序列、累计 ACK 和一条固定丢包时间线,推导超时重传、快速重传、SACK 与 RACK-TLP 的触发条件、拥塞代价和抓包判断方法。
算法面试:如何用双向 BFS 解单词接龙?
把单词接龙建模为隐式无权图,从最短序列要求推导 BFS,并实现始终扩展较小前沿的双向搜索,给出严谨证明、复杂度核算与对抗测试。
后端面试:如何轮换 JWT 签名密钥而不引发认证故障?
设计可验证的 JWKS 轮换协议,处理缓存、未知 kid、签发方故障与密钥泄露,避免新旧令牌在切换期间同时失效。
系统设计面试:如何设计实时聊天系统?
通过拆分持久化接收、实时送达和已读状态,再组合幂等发送、会话内排序、可续传同步及短暂在线状态链路,设计一个实时聊天系统。
产品经理面试:你会如何在开发前验证一个产品想法?
把产品想法拆成可证伪的高风险假设,用与假设匹配的最低成本实验获取行为证据,并以预先约定的门槛决定开发、收窄、转向或停止。
如何回答“讲一次你向非技术利益相关者解释复杂技术问题的经历”?
用以决策为中心的 STAR 回答,讲清如何判断听众背景、保留必要因果关系、转译风险与取舍,并用可观察证据确认对方真正理解。
前端面试:Cookie、localStorage、sessionStorage 和 IndexedDB 应该如何选择?
用读取方、生命周期、数据模型、信任边界和事实来源五个维度选择浏览器存储,并处理认证、离线同步、多标签页、配额与清理。
后端面试:如何设计安全的文件上传 API?
从隔离、类型校验和异步扫描出发,设计防止恶意文件、越权下载、扫描竞态与资源耗尽的安全上传生命周期。
Linux 面试:epoll 的水平触发与边缘触发有什么区别?
从就绪语义、非阻塞读写和 EAGAIN 出发,解释 epoll 的 LT/ET、EPOLLONESHOT、写事件管理、公平性与停滞排查。
算法面试:如何实现 O(1) 的 LFU 缓存?
用键索引、频次桶、桶内双向链表和最小频次指针实现 LFU 缓存,处理同频 LRU 淘汰,并证明 get 与 put 的期望 O(1) 复杂度。
SQL 面试题:如何安全删除重复数据并保留最新记录?
先定义业务键和确定性的保留行,再固化可审计的淘汰行到保留行映射,迁移引用、分批删除,并用数据库唯一性约束防止复发。
系统设计面试:设计一个可靠的 Webhook 投递平台
设计一个多租户出站 Webhook 平台,覆盖持久化扇出、至少一次投递、端点隔离、不可变载荷签名、有限重试、重放、SSRF 防护和可验证的故障恢复。
产品经理面试:如何衡量产品市场契合度?
学习如何按细分市场结合留存、付费、自然拉动、用户依赖和交付成本判断产品市场契合度,并把混合信号转成扩量、聚焦、迭代或暂停决策。
行为面试:请讲一次你委派重要职责的经历
用 STAR(R) 讲清如何选择值得交付的结果和合适负责人,真正移交决策权限,按风险设置护栏,并在不微观管理的前提下继续承担应有责任。
Linux 面试:如何解释并诊断 CPU 调度延迟?
从 EEVDF 的可运行任务选择出发,结合 nice、cgroup CPU 权重与配额、亲和性和调度轨迹,定位尾延迟究竟来自运行队列、限流还是阻塞等待。
后端面试题:如何防止多租户 API 中的 BOLA/IDOR 越权?
以 B2B 文档服务为例,从授权元组、租户作用域查询、数据库纵深防御和多账户负向测试,系统解决对象级越权与跨租户数据泄露。
数据工程面试:如何安全回填大规模历史数据?
把 180 TB 历史重算拆成可恢复分区,用确定性输入、独立资源、增量追平、验证门禁和版本切换保护当前生产管道。
前端面试:如何诊断并修复 JavaScript 内存泄漏?
用可重复操作和 GC 后基线证明泄漏,再通过堆快照、保留路径与分配时间线定位责任对象,按资源所有权修复并用同一实验验收。
系统设计面试:如何设计个性化信息流?
从候选内容生成、混合扇出、分层排序、稳定分页、权限过滤和故障恢复,设计一个能应对大 V 热点与最终一致性的个性化信息流。