主题:最新大厂C++面试真题合集,大厂面试百日冲刺 day1
百度云存储一面
1. vfork了解吗
vfork 是一个UNIX系统调用,用于创建一个新的进程,称为子进程,它与创建它的父进程共享相同的内存空间。vfork 被设计用来在执行 exec 系列函数前作为一个临时步骤。它区别于 fork,因为它不会复制父进程的地址空间,而是直接使用父进程的地址空间,直到子进程调用 exec 或 exit。这样做的目的是为了提高性能,但缺点是可能导致父子进程间的同步问题。现代系统上,vfork 的行为通常与 fork 相似,或被 clone 系统调用所取代。
2. C++程序编译链接过程
3. 静态链接和动态链接的区别
静态链接和动态链接的主要区别在于:
静态链接:
动态链接:
4. 拷贝构造和移动构造函数的区别
拷贝构造函数:
移动构造函数:
5.深拷贝和浅拷贝的区别
浅拷贝:
深拷贝:
6.浅拷贝和move有区别吗
有,
浅拷贝:
移动操作(move):
7.空类的大小
空类的大小为1字节。
8.类的继承有几种方式,区别是啥
C++中类的继承有三种方式:
9.进程之间的通信方式有哪些
10.进程和线程的区别
进程是系统进行资源分配和调度的一个独立单位,拥有自己的地址空间;线程是进程的执行流,是CPU调度的基本单位,同一进程中的线程共享进程的资源。
11.两个进程想用同一个端口可以做到吗
通常情况下,同一时间内两个进程不能监听同一个端口。但如果第二个进程设置了SO_REUSEADDR或SO_REUSEPORT套接字选项,则可能允许绑定到同一个端口,这取决于操作系统的实现。
12.TimeWait是干嘛的,是主动断开方的状态还是被动断开方的状态
TIME_WAIT是TCP连接断开流程中的一个状态,它是主动关闭方在发送最后一个ACK应答后进入的状态。这个状态的作用是确保最后一个ACK能到达对方,避免由于网络延迟导致的连接重置,以及确保所有旧的数据包在网络上消失,防止它们干扰新的连接。
13.出现大量time wait怎么继续用端口快速建立连接
大量的TIME_WAIT状态可能会使新的连接无法立即使用这些端口。为了解决这个问题,可以采取以下措施:
14.socket有个参数可以重用连接,了解吗
存在两个套接字选项可以影响连接的重用:
15.Innodb索引
InnoDB是MySQL的一个存储引擎,它使用的主要索引类型是B+树索引,包括两种:
16.主键索引和联合索引的区别
17.主键索引在索引表上只存有索引数据吗
不完全是。在InnoDB引擎中,主键索引(Clustered Index)是一种特殊类型的索引,存储了索引数据以及与之对应的表数据。这意味着,主键索引实际上包含整个表的数据。
18.事务的隔离级别
19.幻读是什么
幻读是指在一个事务处理过程中,由于其他事务插入了新行,当查询重复时,会出现新的、"幻"的数据。这主要在低隔离级别的事务中发生,尤其是在非串行化的隔离级别下更常见。它与不可重复读类似,但不可重复读通常是指同一行的数据的变化,而幻读是针对由其它事务所插入的新行。
20.哪个隔离级别可以解决幻读
串行化(Serializable)隔离级别可以解决幻读问题。在这个隔离级别下,事务是完全串行执行的,因此可以防止幻读,也能防止其它读写冲突的情况。
21.手撕LRU
实现一个最近最少使用(LRU)缓存机制通常涉及到两个核心部件:双向链表和哈希表。双向链表用于表示缓存中的数据顺序,其头部元素是最近最少使用的元素,尾部元素是最近使用的元素;哈希表则存储键和其在双向链表中对应节点的映射,以实现 O(1) 时间复杂度的访问。
顺便吆喝一句,民族企业大厂,前后端测试捞人,感兴趣的来!