jinchanchan 发表于 2024-12-9 16:47:20

C++ 面试题常用总结 详解 3(满足c++ 岗位必备,持续更新)




来自:碧波
一、C++语法基础
11. 函数参数传递时,指针、引用以及值传递有什么区别?

参数传递区别

值传递:复制实参的值给形参,函数内部操作的是副本,不影响原始值。

引用传递:形参是原始实参的别名,函数内部操作影响原始值。

指针传递:形参是原始实参的地址,函数内部通过解引用操作影响原始值。

12. 进程间的通信方式有那些?
各种通信方式的详细介绍,参加 线程进程以及多线程多进程

管道
命名管道
消息队列
共享内存
信号量
套接字

13. 线程间的通信方式有那些?
各种通信方式的详细介绍,参加 线程进程以及多线程多进程

共享内存

互斥锁

条件变量
顺便吆喝一声,技术大厂,前后端测试捞人,近三周条件放宽,来看看!>>>机会

14. 简单谈谈对线程的理解,线程间共享资源时该怎么处理?
线程的详细介绍,参加 线程进程以及多线程多进程

线程(Thread)是操作系统调度的基本单位,是进程内的一条执行路径,每个进程至少包含一个线程。

线程间共享资源时,需要注意数据的一致性和并发访问的安全性,避免数据竞争和不可预料的结果。一般会采用 互斥锁 来避免多线程访问导致的资源调用错误。

15. 常用关键字含义及其使用

static:关键字在不同上下文中有不同含义,主要用于:

静态变量:属于类或函数的静态存储区域,生命周期延续到程序结束。

静态函数:属于类的静态成员函数,与类的实例无关,可以直接通过类名访问。

const :用来声明常量。

常量变量:一旦初始化就不能修改的变量。

常量成员函数:在成员函数声明或定义中的 const 关键字表示该函数不会修改对象的状态。

sizeof: 是一个操作符,用于计算数据类型或变量的字节大小。

sizeof(type):返回类型或变量 type 所占的字节数。

例如:sizeof(int) 返回 int 类型的字节数,在大多数系统中是4个字节。

final:用于指示某个类、虚函数或者虚继承在派生时不可被继承或重写。

类:final class MyClass final { ... };,表示该类不能被继承。

虚函数:virtual void myFunc() final;,表示该虚函数在子类中不能被重写。

override:是C++11引入的关键字,用于 显式指示函数 是在派生类中覆盖了基类中的虚函数。

在派生类中重写基类的虚函数时,可以使用 override 关键字,以确保正确性和可读性。

virtual: 用于声明虚函数,即在基类中声明的函数,可以在派生类中被重写(override)

在基类中声明虚函数:virtual void foo();

派生类中可以选择重写基类的虚函数:void foo() override;

虚函数支持动态绑定,即在运行时根据对象的实际类型决定调用哪个版本的函数。

volatile: 用来声明一个变量是易变的,可能会被意外修改,通常用于多线程或者硬件相关的编程。

如:volatile int sensorValue;,告诉编译器不要对 sensorValue 进行优化,因为它可能会在程序控制之外被改变。

explicit:用来声明构造函数为显式构造函数,防止隐式类型转换。

例如:explicit MyClass(int value);,禁止编译器根据上下文进行隐式转换,必须显式调用构造函数。

inline:声明可以用于 函数定义 或者 成员函数 定义,建议编译器将 函数的代码插入到每个调用点处,而不是通过函数调用的方式进行调用。

如:inline int add(int a, int b) { return a + b; }

extern C 的作用

用于告诉编译器按照C语言的方式进行链接,主要用于解决C++代码和C代码混合编译的问题。

define 和 typedef 的区别

define: 用于定义宏,预处理阶段替换源代码中的标识符;

如:#define PI 3.14159

typedef : 用于给数据类型取别名。后续可以直接使用别名进行声明变量。

如:typedef unsigned int UINT;    UINT num;   // 等价于unsigned int num。



hex123 发表于 2024-12-23 07:38:10

挺不错的面试题,总结,感谢分享
页: [1]
查看完整版本: C++ 面试题常用总结 详解 3(满足c++ 岗位必备,持续更新)