面试真题讲解
逐题讲清解题思路、关键实现与常见追问。
编程面试:如何让插入、删除和随机取值都为 O(1)?
用哈希表加动态数组实现 RandomizedSet,解释删除时交换尾元素、索引同步、均匀随机取值和重复值变体。
后端面试:HTTP 511 Network Authentication Required 是什么?
区分网络认证与源站认证,解释 511 的代理边界、缓存与安全风险,并给出排查 captive portal 和代理误报的步骤。
编程面试:如何实现均匀的原地数组洗牌?
用 Fisher–Yates 在 O(n) 时间、O(1) 额外空间内生成每个排列等可能的数组,并说明随机边界、恢复原数组与测试方法。
系统设计面试:如何设计低延迟 Feature Flag 评估服务?
从控制面与数据面拆分,推导本地评估、稳定分桶、实时传播、故障默认值和旗标清理。
后端面试:如何解释 HTTP 103 Early Hints 与预加载取舍?
从 RFC 8297 推导 103 的正确边界,判断预加载提示、缓存和回退策略。
通用面试:如何解释 HTTP 425 Too Early 与 0-RTT 重放风险?
从 TLS 1.3 早期数据解释 425、幂等写入、网关一致性和安全重试。
数据工程面试:如何设计从数仓到业务系统的 Reverse ETL 同步?
围绕 3,000 个租户、10 分钟新鲜度、目的端限流、幂等 upsert 和删除同意撤回,设计可审计的 Reverse ETL 同步服务。
系统设计面试:设计多租户功能授权服务
设计从订阅变更到低延迟功能决策的链路,覆盖租户隔离、撤销、缓存一致性、审计和故障处理。
编程面试:实现用于前缀路由的基数树
用路径压缩实现插入、精确查找、最长前缀查找和删除,并说明不变量、复杂度与边界用例。
通用面试:如何解释 HTTP 507 Insufficient Storage?
区分临时的服务端资源耗尽与请求本身过大,设计安全重试,并验证 HTTP 507 的实际容量边界。
通用技术面试:HTTP 451 应如何返回,客户端又该如何处理?
从 RFC 7725 推导 451 与 403 的边界、阻断方标识、缓存和客户端展示策略,并覆盖代理层与验证方法。
数据工程面试:如何演进数据契约而不破坏下游消费者?
用兼容性分类、血缘影响分析、CI 与运行时门禁回答 Schema 演进题,并说明弃用、回滚和数据质量验证。
数据工程面试:何时应按 SLO 拆分流式数据管道?
从消费者延迟、资源隔离和重放语义推导单管道、分支管道与独立订阅的选择,并给出可验证的上线方案。
系统设计面试:如何设计跨集群的 SPIFFE 工作负载身份联邦?
设计基于 SPIFFE/SPIRE 的多信任域身份、证明、SVID 分发与跨云联邦,覆盖吊销、隔离、扩展和故障演练。
后端面试:如何设计安全的 OAuth 委托令牌交换?
设计把上游用户令牌安全换成下游服务令牌的委托链路,覆盖受众、范围、actor、吊销与审计。
能力式安全如何防止 confused deputy?
解释把权限编码到不可伪造、可收缩的引用中,比较能力式安全与环境身份检查,并推导委托、撤销和混淆代理风险。
如何为文本编辑器实现 Gap Buffer?
实现光标移动、插入、删除、扩容和不变量,并说明什么时候应改用 piece table 或 rope。
B2B SaaS 是否应该投入 SCIM 用户配置?
用客户证据、配置范围、风险降低、交付成本和可量化的发布门槛回答企业产品优先级案例。
如何在带权网格上实现 A*?
用最小堆、可采纳启发式、惰性跳过过期项和路径回溯实现 A*,并明确无路可达时的行为。
通用面试:同步型与设备绑定型 Passkey 应该如何选择?
比较同步型和设备绑定型通行密钥的恢复、保证等级、企业治理与用户体验,建立按风险分层的认证策略。
前端面试:如何设计安全的 WebUSB 设备接入流程?
用用户手势、Permissions Policy、来源校验、渐进增强和断开恢复设计浏览器设备接入。
产品经理面试:B2B SaaS 是否应该推出数据驻留区域?
用客户需求、法规边界、架构成本、可靠性和可验证承诺评估数据驻留产品。
后端面试:如何安全处理可能包含解压炸弹的归档文件?
设计上传、扫描、解压和异步处理链路,限制解压后的字节数、文件数、目录深度、CPU 与磁盘占用。
产品经理面试:是否应该要求管理员使用抗钓鱼多因素认证?
从风险、用户分层、迁移成本和指标出发,评估 B2B SaaS 是否强制管理员采用通行密钥或安全密钥。