美团大数据基础架构实习生一面

    作者:川大宝
    链接:https://www.nowcoder.com/discuss/630021?source_id=discuss_experience_nctrack&channel=-1
    来源:牛客网

    个人情况:渣本渣硕,本硕都是计算机。
    面试平台:牛客网
    面试时间: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):
    问我喜欢分布式计算还是分布式存储。
    问我是如何学习一个没接触过的新技术的。