首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
卸弟卸弟我要迪士尼
中国地质大学(武汉) C++
关注
已关注
取消关注
mark
@做人要有梦想dji:
总结嵌入式软开常问C/C++问题-1
1、指针和引用的区别? (1)指针是一个变量,存储的是变量的地址,引用是变量的别名,内部实现是只读指针; (2)指针可以为空,引用不能为空,定义时必须初始化; (3)指针在初始化之后可以改变指向,引用在初始化之后不能改变; (4)指针可以有多级,引用只有一级; (5)当把指针作为参数进行传递时,也是将实参的一个拷贝传递给形参,二者指向的地址相同,但不是同一个变量,在函数中改变该变量的指向不影响实参,而引用是可以的; (6)指针是具体变量,需要占用存储空间,引用的本质是一个指针,会占据4个字节的内存; 2、堆和栈的区别 (1)堆和栈在空间分配方面的区别: 堆一般由程序员分配释放,如果程序员不释放,程序结束后可能有操作系统回收,分配方式类似于链表。栈一般由操作系统自动分配释放,存放函数的参数值和局部变量的值等,操作方式类似于数据结构中的栈。 (2)堆和栈在缓存方式方面的区别: 堆存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定,所以调用这些对象的速度比较慢。栈使用一级缓存,通常是被调用时处于存储空间中,调用完毕后立即释放。 (3)堆和栈在数据结构方面的区别: 堆一般被看做一棵树,比如堆排序。栈是一种先进后出的数据结构。 3、关键字static的作用是什么? 在C语言中static用来修饰局部静态变量和外部静态变量和函数,而C++语言还可以用来定义类的成员变量和函数,即静态成员和静态成员函数,C++的静态成员可以在多个对象实例之间进行通信,传递信息。 (1)定义全局静态变量和局部静态变量:在变量前面加上static关键字。初始化的静态变量会在.data段分配内存,未初始化的静态变量会在.bss段分配内存。直到程序结束,静态变量始终会维持前值。只不过全局静态变量和局部静态变量的作用域不一样; (2)定义静态函数:在函数返回类型前加上static关键字,函数被定义为静态函数。静态函数只能在本源文件中使用; (3)在变量类型前加上static关键字,变量即被定义为静态变量。静态变量只能在本源文件中使用,比如: static int a; static void func(); (4)在C++中,static关键字可以用于定义类中的静态成员变量:使用静态数据成员,它既可以被当成全局变量那样去存储,但又被隐藏在类的内部。类中的static静态数据成员拥有一块单独的存储区,而不管创建了多少个该类的对象。所有这些对象的静态数据成员都共享这一块静态存储空间。 (5)在C++中,static关键字可以用于定义类中的静态成员函数:与静态成员变量类似,类里面同样可以定义静态成员函数。只需要在函数前加上关键字static就可以。如静态成员函数也是类的一部分,而不是对象的一部分。所有这些对象的静态数据成员都共享这一块静态存储空间。 附加: 面向对象的static关键字 静态数据成员有以下特点: (1)静态数据成员要在类外定义,此时不能再带上static的关键字。 (2)静态数据成员和普通数据成员一样遵从public,protected,private访问规则; (3)private,protected 的static成员虽然可以在类外初始化,但是不能在类外被访问。 (4)静态成员为所有类对象所共享 (5)类的静态数据成员有两种访问形式: <类对象名>.<静态数据成员名> 或 <类类型名>::<静态数据成员名> 如果静态数据成员的访问权限为public时,可在程序中按上述格式来引用静态数据成员静态成员函数,关于静态成员函数,可以总结为以下几点: 出现在类体外的函数定义不能指定关键字static; (1) 静态成员之间可以相互访问,包括静态成员函数访问静态数据成员和访问静态成员函数; (2) 非静态成员函数可以任意地访问静态成员函数和静态数据成员; (3) 静态成员函数不能访问非静态成员函数和非静态数据成员; (4) 由于没有this指针的额外开销,因此静态成员函数与类的全局函数相比速度上会有少许的增长; (5) 调用静态成员函数,可以用成员访问操作符(.)和(->)为一个类的对象或指向类对象的指针调用静态成员函数,也可以直接使用如下格式: <类名>::<静态成员函数名>(参数)调用类的静态成员函数 4、线程和进程的联系和区别? (1)进程包含线程,一个进程里可以有一个或多个线程; (2)进程和线程都是为了处理并发编程这样的场景,但是进程创建和释放的时候效率低,相比之下,线程更轻量,创建和释放效率更好; (3)操作系统创建进程是给进程分配资源,进程是操作分配资源的基本单位,操作系统创建的线程是在CPU上调度执行,线程是操作系统调度执行的基本单位; (4)进程具有独立性,每个进程有各自的虚拟地址空间,一个进程挂了不会影响其他进程,同一个进程的多个线程共用同一个内存空间,一个线程挂了很可能会影响其他的线程,甚至导致整个进程崩溃。 5、C和C++的区别是什么? C是结构化语言,其重点是算法和数据结构,C++在C的基础上增加类。C程序考虑的是如何通过一个过程,对输入进行运算处理得到输出,而对于C++而言,首先考虑的是如何构造一个对象模型,使得该模型与之对应的问题域契合,就可以通过获取对象的状态信息得到输出或实现过程控制。 6、const的用途是什么? const用来定义只读变量,也就是常量。 const修饰函数的参数和函数的返回值。 const修饰函数的定义体,这里的函数是类的成员函数,被const修饰的成员函数代表不修改成员变量的值。 7、数组和链表有什么区别? (1)在存储形式方面,数组是一块连续的空间,声明时就要确定长度;链表是一块可以不连续的动态空间,长度可以改变,每个结点都要保存相邻结点的指针。 (2)在数据查找方面,数组的线性查找速度快,查找操作直接使用偏移地址;链表需要按照顺序检索结点,效率较低。 (3)在数据的插入或删除方面,链表可以快速插入和删除结点,但数组需要大量的数据移动。 (4)在越界问题方面,链表不存在越界问题,数组存在越界问题。 (5)数组的优点:随机访问性强,查找速度快;数组的缺点:插入和删除效率低,可能浪费内存,内存空间要求高,必须有足够的连续空间,数组大小固定,不能动态拓展。链表的优点:插入删除速度快,内存利用率高,不会浪费内存,大小没有固定,拓展很灵活;链表的缺点:不能随机查找,必须从第一个开始遍历,查找效率低。 8、面向对象有什么特征? 面向对象具有封装性、继承和多态三大特征: (1)封装性:将客观事物抽象成类,每个类对自身的数据和方法实行protection(private, protected, public)。 (2)继承性:广义的继承有三种实现形式:实现继承(使用基类的属性和方法而无需额外编码的能力)、可视继承(子窗体使用父窗体的外观和实现代码)、接口继承(仅使用属性和方法,实现滞后到子类实现)。 (3)多态性:是将父类对象设置成为和一个或更多它的子对象相等的技术。用子类对象给父类对象赋值之后,父类对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。 9、在C++中,重载和重写的区别是什么? 重载指的是同一个访问区被声明的几个具有不同参数列(参数的类型,个数,顺序不同)的同名函数,根据参数列表确定调用哪个函数,重载不关心函数的返回类型。 重写指的是派生类中存在重新定义的函数,它的函数名,参数列表,返回值类型,所有都必须和基类中被重写的参数一致。只有函数体不同,派生类调用时会调用派生类的重写函数,不会调用被重写函数。重写的基类中被重写的挂不是关于不需要有virtual修饰。 10、解释一下封装、继承和多态? 封装是实现面向对象程序设计的第一步,将数据或函数等集合在一个个的单元(类)中。封装的意义就是保护或防止数据被无意破坏。 继承主要用来实现重用代码,节省开发时间,子类可以继承父类。 多态是指同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向基类的指针来调用实现派生类中的方法。 11、常用的排序算法的优缺点和特点是什么? 常用的排序算法有选择、冒泡、快速、希尔、归并、堆排等。 (1)选择排序法的优点是移动数据的次数少,缺点是比较数据的次数多。 (2)冒泡排序法的优点是数据稳定,误差小,缺点是速度慢。 (3)快速排序是冒泡排序的一种改进,其优点是速度快,数据移动少,缺点是稳定性不足。 (4)希尔排序先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录基本有序时,再对全体记录进行依次直接插入排序。其优点是速度快,数据移动少,缺点是不稳定。 (5)归并算法是一种分治法排序,该算法比较稳定,一般用于对总体无序但局部有序的数列。其优点是效率较高,稳定,缺点是比较占用内存。 (6)堆排序在直接选择排序的基础上利用了比较结果。因此它的优点是效率提高很大,缺点是对数据的有序性不敏感。 12、new和malloc的区别? (1)new是C++中的操作符,malloc是C中的一个函数。 (2)new不止分配内存,而且会调用类的构造函数,同理delete调用类的析构函数,而malloc只分配内存,不会进行初始化类成员的工作,同样free也不会调用析构函数。 (3)内存泄露对于malloc或者new都可以检查出来,区别在于new可以指明是文件的哪一行,而malloc没有这些信息。 (4)new可以认为是malloc加构造函数的执行,new出来的指针是直接带类型信息的,而malloc返回的值都是void指针。 13、有没有用过STL库?常见的STL容器有哪些?算法用过哪几个? STL包括两部分内容:容器和算法。容器,即存放数据的地方。比如array等。在STL中,容器分为两类:序列式容器和关联式容器。 序列式容器,其中的元素不一定有序,但都可以被排序。如:vector、list、deque、stack、queue、heap、priority_queue、slist;关联式容器,内部结构基本上是一颗平衡二叉树。所谓关联,指每个元素都有一个键值和一个实值,元素按照一定的规则存放。如:RB-tree、set、map、multiset、multimap、hashtable、hash_set、hash_map、hash_multiset、hash_multimap。 下面各选取一个作为说明: vector:它是一个动态分配存储空间的容器。区别于C++中的array,array分配的空间是静态的,分配之后不能被改变,而vector会自动重分配(扩展)空间。 set:其内部元素会根据元素的键值自动被排序。区别于map,它的键值就是实值,而map可以同时拥有不同的键值和实值。 算法,如排序,复制等以及容器特定的算法。 迭代器是STL的精髓,将其描述为:迭代器提供了一种方法,使它能够
点赞 21
评论 0
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
04-25 16:46
门头沟学院 Java
微步在线Java一面
StringBuilder和StringBuffer的区别是什么?遇到过哪些线程安全问题?ArrayList和LinkedList的区别?讲一下链表的数据结构,LinkedList是双向链表还是单向链表?讲一下HashMap?怎么根据hash值定位到数组?一定要重写hashCode和equals吗?讲一下怎么实现单例模式?用过哪些Java命令?遇到过实际问题吗?怎么在Linux上查看Java进程占用端口?怎么在Linux上查看Java进程打开了哪些文件?怎么在Linux上查看Java进程内存占用率?讲一下输入url到返回网页的过程?DNS使用的端口是哪个?DNS怎么去找到根域名服务器的?常见的...
查看19道真题和解析
点赞
评论
收藏
分享
04-23 10:18
华为_软件工程师
OD招聘周报 4.23
失踪人口回归1.机考未来有计划禁止使用本地IDE(目前仍可使用)但是机考模式已经全部采用核心编码模式,同力扣的模式2.老系统本周已完全停止新增简历和流转3.本周起节假日与机考日冲突时机考仍正常进行
点赞
评论
收藏
分享
04-03 09:32
已编辑
华南农业大学 golang
🐧
昨天面试官打电话来说有事情,晚点发个邮件调整一下时间,结果今天显示流程结束了,要发一封邮件问问吗
我的代码出BUG了:
"晚点发个邮件调整一下时间",你收到新的邮件没,如果没有收到新的邮件,那就需要进入面试链接留痕,否则系统会判定你迟到
点赞
评论
收藏
分享
03-18 01:22
门头沟学院 全栈开发
春招还有机会嘛
我现在这个水平大概能拿到多少薪资的offer😂
肖先生~:
先别说工资,现在有个工作就不错了
点赞
评论
收藏
分享
04-27 14:55
门头沟学院 Java
小红书后端开发一面
1. 说说JVM的内存区域划分? 2. 常见的GC算法和收集器有哪些? 3. 讲讲CAS的原理? 4. Redis的持久化方式及区别是什么? 5. MySQL索引的底层原理是什么? 6. 什么是RAG技术?流程是什么? 7. 简述Spring AI的基本使用流程? 8. 项目A中,节点健康状态如何实时感知? 9. 项目A中,签名认证的安全性如何提升? 10. API网关项目中,策略模式重构优化了什么? 11. 项目B中,三种缓存结构分别是什么? 12. 项目B中,如何解决Redis大key问题? 13. 项目B中,如何解决数据倾斜问题? 14. 项目B中,首页耗时如何优化到60ms? 15. ...
查看19道真题和解析
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
1
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
Agent面试-RAG篇
1.2W
2
...
毕业季有感
9921
3
...
字节Agent面试问我:“你了解哪些 Agent 框架?”
5487
4
...
暑期结束,终于OC了
3536
5
...
25的后端学长已经去跑网约车了。。
3290
6
...
27找实习,悲喜报
3008
7
...
学校食堂大舞台,毕业你就来
2922
8
...
wxg timeline
2822
9
...
拼多多暑期服务端tl
2664
10
...
大一伪装大三拿到offer
2140
创作者周榜
更多
正在热议
更多
#
这个offer值得去吗?
#
4324次浏览
73人参与
#
面试官拷打AI项目都会问什么?
#
3348次浏览
159人参与
#
联宝杯大学生创新大赛,你的技术值得产业级答案
#
43801次浏览
501人参与
#
如果春招能重来,我会___
#
7182次浏览
82人参与
#
想做Agent可以做哪些岗位?
#
3685次浏览
51人参与
#
你会因为行情,降低找工作标准吗?
#
14495次浏览
158人参与
#
你觉得最好用的AI编程工具是_
#
1520次浏览
36人参与
#
除了线上,还能去哪些地方投简历
#
4617次浏览
53人参与
#
机械制造公司求职体验
#
141576次浏览
386人参与
#
你实习是赚钱了还是亏钱了?
#
120370次浏览
668人参与
#
你和你的mentor相处模式是__
#
7578次浏览
65人参与
#
实习第一天,你在干什么
#
5055次浏览
42人参与
#
如何排解工作中的焦虑
#
331170次浏览
2839人参与
#
你的实习什么时候入职
#
377435次浏览
2399人参与
#
实习想申请秋招offer,能不能argue薪资
#
256863次浏览
1338人参与
#
mt对你说过最有启发的一句话
#
115379次浏览
875人参与
#
0经验如何找实习?
#
91909次浏览
952人参与
#
你的mentor是什么样的人?
#
61817次浏览
798人参与
#
你最满意的offer薪资是哪家公司?
#
81562次浏览
385人参与
#
0offer互助地
#
779290次浏览
4801人参与
#
机械人晒出你的简历
#
191772次浏览
1107人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务