Data Structures for Systems¶
是什么 / 解决什么问题¶
系统工程里的数据结构选择,不只是看 Big-O,还要看内存布局、cache locality、分配行为、并发访问和尾延迟稳定性。
普通算法题更关注:
系统组件更关注:
选择维度¶
| 维度 | 问题 |
|---|---|
| 时间复杂度 | 平均复杂度和最坏复杂度分别是什么? |
| 内存布局 | 连续数组还是节点指针? |
| cache locality | 是否会大量 pointer chasing? |
| 分配行为 | 是否在 hot path new/delete? |
| 并发访问 | 单线程、SPSC、MPSC 还是 MPMC? |
| 稳定性 | 是否会 rehash、resize、rebalance? |
| 恢复能力 | 状态是否容易 snapshot / replay? |
低延迟系统常见结构¶
vector/ fixed array- ring buffer
- object pool
- freelist
- hash table
- heap / priority queue
- bitmap
- ordered index
- intrusive list
- state machine table
面试回答方式¶
不要只说:
要能补上:
是否提前 reserve?
hash 分布是否稳定?
是否可能 rehash?
节点分配是否影响 cache?
最坏情况是什么?
是否在 hot path?
如何用 perf/benchmark 验证?
当前边界¶
本节后续会展开具体数据结构。现在先建立判断框架:系统工程的数据结构选择,必须同时考虑算法复杂度和运行时行为。