设为首页 收藏本站
查看: 168|回复: 0

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

[复制链接]
累计签到:50 天
连续签到:1 天
发表于 2024-12-9 16:45:41 | 显示全部楼层 |阅读模式



来自:碧波

一、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。




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-1005650-1-1.html 上篇帖子: 没有了 下篇帖子: C++ 面试题常用总结 详解 4(满足c++ 岗位必备,持续更新)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表