- 博客(7)
- 收藏
- 关注
原创 c++面试八股小记4
终端退出会给bash程序发送SIGHUP,然后bash会给所属session中的所有进程发送SIGHUP信号,如果进程有处理的方法会处理,否则进程会直接退出。多线程共同访问共享资源时,也能保证访问后资源是确定的和可预期的,不会因为线程的切换或者竞态条件导致资源错误或者程序崩溃。非原子操作不是线程安全的(如swap,交互资源指针和控制块指针,多线程下可能出现资源的指针和控制块的指针不匹配)char* ptr;当容量和大小都为n/2时,再插入一个元素,扩容到n,进行n/2次拷贝或移动。
2025-05-05 22:21:44
784
原创 c++面试八股小记3
因为mmap做内存映射是会进行内核态和用户态的来回切换,同时使用send做拷贝时也会存在切换,所以mmap实现的零拷贝只减少了两次拷贝次数。但是stl容器的分配器是默认的堆分配器,所以要实现上述方法需要自定义allocator,将内存分配到mmap或者shm地址中。不能,虚表指针在构造函数调用过程中赋值,如果构造函数是虚函数,无法通过虚表指针找到虚表,也就无法找到对应的构造函数。运行时通过虚函表中的typeinfo指针指向的数据进行类型判断(判断是否能进行转换),所以必须用在有虚函数的类中。
2025-04-26 22:31:57
610
原创 c++面试八股小记2
可以模板的定义必须在编译期可见模板在编译时需要根据模板的使用情况进行实例化,生成带类型的类或者函数,如果这时无法获得模板的定义,就无法生成具体的实例,后序链接就会出问题。编译时没有include cpp文件的话是对cpp文件不可见的模板实现的常见方法直接在头文件实现头文件声明,源文件实现同时指定模板的具体版本(确定传入模板的参数),只能使用cpp中指定版本的模板在.tpp/.impl中实现,然后由头文件include。
2025-04-24 22:42:54
670
原创 c++面试八股小记1
例如,全局变量或静态变量持有的内存。派生类在多继承时,由多个虚表指针,对某个基类虚函数重写时,对应基类的虚表中的虚函数指针会被更新,如果有新虚函数,会在第一个虚表后增加虚函数地址。保证安全和稳定,将普通程序限制在了用户态下,不允许直接访问硬件和io等资源,限制了cpu的权限,避免了用户的误操作导致资源损坏。模板:写一些与类型无关的代码,编译器在编译时生成模板的带类型的实例,同时也确定了调用的具体代码。函数重载:函数名相同,参数列表不同(类型,数量,顺序),编译器根据提供的实参决定调用哪个函数。
2025-04-23 21:27:45
1208
原创 Redis八股速记
v6后,有多个线程,每个线程一个epoll实例,提高了接受网络io的能力,但依然是一个主线程执行所有指令。通过加锁或者队列控制数据库访问的线程数量。mysql没查到,会在redis缓存空对象,后序的重复查询就可以在redis上查询到,减小数据库负担。AOF头部存RDB,后序新的写操作记录在AOF末尾,避免了RDB保存间隔时出现宕机导致的数据丢失。通过缓存淘汰策略,不断迭代缓存中的数据,淘汰到大部分非热点数据,最后缓存中留下热点数据。大量即不在缓存也不在数据库上的请求到来,会加大数据库的负担,甚至崩溃。
2025-04-22 17:45:17
1406
原创 Mysql八股速记
innodb是主键使用聚族索引,如果没有主键,会选择一个唯一的非空索引作为聚族索引,如果没有这样的索引,会创建一个隐藏的主键。一个事务读了一份数据,这份数据后序被另一个事务更改并提交了,这个事务然后继续读数据就得到一份不一致的数据,出现不可重复读。仅叶子节点保存数据,一个分支节点可以保存更多的key,树的高度也更矮,查询一个索引时需要的磁盘IO更少。使用非聚族索引查询时,先查到索引对应的主键,然后通过主键值回表查询到主键索引中的完全数据。记录sql对页数据的修改,修改的页号,偏移量,具体的数据。
2025-04-21 22:41:20
1660
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅