首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
摆烂了的可乐很不想泡池子
门头沟学院 嵌入式软件开发
关注
已关注
取消关注
@HellowordX:
C++面试高频(二)
1.知道动态链接与静态链接吗?两者有什么区别 动态链接和静态链接的区别: 动态链接: 在程序运行时进行链接,加载共享库文件。 节省空间,可多个程序共享库文件。 灵活性高,可以动态加载不同版本的库文件。 维护方便,只需更新库文件本身。 静态链接: 在编译时进行链接,将库函数复制到可执行文件中。 独立的可执行文件,不依赖外部库文件。 可执行文件较大,可能会有冗余代码。 维护复杂,更新库函数需重新编译和分发可执行文件。 使用场景和优缺点: 动态链接适合节省资源、可升级和灵活性要求高的场景。但在运行时有一定开销。 静态链接适合独立部署和简化依赖关系的场景。但可执行文件较大且维护复杂。 2.C++编译时和C有什么不同,在c++中怎么用c? C++与C在编译时的主要区别有以下几点: 由于C++支持函数重载,因此编译器编译函数的过程中会将函数的参数类型也加到编译后的代码中,而不仅仅是函数名;而C语言并不支持函数重载,因此编译C语言代码的函数时不会带上函数的参数类型,一般只包括函数名。 语法和功能:C++相比C具有更多的语法和功能。C++引入了面向对象编程的概念,包括类、继承、多态等。此外,C++还提供了更多的库和工具,如标准模板库(STL)和异常处理机制等。 兼容性:C++是C的超集,这意味着C的源代码可以直接在C++中编译和运行。C++编译器会自动识别和处理C的语法,因此可以使用C代码编写的功能和库。 在C++中使用C代码有多种方式,其中常见的几种方式包括: 使用extern "C"进行函数声明:在C++中,使用extern "C"修饰C代码的函数声明,以告诉编译器使用C的名称重载规则。 extern "C" { // C函数声明 int add(int a, int b);} 在C++中包含C的头文件:在C++源文件中直接包含C的头文件,即#include "my_c_code.h",然后直接使用其中声明的C函数和数据结构。 #include "my_c_code.h"int main() { int result = add(3, 4); // 调用C函数 return 0;} 使用#ifdef __cplusplus进行条件编译:在C的头文件中使用条件编译,根据__cplusplus宏定义来区分C和C++环境,在C++环境下使用extern "C"修饰C函数声明。 #ifdef __cplusplusextern "C" {#endif// C函数声明int add(int a, int b);#ifdef __cplusplus}#endif 3.为什么要少使用宏?C++有什么解决方案? 在C++中,推荐尽量避免过多使用宏的原因有以下几点: 可读性差:宏通常使用简单的文本替换机制,在代码中展开为复杂的表达式或语句,导致代码可读性降低。 潜在的副作用:宏的使用可能导致潜在的副作用,比如多次求值、修改变量等,这可能导致意外行为和错误。 缺乏类型检查:宏不进行类型检查,因此在使用宏时需要自行确保类型匹配,否则可能导致运行时错误。 为了解决这些问题,C++提供了一些替代方案来减少宏的使用: 使用const和constexpr:C++中的const和constexpr关键字可以用于定义常量,避免了宏定义常量的麻烦,并且提供了类型安全和编译期计算的优势。 使用内联函数:C++的内联函数可以取代宏,以提高代码的可读性和类型安全性。内联函数在编译时展开,避免了宏带来的副作用和类型不匹配的问题。 使用模板:模板是C++的强大特性之一,可以实现类型安全的泛型编程。通过模板,可以避免使用宏进行代码的泛化。 4.请你说说内联函数,为什么使用内联函数?需要注意什么? 内联函数是指在函数声明前加上inline关键字的函数,它的作用是告诉编译器在调用函数的地方直接将函数体插入,而不是通过函数调用的方式执行。使用内联函数可以提高代码的执行效率,减少函数调用的开销。 使用内联函数的主要目的是减少函数调用的开销,因为函数的调用会涉及栈帧的创建和销毁、参数传递等操作,而将函数体直接插入调用点则无需进行这些操作。 需要注意的点: 内联函数适用于函数体简单、调用频繁的情况。如果函数体较大或调用频率较低,使用内联函数可能会导致代码膨胀,产生更多的代码复制,甚至可能导致性能下降。 内联函数的声明通常放在头文件中,因此需要注意内联函数的定义和声明应该一致,遵循内联函数的定义规则,在同一个编译单元中只能有一个定义。 虚函数不能使用内联函数,因为虚函数的调用是通过虚表进行的,无法在编译时确定调用的具体函数。 5.简述C++从代码到可执行二进制文件的过程 预处理(Preprocessing):预处理器(如cpp)会处理源代码文件,展开宏定义、处理条件编译指令等,并生成一个被称为"翻译单元"(translation unit)的中间文件。 编译(Compilation):编译器(如gcc、clang等)将预处理产生的翻译单元转化为汇编代码(Assembly Code)。这个阶段将源代码的高级语言表示转化为底层的汇编指令。 汇编(Assembly):汇编器(如as)将汇编代码转化为机器码的目标文件(Object File)。目标文件中包含了可执行程序的机器指令,但还没有进行最终的链接。 链接(Linking):链接器(如ld)将目标文件与所需的库文件进行链接,解析符号引用,生成最终的可执行二进制文件。这个阶段还包括地址分配、符号解析、重定位等操作,确保不同目标文件之间的引用关系正确。 6.继承和虚继承 继承是面向对象编程中的一个重要概念,它允许一个类(派生类或子类)继承另一个类(基类或父类)的属性和方法。通过继承,派生类可以重用基类的代码,并可以在此基础上进行扩展和修改。 继承可以通过以下方式进行: 公有继承(public inheritance):使用public关键字来指定基类与派生类之间的继承关系。公有继承表示派生类可以访问基类的公有成员。例如: class Base {public: int x;};class Derived : public Base {public: int y;};在这个例子中,Derived类公有继承了Base类,因此它可以访问Base类中的公有成员变量x。 保护继承(protected inheritance):使用protected关键字来指定基类与派生类之间的继承关系。保护继承表示派生类可以访问基类的公有和保护成员。例如: class Base {protected: int x;};class Derived : protected Base {public: int y;};在这个例子中,Derived类保护继承了Base类,因此它可以访问Base类中的公有和保护成员变量x。 私有继承(private inheritance):使用private关键字来指定基类与派生类之间的继承关系。私有继承表示派生类可以访问基类的公有和保护成员。例如: class Base {private: int x;};class Derived :
点赞 17
评论 5
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
04-27 17:02
已编辑
门头沟学院 游戏策划
菜鸡游戏策划找暑期实习心路历程
暑期找实习也算告一段落了,过程也是比较曲折了。在牛客上也是看过不少经验了,这也来分享下经验希望能帮助到一些人,随手写的将就着看吧。先说下背景吧,26届美本硕。本科游戏制作,硕士计算机。无实习经历。本科毕业设计做过一个独立游戏,上了steam有一定的热度,拿了一个国外游戏大赛的奖。3月:开始投递各家公司,第一波只投了中大厂,系统策划岗位。现在想想也是挺搞笑,当时可以说对行业一窍不通,觉得自己有点想法,自信满满也没怎么准备,结果可想而知。字节------offer:流程最快的。一面直接就是制作人,与其说是面试更像是聊天,简单聊了聊做的项目,中间聊了聊字节的游戏业务,后面还聊到小岛秀夫了。莫名其妙就...
点赞
评论
收藏
分享
04-27 10:16
已编辑
重庆大学 安全工程师
所以,你们许给我们的远大前程呢
过了小半辈子,突然停下来的时候,回头一看,发现身边每个人真的都在忍辱负重。看到前几天的猿辅导事件,年纪轻轻倒在连续加班18天后的夜晚,算起来,那位应该和我差不多岁数。几周以前,关系要好的实习生突然问我,深圳税前几千块的offer可不可以接,她找了很久的工作,从最开始认为会一切顺利到如今开始思考是否足够将就才能落地。而这样的女生,她的bg是9本+知名港硕+几段并不水的实习经历。还有更早一点的时候,和组里的实习生吃饭,热气腾腾的日料店里,小姑娘很惆怅地说,不知道毕业之后第一份工作的着落在哪里。现实的拷问如此残酷,虚长一些年岁的姐姐们,再也没有办法安慰说,有时候,人只要内心平静就可以。而在昨天夜里,...
聪明的加菲猫又在摸鱼:
好多时候真的感觉不是我们不努力,而是努力的人真的太多了,永远有人在你前面
真的是验证了只要肯吃苦就有吃不完的苦这句话。。
点赞
评论
收藏
分享
04-13 22:43
复旦大学 运维工程师
b站这是寄了嘛
投了好久了都。。。
吴offer选手:
我卡在笔试才是最好笑的,甚至没给我发过笔试链接
投递哔哩哔哩等公司6个岗位
点赞
评论
收藏
分享
03-12 15:34
已编辑
北京邮电大学 Java
26暑期简历求拷打
感觉项目太烂了 这个时间点还够换一个吗
呓语0613:
老哥你这黑马点评改造是在哪里看的
点赞
评论
收藏
分享
04-28 10:50
得物app_安卓开发工程师(准入职员工)
得物内推-得物内推码
给点经验 印象中的进度:6.14夜里投递 6.15中午电话沟通约面6.16面试(一个小时收到口头offer电话)6.20正式发offer 6.21入职 得物面经(其实没什么面经)因为得物岗位很多: 1.自我介绍的时候在在jd上贴合匹配度 2.表示出自信和想去的态度(因为毕竟现在实习生鸽公司的现象也很多,你在用你摇摆的态度去面试,其实mentor也会用这种态度对你) 3.对自己的简历要熟悉(因为确实会深挖一下) 投递Tips: 1.今年暑假真的很卷。可以适当降低自己的预期 2.投递一定要看哪家公司最近在招人!看最近,而不是看到什么岗位投什么。这样查看率会比较高(我感觉基本在***我的简历被查...
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
暑期后端高频问题汇总
7.3W
2
...
左手敲代码的程序员,不配拥有offer吗?
6.8W
3
...
五一假期,弯道超车时间表
1.2W
4
...
后端简历上最值得写的项目
9707
5
...
北京到底有谁在啊?
8571
6
...
五一别写你那破开源代码了
8355
7
...
五一准备刷完这些面试八股题!!
7130
8
...
快手投诉后续- HR把我拉黑了!
6391
9
...
和ai聊天,忍不住爆哭
6103
10
...
拼多多服务端信息确认
5958
创作者周榜
更多
正在热议
更多
#
设计人如何选offer
#
98390次浏览
689人参与
#
找工作,行业重要还是岗位重要?
#
7738次浏览
102人参与
#
五一之后,实习真的很难找吗?
#
45702次浏览
324人参与
#
盲审过后你想做什么?
#
12684次浏览
113人参与
#
外包能不能当跳板?
#
22195次浏览
191人参与
#
领导秒批的请假话术
#
9921次浏览
74人参与
#
考研可以缓解求职焦虑吗
#
21158次浏览
251人参与
#
五一假期,你打算“躺”还是“卷”?
#
30430次浏览
436人参与
#
找工作前vs找工作后的心路变化
#
7203次浏览
64人参与
#
面试等了一周没回复,还有戏吗
#
115645次浏览
1074人参与
#
硬件人,你被哪些公司给挂了
#
46708次浏览
722人参与
#
安克创新求职进展汇总
#
32579次浏览
415人参与
#
大疆的机械笔试比去年难吗
#
69651次浏览
603人参与
#
应届生薪资多少才合理?
#
3115次浏览
24人参与
#
牛友们的论文几号送审
#
27265次浏览
623人参与
#
写简历别走弯路
#
714482次浏览
7850人参与
#
你喜欢工作还是上学
#
37662次浏览
412人参与
#
如果有时光机,你最想去到哪个年纪?
#
43335次浏览
769人参与
#
如果不工作真的会快乐吗
#
101223次浏览
867人参与
#
每人推荐一个小而美的高薪公司
#
72850次浏览
1357人参与
牛客网
牛客企业服务