首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
贪睡的伊登又在摸鱼
衡水学院 C++
发布于北京
关注
已关注
取消关注
@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
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
昨天 13:01
南昌大学 全栈开发
题解 | 树网的核
题干解析 题设定义:针对一个无根无向有权树: 树中两点的距离为两点间路径的权值之和。 树的直径即为树中两点间最大的距离。 树中节点到路径的距离定义为点到路径上任意一点距离的最小值。 确定直径上一条长不超过s的核后偏心距(EEC)定义为图中任意节点到该路径(核)的距离的最大值。 题设给我们树的邻接数据以及s的大小,要求我们计算符合要求的核对应的EEC的最小值。 算法思路 寻找直径 首先我们需要找到树的直径,由于树中任意两节点有且仅有一条路径,使用弗洛伊德算法能够求出所有树中任意两点间的路径距离。 基于此我们找到最大的路径长度然后找出所有符合条件的路径节点便可以得到树的直径。 对直径路径进...
点赞
评论
收藏
分享
01-18 17:14
清华大学 Java
java简历里面第一个项目做什么比较好呢
给大家推荐一个难度还行的项目。项目简介:设计并实现一个高并发分布式秒杀系统,支持商品秒杀活动,具备高并发下的稳定性、可扩展性与数据一致性保障。核心功能:秒杀活动管理:创建活动、配置库存、设置限购规则秒杀下单:用户请求限流、排队、下单、支付订单处理:异步生成订单、库存扣减、超时自动取消秒杀结果查询:实时返回抢购结果与订单状态技术亮点:高并发限流:使用 Redis + Lua 脚本实现库存预扣与原子性操作,避免超卖消息队列异步下单:使用 RocketMQ/Kafka 进行异步订单入库与库存扣减,削峰填谷分布式锁与幂等:使用 Redisson 实现分布式锁,保证秒杀过程的幂等性与并发安全缓存与热点数...
简历第一个项目做什么
点赞
评论
收藏
分享
01-15 10:49
安徽新华学院 Python
cc简历
27寒假想找个实习,找不到咩
点赞
评论
收藏
分享
2025-12-02 13:21
北京邮电大学 Java
结束秋招
给了超出预期的包,还是非常满意的,比快手还要高出一截,终于结束秋招了啊虽然感觉后面的路依旧很难走但也要一步一步慢慢来了祝大家顺利也祝自己顺利
嵐jlu:
和兄弟一样,成为节孝子了
点赞
评论
收藏
分享
01-22 13:36
TP-LINK_软件算法工程师(准入职员工)
禾赛科技内推,禾赛科技内推码
禾赛科技 嵌入式开发(操作系统)面经⚜技术是真的过硬啊,秋招嵌入式被拷打的最狠之一。原定45分钟,拷打一个半小时,涉及知识面特别广,实际问的比这还要多,记忆有限。不过也无后续,但也没挂,估计在L3缓存里面吧⭕一面(9.18)1. 自我介绍2. 项目介绍3. 有没有测量IMU精度4. 串口有几根线,中断配置?5. IIC有几根线?讲一讲怎么通信?详细说一下读取寄存器的流程6. 说一说任务有哪几种状态?就绪和阻塞的任务放在哪里?放在同一个链表上面吗?7. 任务怎么进入阻塞态?(主动挂起,被强占,争取不到资源等)8. 说一说死锁?9. 怎么解决死锁问题?(获取不到锁的时候,释放本身的资源)10. 有...
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
备战春招,网申一键填写工具,发布了!!!
3.1W
2
...
实习产出如何包装?
7426
3
...
【官方活动】牛客新春计划:给陌生人的一封信
6552
4
...
27双非非科班4段实习从字节tt到腾讯wxg
5679
5
...
32岁程序员猝死,底薪3千要24h待岗
5606
6
...
27届实习时间线
4510
7
...
我爸对计算机行业的看法,是否准确?
4432
8
...
专科工作一年后的心里话
3982
9
...
第一次被同事气笑了
3194
10
...
坚持的爱好是规律饮食
2932
创作者周榜
更多
正在热议
更多
#
哪些公司开春招了?
#
9247次浏览
115人参与
#
运营人的第一份offer应该如何选
#
213910次浏览
1253人参与
#
上班以后,你还有哪些坚持的爱好?
#
6663次浏览
167人参与
#
华为工作体验
#
288775次浏览
1369人参与
#
你都在哪些场所面过试?
#
18470次浏览
218人参与
#
聊聊你的职场新体验
#
314308次浏览
1852人参与
#
找工作以来,你最看不惯__
#
12793次浏览
285人参与
#
AI coding的好用工具分享
#
16767次浏览
355人参与
#
工作压力大怎么缓解
#
137250次浏览
1228人参与
#
实习怎么做才有更好的产出
#
11128次浏览
204人参与
#
实习教会我的事
#
51425次浏览
399人参与
#
你最近因为什么迷茫?
#
32507次浏览
459人参与
#
实习生工资多少才算正常?
#
11857次浏览
189人参与
#
小米求职进展汇总
#
1006120次浏览
6509人参与
#
你给AI提过哪些离谱的需求?
#
5491次浏览
158人参与
#
你见过最离谱的招聘要求是什么?
#
253987次浏览
1727人参与
#
非技术2024笔面经
#
458814次浏览
4930人参与
#
领导做过最不靠谱的事
#
11875次浏览
203人参与
#
你想跟着什么样领导?
#
47495次浏览
235人参与
#
职场破防瞬间
#
359232次浏览
2835人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务