字节 - 基础结构 - KV 二面(4.7)

1. 面试官自我介绍

2. 自我介绍

3. 介绍一下两个开源项目的背景,为了处理什么场景,为什么需要这个项目

4. ok,kv这个项目已经有类似pika这样的产品了,为什么你们还要做一个这样的新产品

5. 行,你是怎么参与到这个项目中的

6. 你们这个项目目前的使用场景是什么,有什么确定性的需求吗

7. 这里的强一致性的实现是什么实现方案

8. 对raft了解吗?raft的选主是什么流程?如果我现在想制定一个新的节点作为Leader有什么手段或者办法吗?

9. 什么情况下节点会投票给你,有哪些限制条件,补充说明一下

10. cpp20的新特性都有哪些,你觉得最有用的是哪些?

11. 介绍一下seata go这个项目的背景,为了解决什么问题

12. 举个具体场景的例子说明一下

13. 你个人项目中实现了Bitcask对吧,那如果我有一个数据已经删除了,但是log中实际是没有释放的对吧,最终是怎么做到磁盘空间释放的(merge)

14. 墓碑log和原始数据的log分别怎么释放的

15. merge时机(两种方式,计算有效数据比例到达设定值的时候,以及后台任务定时merge)

16. 这个比例你是怎么计算的,怎么知道多少数据有效多少数据无效(有效数据对内存索引设置个计数器,无效数据同样在追加log的时候自增计数器,为了适应hint文件需要修改一下重建索引的逻辑)

17. 你这里用lru做了缓存淘汰对吧,还了解其他淘汰策略吗

18. c++中的虚函数有什么用途,举个场景(先说了虚函数表然后举例子解释)

19. 做题(ez 二分)

20. 反问

- 需要继续学习改进的地方

- 后面还有几轮技术面

全部评论
喜提感谢信了
点赞 回复 分享
发布于 04-09 19:04 浙江
👻了
点赞 回复 分享
发布于 04-08 18:44 北京

相关推荐

评论
3
2
分享

创作者周榜

更多
牛客网
牛客企业服务