拿下技术面上传简历

你负责设计一个支持高并发写入的时序数据库内存索引。索引需要支持:写入新数据点(时间戳+值),以及按时间范围查询。团队提出用动态数组存储按时间排序的数据点,插入时如果数组满了就扩容为原来的 2 倍并拷贝。有人质疑:单次插入最坏 O(n) 拷贝,会拖高 P99 延迟,不能接受。你怎么用均摊分析评估这个设计?在 5 万 QPS 写入、SLA 要求 P99 < 10ms 的场景下,你会怎么决策?如果坚持要降低最坏延迟,有什么替代方案,复杂度如何变化?

数据结构与算法复杂度分析5 年以上知识点 1 个

面试官在考什么

考察能否区分均摊复杂度与最坏复杂度,并在延迟敏感系统中把理论分析转化为可验证的 P99 判断和替代方案。

均摊分析

回答框架 · 前两步

  1. 动态数组按 2 倍扩容,n 次插入总拷贝代价为 n/2 + n/4 + ... ≈ n,所以均摊每次插入 O(1),总时间 O(n)。
  2. 均摊 O(1) 不等于每次 O(1):单次扩容最坏 O(n),会抬升 P99;在 5 万 QPS 下,扩容频率与元素大小决定拷贝耗时。

还有 3 条答案要点、 3 层追问、 4 个常见坑, 以及针对你简历的追问路径,在定制报告里。

上传简历,生成我的题库先看示例报告

延伸阅读

想看这个方向的整体准备路线? 进入「数据结构与算法」方向页

同一能力域的其他题