字节 - 基础架构团队 - KV组 - 一面

1. 自我介绍(实习,开源,项目)

2. 流程通过后什么时候可以到岗?能实习多久?可以接受base调整吗

3. 介绍一下arana-db/kiwi这个开源项目

4. 你参与这个项目都做了些什么

5. 你个人的这个分布式kv存储项目是出于兴趣做的对吧

6. 行,那我们聊聊你这个项目,你简单介绍下项目大概是个什么架构,支持了什么能力?(详细的讲了从存储层,db层,网络层,分布式四个方面分别说了设计实现和优化,大概单方面输出了十多分钟)

7. ok,实现的东西还挺多的,我们一点一点聊聊,你刚才有提到异步写入对吧,如果某个时候流量非常大,内存写到channel非常快,但是channel到磁盘I/O很慢,这时候两端的写速度不匹配你会怎么处理?(在channel前添加一个容量大于channel的buffer缓冲区域,把写请求速度不一致的时机从channel两端延迟到buffer进channel时,在buffer部分实现速率调控,保证两端速度一致,但其实这里还是会有一个问题,突然宕掉的话buffer会丢失;大概就是在buffer出口加个pipeline之类的,面的时候没想起来,就没详细说这里的处理)

8. 那你有想到解决数据丢失的办法吗?(刚开始想WAL,但是如果WAL其实和直接写盘没什么区别了)

9. 行,你这里还用了布隆过滤器对吧,Bitcask不是一个全内存索引吗,为什么还要布隆过滤器?(刚开始听错问题了,说了一遍Bitcask的整体结构,然后面试官引导才发现听错问题了,然后讨论发现是我想错了,不需要布隆过滤器的效果是一样的)

10. 行,没事,那我们接着聊,bitcask刚才提到他是一个纯内存索引结构对吧,你想想这个场景,这里如果我机器的内存很小,存不下所有的索引,你应该怎么处理,有想过吗?(参照操作系统中虚拟存储器的概念,只加载一部分索引到内存中,剩余的放在一个单独的索引log中,如果当前内存中没有的话就置换索引log中的下一块内容到内存(这里铸币了,说如果log中也没有索引会有额外的I/O开销))

11. 这里不就可以用到刚才说的布隆过滤器吗,查之前筛一下。(懂了)

12. 你看过pika对吧,那rocksdb了解吗(说只了解一点lsm tree的内容,没仔细看过)

13. 行,那对于Bitcask你觉得他有什么优劣势?(从实例结构,日志结构,追加写顺序读,内存索引,merge分别讲了一下)

14. 行,我看你db层实现了redis相关的数据结构,你这里用的时候需要把磁盘里的所有内容都拉到内存中吗(以List为例讲了一下,LPush之类的是需要加载全量数据的)

15. 行,你看过pika怎么做这个事情的吗?(没仔细看过,讲了一下pika把不同数据结构分别存在不同块中(在存储层将rocksdb存储划分为不同区域存放不同内容))

16. 行,我看你分布式实现用了raft,读过raft论文吗?讲一讲(从Leader选举,日志复制,安全性问题(随机定时器破坏公平条件之类的)分别讲了一下,然后日志复制讲了点状态机还有从日志到实际数据落实的过程)

17. (开始少量八股)ok,大致没有问题,我们聊点别的,我看你主要是golang对吧,那问你个go的问题吧,GMP的G为什么一定要挂在P上,而不能直接挂在M上?

18. 操作系统中进程比线程开销大主要大在什么地方?

19. ok,那我们做个题吧。(ez,一个数组满足先递增后递减的特性,找到最大值(二分))

20. 反问:

1. 有哪些您觉得需要提升的地方?

2. 后面还有几轮面试?(1-2轮)

3. 组里主要做什么的?(kv)

---

一共1个小时左右,十分钟后秒约二面

#面经#
全部评论
佬从哪投的啊,怎么精确定位到kv或者存储组啊
点赞 回复 分享
发布于 04-16 20:21 山东
好厉害
点赞 回复 分享
发布于 04-05 16:32 北京
👻了
点赞 回复 分享
发布于 04-04 10:40 湖南
大神
点赞 回复 分享
发布于 04-03 20:52 广东
必拿下
点赞 回复 分享
发布于 04-03 20:39 北京

相关推荐

Hakasee:我的简历和你的基本一样,上周去了上海,boss投了三百家, 三家线下面试 第一家没有做题,全是八股和项目,因为第一次面试不怎么熟练,挂了 第二家,给你几个题目(①css垂直居中文字,字体每两秒闪烁一下以及点击弹窗,②给你一个链接,实现可视化地图,③然后是八股,图片性能优化,以及对图片app有什么想法),45分钟内做完,然后老板面试) 第三家特别偏僻,有点阴森,到了之后让了一个工位给我,有四个题目,①格式化时间 年月日当前时间星期几② 正则表达式提取新闻文字,③在文本域输入文字生成选择题以及选项④生成商品排版还是什么来着 三家都是不超过50人的小公司 两家线上牛客笔试(卡伦特,七牛云,但是笔试不仅要考前端,还要考后端,算法,甚至数学题 我的建议是如果只做了这两个vue项目且不怎么熟练的情况下,先沉淀沉淀,把react学了,上海好的公司基本都是react查看图片
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-10 12:05
点赞 评论 收藏
分享
评论
10
23
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务