导航菜单
首页 >  大厂面试真题  > 2024最新大厂C++面试真题合集,玩转互联网公司面试!

2024最新大厂C++面试真题合集,玩转互联网公司面试!

小米C++

1. 进程和线程的区别

进程是操作系统分配资源和调度的独立单位,拥有自己的地址空间和系统资源。线程是进程内部的执行单元,共享属于相同进程的资源,但是执行切换代价更小。进程间相互独立,稳定性较高;线程间共享内存,创建和切换成本较低,但一个线程的失败可能影响同进程的其他线程。

2.进程通信方式

进程通信方式主要包括:

管道:允许一个进程和另一个与它有共同祖先的进程之间进行通信。消息队列:消息的链表,存储在内核中,由进程间发送接收消息。共享内存:允许多个进程访问同一块内存空间,是最快的IPC方式。信号量:主要用于解决进程间的同步问题。套接字:适用于不同机器间的进程通信。信号:用于通知接收进程某个事件已经发生。

3.socket与其他通信方式有什么不同

Socket 可以实现不同主机间的进程通信,适用于网络中跨操作系统通信。Socket 通常支持全双工通信,即同一时间可以进行数据的双向传输。Socket 支持面向连接(如TCP协议)和无连接(如UDP协议)的通信方式。使用 Socket 进行通信需要创建、配置、使用和关闭套接字,比其他通信方式如管道和信号等有更明确的使用流程。

4.共享内存安全吗,有什么措施保证

共享内存本身没有内建安全措施,通过以下方式确保安全性:

使用互斥锁或信号量来同步对共享内存的访问。实施访问控制,限制哪些进程可以访问共享内存。定期检查和清理,避免僵尸进程造成的资源泄露。根据需求实现读写锁,允许多读单写的安全访问模式。

5.linux中内存分布有哪些,cpp呢 Linux中内存分布主要包括:

用户空间:应用程序占用的内存区域。内核空间:操作系统内核及其数据结构和模块占用的内存区域。栈区:自动分配和释放的本地变量存储区域。堆区:动态分配内存区域,需手动分配和释放。代码区:存放程序执行代码。数据区:存放全局变量和静态变量。

C++中内存分布主要包括:

栈(Stack):局部变量和函数调用。堆(Heap):动态分配的内存(使用new和delete管理)。全局/静态存储区:全局变量和静态变量。常量存储区:常量字符串和常量值。代码区:函数体的二进制代码。

6.多态实现方式 多态在C++中的实现方式通常有两种:

虚函数(通过类的继承和虚函数表实现)函数重载(同一作用域内多个同名函数通过参数列表区分)

7.cpp面向对象的优势

C++面向对象编程(OOP)的优势包括:

封装:提高代码安全性和复用性,隐藏实现细节。继承:提高代码可维护性,通过基类和派生类体系结构重用代码。多态:提高代码的可扩展性和灵活性,允许接口多种实现。抽象:简化复杂性,只暴露核心操作,底层细节被抽象化。

手撕:数组的部分元素求和

#include #include using namespace std;// 函数用于计算数组中指定范围内元素的和int sumOfSubArray(const vector& nums, int start, int end) {int sum = 0;for (int i = start; i

相关推荐: