C++——八股文

‌2024年C++笔试面试题‌涵盖了多个方面,包括基础知识、设计模式、进程通信、内存管理、多态实现等。以下是一些常见的面试题目及其解答:
基础知识

1‌、C++和C的区别‌:

  1. C++是面向对象的语言,而C是面向过程的语言。
  2. C++引入了new/delete运算符,取代了C中的malloc/free库函数。
  3. C++引入了引用的概念,而C中没有。
  4. C++引入了类的概念,而C中没有。
  5. C++支持函数重载,而C中没有这一特性‌。

2‌、static关键字的作用‌:

修饰局部变量时,使得该变量在静态存储区分配内存,生命周期与程序相同,作用域为局部作用域。
修饰全局变量时,使得该变量在静态存储区分配内存,在声明该变量的整个文件中都是可见的。
修饰函数时,使得该函数在声明该函数的整个文件中都是可见的,从而避免同名的函数冲突。
修饰成员变量时,所有的对象都只维持一份拷贝,实现不同对象间的数据共享‌。

3、进程和线程的区别‌:

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

4、设计模式

‌工厂设计模式‌:
‌定义‌:定义一个创建对象的接口,让子类决定实例化哪个类,对象的创建统一交由工厂去生产,具有良好的封装性,既做到了解耦,也保证了最少知识原则。
‌分类‌:简单工厂模式、工厂方法模式、抽象工厂模式‌3。

5、内存管理

共享内存的安全性‌:
共享内存本身没有内建安全措施,需要通过互斥锁或信号量来同步对共享内存的访问。
实施访问控制,限制哪些进程可以访问共享内存。
定期检查和清理,避免僵尸进程造成的资源泄露‌2。

6、多态实现方式

‌多态的实现方式‌:

‌虚函数‌:通过基类中的虚函数实现多态。派生类通过重写基类的虚函数来改变函数的行为。

‌抽象类‌:包含至少一个纯虚函数的类称为抽象类。派生类必须实现基类的纯虚函数才能进行实例化‌。

7、指针与引用:

什么是指针?什么是引用?它们有什么区别?
  如何避免野指针?

8、内存管理:

C++中有哪些内存分配方式?

解释new和delete的作用。

std::unique_ptr和std::shared_ptr的区别是什么?

9、类与对象:

构造函数和析构函数的用法。

静态成员变量和静态成员函数的作用。

成员函数、友元函数和全局函数的区别。

10、继承与多态:

虚函数是如何实现的?

什么是虚表(vtable)?它是如何工作的?

纯虚函数与抽象类的概念。

菱形继承问题及解决方法。

11、模板:

函数模板与类模板的区别。

模板特化是什么?

12、异常处理:

异常处理的基本语法。

栈展开(stack unwinding)过程。

异常安全编程的原则。

13、标准库:

std::vector、std::list等容器的使用场景。

迭代器失效的情况。

std::algorithm中的常用算法。

14、并发与线程:

std::thread的基本使用。

互斥锁(mutex)与条件变量(condition variable)

std::atomic的使用。

15、数据结构与算法

链表操作:
        反转一个单链表。
        删除链表中的重复节点。
        实现LRU缓存机制。
    树结构:
        二叉搜索树的插入与删除。
        平衡二叉树(如AVL树)的旋转操作。
        二叉树的遍历(前序、中序、后序)。
    图算法:
        Dijkstra最短路径算法。
        Floyd-Warshall算法求解所有顶点对之间的最短路径。
        图的深度优先搜索(DFS)和广度优先搜索(BFS)。
    排序算法:
        快速排序、归并排序、堆排序的实现。
        排序算法的时间复杂度分析。

16、动态规则

最长公共子序列(LCS)问题。

背包问题(Knapsack Problem)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨染新瑞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值