【C/C++】C++重复率最高、最经典面试题/笔试题【持续更新】
摘要:更新觉得经典的必要的C++面试/笔试题目
这篇blog为简答类型题目,后续会更一篇经典编程题目blog
1、C和C++有什么不同?
参考答案】
从机制上:C是面向过程的(但C也可以编写面向对象的程序);C++是面向对象的,提供了类。但是,C++编写面向对象的程序比C容易。
从适用的方向:C适合要求代码体积小的,效率高的场合,如嵌入式;C++适合更上层的,复杂的; llinux核心大部分是C写的,因为它是系统软件,效率要求极高。
从名称上也可以看出,C++比C多了+,说明C++是C的超集;那为什么不叫C+而叫C++呢,是因为C++比C来说扩充的东西太多了,所以就在C后面放上两个+;于是就成了C++。
C语言是结构化编程语言,C++是面向对象编程语言。 C++侧重于对象而不是过程,侧重于类的设计而不是逻辑的设计。
2、“引用”与指针的区别是什么?
【参考答案】
指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。程序中使用指针,程序的可读性差;
而引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作。
1) 引用必须被初始化,指针不必。
2) 引用初始化以后不能被改变,指针可以改变所指的对象。
3) 不存在指向空值的引用,但是存在指向空值的指针
3、VC 中,编译工具条内的 Debug 与 Release 选项是什么含义?
【参考答案】
Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。
Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。
Debug 带有大量的调试代码,运行时需要相应的运行库,发布模式程序紧凑不含有调试代码和信息,直接可以运行(如果不需要运行库)
4、有了 malloc/free 为什么还要 new/delete ?
【参考答案】
malloc 与 free 是 C++/C 语言的标准库函数,new/delete 是 C++的运算符。它们都可用于申请动态内存和释放内存。
对于非内部数据类型的对象而言,光用 maloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。
由于malloc/free 是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。
因此 C++语言需要一个能完成动态内存分配和初始化工作的运算符 new,以及一个能完成清理与释放内存工作的运算符 delete。
5、内存的分配方式有几种?
【参考答案】
一、从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量。
二、在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。
三、从堆上分配,亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete释放内存。动态内存的生存期由我们决定,使用非常灵活,但问题也最多。
7、float a,b,c , 问等式 (a+b)+c==(b+a)+c 和 (a+b)+c==(a+c)+b 能否成立?
【参考答案】
两者都不行。在比较float或double时,不能简单地比较。由于计算误差,相等的概率很低。应判断两数之差是否落在区间(-e,e)内。
这个e应比浮点数的精度大一个数量级。
8、全局变量和局部变量有什么区别?是怎么实现的?操作系统和编译器是怎么知道的?
【参考答案】
生命周期不同:全局变量随主程序创建和创建,随主程序销毁而销毁;
局部变量在局部函数内部,甚至局部循环体等内部存在,退出就不存在; 内存中分配在全局数据区。
操作系统和编译器通过内存分配的位置来知道的,全局变量分配在全局数据段并且在程序开始运行的时候被加载。局部变量则分配在堆栈里面 。
9、Heap(堆) 与 Stack(栈) 的差别
【参考答案】
Heap是堆,stack是栈。 Stack的空间由操作系统自动分配/释放,Heap上的空间手动分配/释放。
Stack空间有限,Heap是很大的自由存储区 C中的malloc函数分配的内存空间即在堆上,C++中对应的是new操作符。
程序在编译期对变量和函数分配内存都在栈上进行,且程序运行过程中函数调用时参数的传递也在栈上进行
为什么需要使用堆,使用堆空间的原因?
【参考答案】直到运行时才知道一个对象需要多少内存空间;不知道对象的生存期到底有多长。
10、const关键字?有哪些作用?
【参考答案】
const关键字至少有下列n个作用:
(1)欲阻止一个变量被改变,可以使用const关键字。在定义该const变量时,通常需要对它进行初始化,因为以后就没有机会再去改变它了;
(2)对指针来说,可以指定指针本身为const,也可以指定指针所指的数据为const,或二者同时指定为const;
(3)在一个函数声明中,const可以修饰形参,表明它是一个输入参数,在函数内部不能改变其值;
(4)对于类的成员函数,若指定其为const类型,则表明其是一个常函数,不能修改类的成员变量;
(5)对于类的成员函数,有时候必须指定其返回值为const类型,以使得其返回值不为“左值”。
11、谈谈你是怎么认识 C++ 中的模板的?
【参考答案】
模板使程序员能够快速建立具有类型安全的类库集合和函数集合,它的实现,方便了大规模的软件开发。(结合stl更好)
【参考答案】
(1)可用来创建动态增长和减小的数据结构 (2)它是类型无关的,因此具有很高的可复用性。
(3)它在编译时而不是运行时检查数据类型,保证了类型安全(4)它是平台无关的,可移植性(5)可用于基本数据类型
12、在 C++的一个类中声明一个 static 成员变量有没有用?
【参考答案】
在C++类的成员变量被声明为 static(称为静态成员变量),意味着它为该类的所有实例所共享,也就是说当某个类的实例修改了该静态成员变量,
也就是说不管创建多少对象,static修饰的变量只占有一块内存。其修改值为该类的其它所有实例所见;而类的静态成员函数也只能访问静态成员(变量或函数)。static是加了访问控制的全局变量,不被继承。
13、基类的析构函数不是虚函数,会带来什么问题?
【参考答案】
派生类的析构函数用不上,会造成资源的泄漏。
14、一个栈的入栈序列是 A,B,C,D,E,则栈的不可能的输出序列是?
A、EDCBA;B、DECBA; C、DCEAB;D、ABCDE
【标准答案】C
A:a,b,c,d,e进,之后依次出栈;B:a,b,c,d,进,d出,e进,e,c,b,a出
D:a进a出,b进b出……e进e出;C:的话dce都好办,之后的ab做不到
【持续更新......】
【C/C++】C++重复率最高、最经典面试题/笔试题【持续更新】相关推荐
- Java编程经典10道_10道经典java编程笔试题
[程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少 //这是一个菲波拉契数列问题 publi ...
- 经典算法——堆排序笔试题
阿里巴巴2016研发project师笔试选择题 1.将整数数组(7-6-3-5-4-1-2)依照堆排序的方式原地进行升序排列,请问在第一轮排序结束之后,数组的顺序是_____.
- Android开发经典笔试面试题汇总(持续更新中)
1.我们都知道Handler是线程与Activity通信的桥梁,假设线程处理不当.你的机器就会变得非常慢,那么线程销毁的方法是:(A) A. onDestroy() B. onClear() C. o ...
- Hive经典最全笔试题系列
现在的大数据开发,越来越趋向于编写SQL代替程序开发,比如MapReduce的Hive客户端,Kafka,Spark,Flink等都是支持SQL操作的.所以学好SQL是重中之重.是每个大数据程序开发工 ...
- Java SE 基础部分经典100道笔试题
这100道题的范围主要是Java SE部分,正在学习Java SE的同学可以做一下,巩固一下学习的知识,也比较适合准备面试的同学复习使用.本题有90道选择题和10道填空题,选择题大部分是单选题,少数为 ...
- OpenCV OAK相机经典使用案例集锦(持续更新中)
消息快播:OpenCV众筹了一款ROS2机器人rae,开源.功能强.上手简单.来瞅瞅~ 编辑:OAK中国 来源:oakchina.cn 版权说明:转载请注明出处 前言 Hello,大家好,这里是OAK ...
- 干货!几招教你降低论文重复率!!
相信大家已经开始为毕业论文奋战了,甚至有的学校已经答辩结束了.今天,小编就说说史上最奇葩智能系统--知网论文检测系统,并且告诉大家躲避查重的几个大招. 各个学校对所谓论文原创度的标准要求不同,碰到要求 ...
- 0pp0r11如何更改语言_如何写才能避免重复率过高呢?
对于很多大学生而言毕业论文的写作都是非常艰难的一关,很多同学都不知道该如何去写论文,也不了解论文查重是怎么弄的,所以很多写完论文后依然不能合格的,主要就是论文重复率不符合要求.毕业论文该如何写才能避免 ...
- 计算代码重复率_了解了知网大学生论文查重原理,重复率想高于6%都难!
大家好,我是毕业之家小毕同学.后续会持续为大家更新毕业论文写作.修改.降重,记得关注哟. 每年的毕业季,相信大家面临论文查重都会头疼.想到这,作者真想拉最初设计查重系统的人聊一聊:就算长得帅,也不能这 ...
- mysql 重复率高字段 索引_MySQL性能优化(二)索引优化
一.选择合适的列建立索引 1.在where从句,group by从句,order by从句,on从句中出现的列(select) 2.索引字段越小越好(表每页数据才会更多,IO效率会更高) 3.离散度大 ...
最新文章
- C#中Path类的常用方法
- 项目范围管理---定义范围
- (2)MATLAB 车牌图像配准
- centos7 开启防火墙端口 firewalld
- detected idea启动 web_IDEA使用Tomcat服务器出现乱码问题排查过程
- eventfd-aio-test.c
- canvas图形处理和进阶用法
- 蓝桥杯 ADV-167算法提高 快乐司机(贪心算法)
- Codeforces Round #412 (rated, Div. 2, base on VK Cup 2017 Round 3) A	 Is it rated?
- 前端开源项目周报0103
- Xcode添加include目录
- JDK环境变量设置以及检验是否配置成功
- 联想Y7000安装显卡驱动
- html打包的app软件报毒解析
- vue实现关键字查询列表数据
- NVMe系列专题之一:NVMe技术概述
- 2021年金属非金属矿山(地下矿山)主要负责人模拟考试题库及金属非金属矿山(地下矿山)主要负责人复审模拟考试
- 网站建设凸显效果的配色原则
- 漫威java_10年漫威,到底有多少角色。
- 基于树莓派4b的传感器数据可视化实现