文章目录

  • ​​1.C++ 字节 抖音后端 一面面经​​

1.C++ 字节 抖音后端 一面面经

  • ​链接​
  • 说一说你平时接触过的主要的技术栈;
  • MySQL聚簇索引和非聚簇索引的区别
  • InNoDB的聚簇索引是用什么存储的
    (1)聚簇索引是一种数据的存储方式, 它的数据行只存放在索引(B+树)的叶子中,内部节点不存放数据
  • MySQL的事务隔离级别清楚吗
    (1)事务的隔离级别. MySQL的事务隔离级别一共有四个,分别是读未提交、读已提交、可重复读以及可串行化。. MySQL的隔离级别的作用就是让事务之间互相隔离,互不影响,这样可以保证事务的一致性。. 隔离级别比较:可串行化>可重复读>读已提交>读未提交. 由此看出,隔离级别越高,所需要消耗的MySQL性能越大(如事务并发严重性),为了平衡二者,一般建议设置的隔离级别为可重复读,MySQL默认的隔离级别也是可重复读。
  • 简单说一下什么是IO多路复用
    (1)单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力
  • IO多路复用是解决什么问题的
    (1)IO复用解决的就是并发行的问题,那么对于IO流请求操作系统内核有并行处理和串行处理的概念,串行处理的方式是一个个处理,前面的发生阻塞,就没办法完成后面的请求。
  • mmap有了解过吗
    (1)将文件或者IO映射到一块内存区域
  • 简单说下进程和线程的区别
    参考:​​面试必问——线程与进程的区别​
  • 什么情况下线程死掉,进程里面的其他线程全部死掉
    (1)同一个进程中的多个线程共享进程资源,包括主内存、文件句柄、锁资源等。那么当一个线程死了(非正常退出、死循环等)就会导致线程该占有的资源永远无法释放,从而影响其他线程
  • 已经有进程了,为什么还要设计出线程这个东西
    (1)多线程:threading,利用CPU和IO可以同时执行的原理,让CPU不会干巴巴等待IO完成
    (2)多线程 threading 机制依然是有用的,用于IO密集型计算
    因为在 I/O (read,write,send,recv,etc.)期间,线程会释放GIL,实现CPU和IO的并行,因此多线程用于IO密集型计算依然可以大幅提升速度;
    (3)即使电脑有多核CPU,单个时刻也只能使用1个,相比并发加速的C++/JAVA所以慢,C++/JAVA的多线程程序会分配到多核上去执行
  • 解释下什么叫多态
    多态性是指发出同样的消息被不同类型的对象接收时,有可能导致完全不同的行为
    (1)调用同名的函数导致不同的行为
    (2)以一致的观点来看待,从同一个基类派生下来的所有派生类对象,减轻了我们分别设计的负担
  • 虚函数跟纯虚函数有什么区别
    强调一个概念. 定义一个函数为虚函数,不代表函数为不被实现的函数。. 定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。. 定义一个函数为纯虚函数,才代表函数没有被实现。. 定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数
  • 描述下TCP的三次握手
    算法题:未经排序的数组找出最长连续递增序列
    算法题:机器人从矩阵左上角走到右下角,有多少种不同的路径 (只能向右或者向下) 分析时间、空间复杂度
    算法题:大数加法