首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
03-05 13:21
蚌埠坦克学院 嵌入式软件开发
小鹏汽车- 嵌入式软件开发二面 面经
1. 简单介绍一下你自己,说说你为什么对车载系统开发感兴趣?参考答案:面试官您好,我是XXX。我主要的技术方向是嵌入式系统开发,熟悉C/C++编程和FreeRTOS,有两年多的项目经验。我对车载系统开发很感兴趣,主要有几个原因。首先,汽车智能化是未来的趋势,车载系统是智能汽车的核心,涉及自动驾驶、车联网、智能座舱等前沿技术,技术挑战大,很有吸引力。其次,车载系统对可靠性、实时性、安全性要求极高,这对技术能力是很好的锻炼。第三,我一直对汽车感兴趣,能把自己的技术应用到汽车领域,让技术真正改变生活,很有成就感。我做过基于STM32的智能车载终端项目,实现了GPS定位、4G通信、CAN总线数据采集等...
嵌入式面试八股文全集
点赞
评论
收藏
分享
03-06 13:44
蚌埠坦克学院 嵌入式软件开发
嵌入式校招策略技巧解读
嵌入式岗位在校招技术岗位中属于门槛较高但竞争结构相对清晰的一类岗位。很多同学误以为嵌入式只需要会单片机或者写 C 语言,但在企业招聘视角中,嵌入式工程师更看重的是计算机基础 + 硬件理解 + 系统能力。因此,在校招准备过程中,如果策略不正确,很容易陷入“学了很多却面试不过”的困境。本文从企业招聘视角出发,系统分析嵌入式校招的准备策略、能力结构以及面试技巧。一、嵌入式校招岗位的真实能力模型从招聘需求来看,大多数企业会把嵌入式工程师分为三个层次。第一类是单片机开发型岗位主要集中在传统制造业、消费电子、家电、仪器仪表等行业。技术要求通常包括:C语言MCU开发(STM32、GD32等)常见通信协议(U...
点赞
评论
收藏
分享
02-22 15:15
南京大学 Java
简历求拷打
目前0实习,想找中大厂的暑期实习和日常实习,目前进度hot100快刷完了,八股看了一多半(但很多感觉忘记了)。恳求大佬们给出一些建议和指导😸
牛客31544035...:
南大加大加粗,可以海投了
点赞
评论
收藏
分享
03-08 15:04
北京邮电大学 Java
求简历拷打
无实习经历,下周准备开始投暑期了,java后端方向,最后再看怎么修改一下
点赞
评论
收藏
分享
昨天 16:42
已编辑
门头沟学院 Java
鼠鼠再次被字节二面斩于马下了
一面1.介绍实习重点2.jvm运行时内存数据3.jvm垃圾回收判定,附带回收算法、垃圾回收器4.常见oom、栈溢出场景5.redis持久化方式、不同持久化方式优点,适用场景6.redis主从复制原理7.redis主从延迟问题解决8.算法题 hot100(1)删除倒数第k 个节点(2)岛屿数量9.反问二面1.批判使用本地缓存cache场景不合适2.实习难点、重点3.Jvm垃圾回收4.Redis io多路复用5.算法题 多个有序数组,找出topk6.10G 文件,每行代表一个数,内存100M,找出topk方案7.课题方向8.Ai 大模型有过相关的了解吗9.反问
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
1
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
百度后台开发实习一二三面面经
1.2W
2
...
AI-Agent 面试题汇总 - 大模型篇
1.2W
3
...
字节后端一面
8588
4
...
游戏客户端面经及经历分享
7985
5
...
字节跳动 后台开发 一面
5527
6
...
美团一面(面试官巨好)
5333
7
...
转转一面(二面挂)
5153
8
...
腾讯日常实习一面面经(2027暑期向)(有点非常规。。。)
4940
9
...
26年 如何快速入门大模型应用开发(个人认为的最快路线)
4845
10
...
我怕自己努力了这么久,最后还是毕业即失业
4572
创作者周榜
更多
正在热议
更多
#
你感受到金三银四了嘛?
#
26898次浏览
295人参与
#
25届网易互娱暑实进度
#
98929次浏览
768人参与
#
今天你投了哪些公司?
#
45505次浏览
1019人参与
#
米哈游笔试
#
536769次浏览
979人参与
#
春招 / 实习投递,你最焦虑的一件事
#
26194次浏览
611人参与
#
26届的你们有几段实习?
#
169575次浏览
1092人参与
#
Tplink求职进展汇总
#
206104次浏览
947人参与
#
虽然0面试,但今天___,夸夸自己
#
2278次浏览
68人参与
#
AI项目实战
#
2217次浏览
97人参与
#
如果给AI员工评绩效,我的答案是……
#
3760次浏览
94人参与
#
今年找实习到底有多难?
#
8160次浏览
92人参与
#
HR问:你期望的薪资是多少?如何回答
#
82631次浏览
711人参与
#
27届求职交流
#
40370次浏览
829人参与
#
大城市找工作会更容易吗
#
61877次浏览
389人参与
#
哪一刻你对工作祛魅了?
#
8684次浏览
98人参与
#
找工作,你都让AI帮你做什么?
#
2408次浏览
99人参与
#
26届求职交流
#
20784次浏览
522人参与
#
AI时代下,你的岗位要求有什么变化?
#
4326次浏览
96人参与
#
签约/解约注意事项
#
886606次浏览
4708人参与
#
刚工作的你,踩过哪些坑?
#
2382次浏览
49人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务