美团一面+二面(凉)
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 除了用作实现隔离级别,别的还有了解其他用途么
算法题没让做,说看一面写的代码风格还不错
在字节有考虑过活水啥的么,字节转正不,未来倾向做计算还是做存储
反问