- 个人情况:渣本渣硕,本硕都是计算机。
- 面试平台:牛客网
- 面试时间:2021.04.01
- 总时长:55min
问项目(15min):
自我介绍,问了我第二个项目(基于RocksDB的图数据库)。
- 介绍下你设计的data model。讲了讲,毕竟自己做的。
- 讲一下RocksDB的底层原理。讲LSM树
- 它和B+树有什么区别,优缺点是什么?
- 为什么要尽可能避免L0文件过多?为什么会影响读性能?这个没回答上来。
- 了解Raft协议吗?介绍下Raft协议,它是如何选举的?这里大概讲了讲。
- 如果有ABC三个节点,网络互通,C是Leader。这时候A-C之间的无法通信了(也就是A-B-C)。此时A没了Leader,要重新选举,这时候B应不应该投票?我说不应该。
- 那么如何解决A没有Leader?我说不知道 = =
知识点(20min):
- 数组和链表的区别,使用场景。
- 对数组和链表遍历一遍,谁快,为什么?这里考的是操作系统的相关知识,因为数组内存空间连续,读入了cache。
- java LinkedBlockingQueue ?我说是个并发容器,但我没用过。
- 如何设计一个 生产者-消费者队列? 我说给队列加锁
- 如果加锁,生产操作会阻塞消费操作,有没有更好的方式?我说两个指针,一个生产者指针,一个消费者指针,分别加锁。
- 学过操作系统吧?
- 操作系统如何解决内存碎片的?java GC 内存碎片怎么解决?
- java 堆内存和栈内存
算法题(15min):
给一棵树,写算法让节点的next指向和该节点同层的下一个元素,每层最后一个节点next指向null。
不难,用队列做出来的。
反问与闲聊(5min):
问我喜欢分布式计算还是分布式存储。
问我是如何学习一个没接触过的新技术的。
全部评论
(2) 回帖