C++面试问题收集

 0 持续更新中


目录

 0 持续更新中

1 C++语言相关

1.1 malloc/free和new/delete区别

1.2 内存泄漏

1.3 堆区和栈区的区别

1.4 宏定义和const的区别

1.5 多态

1.6 类中的静态成员变量

2 操作系统相关

2.1 进程和(用户)线程的区别

2.2 系统调用

2.3 中断

2.4 进程切换

2.5 页面置换算法

2.6 虚拟内存的实现

2.7 线程间的通信

3 计算机网络

3.1 TCP和UDP的区别

3.2 TCP三次握手四次挥手

3.3 TCP和UDP的结构

4 数据库

4.1 innodb引擎

5 算法题

5.1 给定一个数组,查找重复元素


1 C++语言相关


1.1 malloc/free和new/delete区别

  • malloc/free 是c语言中的库函数。new/delete是C++中的关键字。库函数不可以重载,关键字可以。
  • malloc要自己计算内存大小。new是有编译器计算内存大小。
  • malloc返回的是void*指针。new返回的是对应类型的指针。
  • new和delete使用时会调用构造函数和析构函数,但malloc和free不会。

1.2 内存泄漏

  • 程序占有内存资源而不释放内存资源。
  • 堆内存泄漏:malloc和new后忘记free和delete。
  • 系统资源泄漏:忘记释放各种句柄。
  • 数组对象没有一个一个delete或者没用delete[]。
  • 基于基类指针生成子类对象,基类的析构函数不是虚函数导致子类调用基类的析构函数而不是自己的析构函数。

1.3 堆区和栈区的区别

  • 管理方式不同:栈是由编译器自动申请和释放的,堆是由程序员自己申请和释放的。
  • 空间大小不同。
  • 是否产生内存碎片:栈是不会产生内存碎片,堆会。
  • 堆是动态分配,栈既有动态分配又有静态分配。
  • 栈的效率高于堆。

1.4 宏定义和const的区别

2024-春招-4399-一面

答案


1.5 多态

2024-春招-4399-一面

答案


1.6 类中的静态成员变量

2024-春招-4399-一面

答案


2 操作系统相关


2.1 进程和(用户)线程的区别

  • 进程是资源分配的基本单位。线程是CPU调度的基本单位。
  • 进程切换效率低,线程切换效率。
  • 进程有独立的虚拟地址空间。线程没有,但线程有栈,pc,本地存储等独立空间。
  • 线程必须依附与进程,一个进程可以有多个线程。
  • 同一进程内的线程切换就不需要CPU切换进程。
  • 进程切换效率低,线程切换效率

2.2 系统调用

C语言调有exec()函数就可以调用一个系统调用。

  • 执行系统调用时,CPU会从用户态转变为核心态。
  • 系统要调用外部资源时需要执行系统调用,如键盘输入,打印机等。
  • 流程:传递系统调用参数->执行陷入指令(用户态) -> 执行系统调用相应服务程序(核心态)->返回用户程序。

2.3 中断

  • 硬中断:硬件相关。如—网络流量不断送进一个有限的缓冲区,使用硬中断可以要求CPU优先处理这个有限的缓冲区以免数据丢失。

  • 软中断:用户相关。应用程序通过系统调用使CPU从用户态转为内核态。

2.4 进程切换

  • 并行性:多个CPU分别运行不同的进程。
  • 并发性:CPU不断切换进程达到类似对个进程并行的效果。
  • 进程切换有个三角裤图。

2.5 页面置换算法

程序发生缺页中断,执行页面置换算法。

  • 目的:减少页面置换的次数
  • 先进先出算法。
  • 最佳置换算法。
  • 最近未使用算法。
  • 时钟页面置换算法。

2.6 虚拟内存的实现


2.7 线程间的通信

2024-春招-4399-一面

答案


3 计算机网络


3.1 TCP和UDP的区别

2024-春招-4399-一面

相同点:

  • 均属于传输层协议。
  • 为应用层提供服务。

不同点:

  • TCP是面向连接,UDP是面向未连接。
  • TCP是可靠传输,UDP是不可靠传输。
  • TCP是1对1,UDP可以多对多。
  • TCP是基于字节流(分段,分片),UDP基于报文。

3.2 TCP三次握手四次挥手

百度的图。


3.3 TCP和UDP的结构

来自百度

4 数据库


4.1 innodb引擎

B+树


5 算法题


5.1 给定一个数组,查找重复元素

2024-春招-4399-一面

这里我回答的是用哈希表,时间复杂度是O(n);

相关推荐

  1. OSPF面试收集

    2024-03-15 03:14:01       25 阅读
  2. C语言面试重点问题

    2024-03-15 03:14:01       13 阅读
  3. 网络安全面试收集

    2024-03-15 03:14:01       36 阅读
  4. C++】开源项目收集

    2024-03-15 03:14:01       8 阅读
  5. Top100 C++编程面试问题

    2024-03-15 03:14:01       31 阅读
  6. C++面试经典问题-Union联合

    2024-03-15 03:14:01       36 阅读
  7. C++面试高频问题汇总( 一)

    2024-03-15 03:14:01       37 阅读
  8. C++Webserver服务器常见面试问题总结

    2024-03-15 03:14:01       12 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-15 03:14:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-15 03:14:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-15 03:14:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-15 03:14:01       20 阅读

热门阅读

  1. Winform程序中UI更新延迟

    2024-03-15 03:14:01       17 阅读
  2. 爬虫:爬取新闻内容及图片,存入数据库

    2024-03-15 03:14:01       20 阅读
  3. 怎样把1.ts-10.ts的文件拼接成一个MP4文件

    2024-03-15 03:14:01       23 阅读
  4. C语言统计书本借阅情况

    2024-03-15 03:14:01       16 阅读
  5. linuxi系统docker容器编排工具compose

    2024-03-15 03:14:01       18 阅读
  6. 记一次实战项目所学(通用接口篇)

    2024-03-15 03:14:01       20 阅读
  7. Coinbase: AI+区块链的投资与创业机会

    2024-03-15 03:14:01       16 阅读
  8. C语言自学笔记5-----C 语言 if...else 语句

    2024-03-15 03:14:01       20 阅读