首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
牛客259211834号
西安电子科技大学 人工智能
发布于陕西
关注
已关注
取消关注
@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
评论 6
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
01-27 08:38
已编辑
北京大学 Java
别卷了!AI承认切图还差得远,我直接躺平
“以前一听到‘AI要取代前端了’,我这颗切图仔的心就瑟瑟发抖,Figma开到凌晨三点,切个大屏还得被设计师追着改像素。现在好了,Grok亲口承认:AI切图还差得远,只能给我打杂端茶递水。我寻思着,那我还卷个锤子?直接把椅子调成躺平模式,左手可乐右手手机,figma挂着进度条假装在渲染,Slack消息已读不回。‘在改Bug呢领导,马上好’。AI你来,你行你上啊!切个有状态的交互组件试试?写个完美适配暗黑模式的Tailwind class试试?处理一下iOS Safari那坨屎一样的视口单位试试?来来来,轮到你给我打工了——先帮我把这个切图仔的周报润色得感天动地,再顺手把明天的PR review过...
飞屋一号:
给各ai拉个群,让他们给你打黑工
点赞
评论
收藏
分享
昨天 21:56
睿联技术_前端开发部_Web前端开发工程师(准入职员工)
凡岛内推,凡岛内推码
「卷不卷」灵魂拷问 "弹性打卡+5点半跑路自由"是真的! 但!前提是高效搞定KPI(划重点) 对比广州某些大厂「表演式加班」,凡岛更适合目标感强、想快速成长的狠人 (上周刚见证同组管培生半年升主管,述职PPT那句“广州不相信眼泪,但努力的人永远幸运”直接封神) ▪️ 「萌新生存法则」 1️⃣ 团队95后占70%,开会直接甩脑图互怼,但吵完立马奶茶和好 2️⃣ 公司四餐全包(粤菜湘菜川菜轮流投喂),本湖南人狂喜 3️⃣ 神舟路地铁口10分钟通勤,周边租房2k能拿下带健身房的新公寓 (广州打工人忠告:选离地铁<15分钟的房子!暴雨天就知道多救命)【日化新锐·广州凡岛】26届提前...
凡岛公司福利 595人发布
点赞
评论
收藏
分享
01-16 21:35
Java
记录第一次面试
记录第一次面试吧,百度的后端岗位。只有面试才知道自己会不会,我基础还是太差了,导致面试官觉得已经没有问的必要了,25分钟就给了我些个人的建议就结束了。前两天还在因为有百度的面试而沾沾自喜,然后也兴冲冲的去复习一下八股,但结果...😭平时看八股以为自己会了,结果面试没能好好的讲出来,就算能讲的也只是表面,怎么用的层面,底层还是毛也不会。唉,先沉淀吧,把数据结构,数据库重点的系统学一遍,有没有大佬推荐一些学习资料呀😭也要把计网和操作系统系统学一遍,要拿出备战高考的学习状态去学习这些八股,争取达到 假如有考试也要能考出80分的那种掌握程度才行,把底层吃透,一定要能口述出来。再沉淀两个月吧,两个月之后再战百度😤😤😤😠😠😠一起加油朋友们!
点赞
评论
收藏
分享
01-04 11:28
已编辑
广州华立学院 Java
26届简历求拷打
打算明年参加春招,求各位佬们指点下简历
程序员花海:
实习内容写的看起来太偏向于技术了 要结合业务 很多同学搞反了 其实业务才是最重要的 要避免这种单纯罗列技术栈的格式
简历被挂麻了,求建议
点赞
评论
收藏
分享
01-27 16:42
点点互动_产品管理工程师(准入职员工)
点点互动内推,点点互动内推码
点点互动面经一面(1)传统自我介绍(2)我看你大学里做了项目是吧,我们来聊聊吧(撕数据库、计算机网络)数据库(3)欸,你用的是 MySQL 吧,我想知道如果我要生成用户的唯一id,有什么方法啊?(4)那我如果有一个主键值是 10,然后删除了这一行,插入下一行数据的时候,主键值是多少呀?(5)你知道 MySQL 的索引的索引数据结构吗?(6)那你知道聚簇索引和非聚簇索引吗?计算机网络(7)你项目中前后端用什么协议通信的?「 HTTP 」为什么 说 HTTP 是无状态的呢?(8)那如何防止 Cookie 劫持?(9)那我如果使用 HTTPS 协议, Cookie 就不会被第三方拿到吗?(10)那你...
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
J人永远闲不下来于是去提前实习
2611
2
...
牛客吐槽大会 | 有槽不吐,留着过年?吐完领现金红包,痛快!
2434
3
...
大厂提前实习对AI开发的新感悟
2387
4
...
拥抱AI,程序员的最后出路
2377
5
...
mentor视角下的优秀实习生
2334
6
...
真正会被取代的,是你心里面的幻觉
2004
7
...
努力挣钱的意义具象化了
1788
8
...
马斯克最新炸裂采访,AI会带走一半工作岗位,普通人将何去何从?
1675
9
...
去独角兽做龙头还是去大厂做凤尾
1653
10
...
我身材再曼妙,也没有我的工资好笑!
1457
创作者周榜
更多
正在热议
更多
#
今年春招是金一银二嘛?
#
9648次浏览
123人参与
#
AI时代的工作 VS 传统时代的工作,有哪些不同?
#
9155次浏览
209人参与
#
抛开难度不谈,你最想去哪家公司?
#
5381次浏览
125人参与
#
为什么有人零实习也能进大厂?
#
5917次浏览
134人参与
#
1月小结:你过的开心吗?
#
2177次浏览
53人参与
#
赚钱的意义在这一刻具象化
#
4387次浏览
99人参与
#
没关系,至少我的__很曼妙
#
4059次浏览
66人参与
#
你的第一家实习公司是什么档次?
#
4807次浏览
77人参与
#
当你问AI“你会取代我的工作吗”,它说_?
#
4248次浏览
144人参与
#
你的landing期是如何度过的?
#
9370次浏览
179人参与
#
AI求职实录
#
4452次浏览
120人参与
#
除了Java,最推荐学什么技术?
#
6611次浏览
157人参与
#
牛客吐槽大会
#
3728次浏览
74人参与
#
机械人你知道哪些单休企业
#
83211次浏览
415人参与
#
你觉得什么岗位会被AI替代
#
37028次浏览
256人参与
#
秋招结束之后的日子
#
117133次浏览
1062人参与
#
机械人春招想让哪家公司来捞你?
#
379421次浏览
3141人参与
#
你在职场上见过哪些“水货”同事
#
30883次浏览
168人参与
#
哪些瞬间让你真切感受到了工作的乐趣
#
23297次浏览
101人参与
#
实习想申请秋招offer,能不能argue薪资
#
215501次浏览
1163人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务