4.1 页大小为16k,且二叉树的有序性尽可能的保证顺序写,特殊情况也会存在页合并和页分裂的情况;使用 buffer pool 缓存减少io读取;缓存刷盘会先进入 page cache;
4.2 没看懂
4.3 B+树,id递增比较好,容易命中顺序写(具体看4.1)
4.4 缓存 + 布隆过滤器;
5. 结构化如c、面向对象如java、c++,函数式如scala
6. 乐观锁、悲观锁、共享锁、独占锁、自旋锁、轻量级锁、偏向锁、重量级锁、synchronized、reetrantlock、AQS等。
7. 没了解过,只知道redis、memorycached,或者自己实现 LRU。
8. string、list、hash、set、zset、bitmap、hyperloglog、geo、stream;zset 由quick list + 跳表实现。
9. 从定义、资源利用、开销展开说。
10. 看情况,如 jvm 会限制最大使用内存。
11. 重试 + 滑动窗口 + 流量控制 + 用塞控制;大多数情况下使用tcp,不可靠的场景可以使用udp。
12. 如何应对连接超过1w的场景。考察的是IO多路复用;