美团一面+二面(凉)
24暑期实习,部门:数据库研发中心
第一次笔试一题没A,第二次笔试只A了一题
3.15 一面
算法题:排序链表
Go调优相关,怎么调优的
如果一个程序对他进行计算压测,但CPU跑不满,这种情况会往哪方面去想
协程与线程的区别
Go协程什么情况下会主动让资源(IO等被阻塞的情况)
Java学的怎么样,了解主流的垃圾收集器等
MySQL为什么要读写分离(读多写少,减少主库压力)
读写分离的问题在哪,可以怎么解决(读写同步延迟,应用层方面别在刚写完就读从库,主要在应用层控制)
为什么要分库分表,分库分表后要注意哪些(数据一致性,要考虑分布式事务)
分布式事务相关的(2PC XA 3PC TCC saga),XA 怎么做的
分库分表后除了要考虑分布式事务,还有什么要考虑的(不会)
乐观锁,悲观锁
Redis的持久化方式(RDB AOF 混合)
RDB为什么会丢数据(RDB保存全量快照前挂掉)
RDB时发生修改,内存膨胀问题,触发COW后是全量拷贝还是只拷贝修改的那部分(答的只拷贝修改的那部分所在的操作系统page)
Redis 的 I/O 模型
CAP简单聊一下
MySQL 是 CP 还是 AP(一般情况的主从是AP,因为是最终一致)
如果要MySQL提供 CP 怎么办(节点完全同步前别对外提供相应的服务,就是实现强一致事务)
如果 CP 情况下,主节点挂了怎么办(不了解,没背八股,瞎b扯一般配个哨兵用 binlog 恢复,要是全挂了那也没办法,因为要保存最终一致性)
对 multi paxos 有多少了解
raft preVote优化
基于 raft 的分布式kv,如何实现线性一致性,怎么保证不重复执行写指令的
client 的 ID 怎么实现的(项目rand.Int64(),分布式情况应该用雪花算法实现分布式ID)
如果 client 宕机了,怎么保证不重复执行写(宕机了的话再启动,client ID 都变了,已经是新的一轮请求了)
BusTub项目,4种隔离级别怎么实现的,读提交和可重复读的区别
文件系统有没有了解,对刷脏页的理解(往数据库项目的BufferPoolManager扯,然后又介绍了下OS的页面置换,最后说了句思想都差不多)
反问
3.17约了二面
3.22 美团二面(凉)
实现的 BusTub 数据库里,BufferPool 的作用,数据库层面抽象的 Page 和操作系统的 Page 的区别,读一个数据库逻辑 Page 进内存大概什么情况
为什么操作系统实现了页面置换,在数据库层面还要维护一个 BufferPool
操作系统的页面置换算法,会对数据库层面实现的页面置换算法,有什么影响
LRU 置换算法怎么实现的,LRU-K 呢
LRU-K 和 LRU 的比较,有被 LRU 的性能卡过么
可扩展哈希索引的实现
3节点的 Raft 集群,如果要更新一个节点,怎么办(先把新的加入集群,再把老的下掉,不能反过来,要保证半数以上可用)
更新节点的具体流程是什么
如果有非常多的 Raft 节点,分了很多集群,有哪些要注意的
平时遇到的印象最深刻的 bug
乐观锁和悲观锁的区别
乐观锁和悲观锁,放在数据库的角度,分别应用在哪里(乐观锁应该是 mvcc)
考虑两个不同的事务去操作一个表,执行 Insert 呢(这种情况要考虑幻读,不要 mvcc,但纯加锁实现的隔离级别也不顶用,除非实现 Serialize 级别,后面说可以和 MySQL 一样整间隙锁)
mvcc 除了用作实现隔离级别,别的还有了解其他用途么
算法题没让做,说看一面写的代码风格还不错
在字节有考虑过活水啥的么,字节转正不,未来倾向做计算还是做存储
反问
360集团公司福利 406人发布