错题复盘学习笔记 day52

1.介绍一下智能指针

智能指针是 c++基于 RAII 方式管理资源,管理动态对象的方法,包括 unqie ptr,shared ptr,weak_ptr,uniqueptr 不能被拷贝只能被移动,sharedptr 维护一个引用计数,只有所有的变量都生命周期结束才会释放指针指向的资源,weakptr 是和 sharedptr 结合起来使用的,不增加引用计数,能解决循环引用的问题。

2.介绍一下 b+树的插入过程

首先根据 key 去逐层向下查找定位到 key 应该在的叶节点,如果页内有空余位置就直接插入并维护索引的有序性,如果页满则需要分裂一个新的页并在父节点添加索引和指针指向新的叶,要把原来的数据的一部分移动到新的页,如果父节点也满了就需要再分裂依次递推,最终根节点分裂树的高度会加 1。

3.write 的过程介绍一下

首先 write 系统调用,CPU 从用户态切换到内核态,数据从用户空间被拷贝到内核空间,然后就直接返回,不需要等待刷盘成功,可以使用 fsync 同步刷盘。

4.MySQL 事务的隔离级别

事务的隔离级别分别是读未提交,读提交,可重复读和串行化,它们针对三个问题分别是脏读,不可重复读和幻读去解决,读提交通过 MVCC 解决脏读,可重复读通过 MVCC 和临键锁基本解决了幻读和不可重复读的问题,当快照读和当前读混合出现的时候仍然有问题。

5.设计一个分布式限流器的方式

首先使用 redis,然后用令牌桶的方式,redis 存储桶容量,当前 token,令牌生成速率和 token 更新时间,然后使用 lua 脚本判断数量并扣减。

6.为什么析构函数需要写虚函数

使用基类的指针释放子类的对象需要调用正确的析构函数,所以需要析构函数是虚函数

7.什么是布隆过滤器

布隆过滤器可以用来判断某个 key 是否存在,通过对一个 key 计算多个哈希函数对多个位置 1,如果某个本应该置 1 的位不是 1,就一定不存在,但是可能误判,想解决误判可以使用分布式的布隆过滤器或增大布隆过滤器。

8.什么是 cap

c 是一致性,a 是可用性,p 是分区容错性,不能同时保证这三个,就是 cap 理论。

总结 这些都是之前面试答的不好的答的错误的八股,感觉 write 这个完全没有解答的思路当时,其实不难。

相关推荐
蒸蒸yyyyzwd1 天前
学习笔记 day51
transformer·八股
蒸蒸yyyyzwd1 天前
八股学习笔记 主要是 os 的内容
八股
蒸蒸yyyyzwd2 天前
八股和手撕总结
八股
蒸蒸yyyyzwd2 天前
秋招学习笔记 day46
c++·八股
蒸蒸yyyyzwd4 天前
秋招学习笔记 day48
八股
蒸蒸yyyyzwd10 天前
八股学习笔记 day42
c++·八股
蒸蒸yyyyzwd12 天前
cpp 选手秋招学习笔记 day40
笔记·八股
蒸蒸yyyyzwd13 天前
八股学习 MVCC 慢查询优化和 read 过程
c++·八股
蒸蒸yyyyzwd14 天前
算子开发面经学习笔记 day1
八股