摘要:更新觉得经典的必要的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++重复率最高、最经典面试题/笔试题【持续更新】相关推荐

  1. Java编程经典10道_10道经典java编程笔试题

    [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少 //这是一个菲波拉契数列问题 publi ...

  2. 经典算法——堆排序笔试题

    阿里巴巴2016研发project师笔试选择题 1.将整数数组(7-6-3-5-4-1-2)依照堆排序的方式原地进行升序排列,请问在第一轮排序结束之后,数组的顺序是_____.

  3. Android开发经典笔试面试题汇总(持续更新中)

    1.我们都知道Handler是线程与Activity通信的桥梁,假设线程处理不当.你的机器就会变得非常慢,那么线程销毁的方法是:(A) A. onDestroy() B. onClear() C. o ...

  4. Hive经典最全笔试题系列

    现在的大数据开发,越来越趋向于编写SQL代替程序开发,比如MapReduce的Hive客户端,Kafka,Spark,Flink等都是支持SQL操作的.所以学好SQL是重中之重.是每个大数据程序开发工 ...

  5. Java SE 基础部分经典100道笔试题

    这100道题的范围主要是Java SE部分,正在学习Java SE的同学可以做一下,巩固一下学习的知识,也比较适合准备面试的同学复习使用.本题有90道选择题和10道填空题,选择题大部分是单选题,少数为 ...

  6. OpenCV OAK相机经典使用案例集锦(持续更新中)

    消息快播:OpenCV众筹了一款ROS2机器人rae,开源.功能强.上手简单.来瞅瞅~ 编辑:OAK中国 来源:oakchina.cn 版权说明:转载请注明出处 前言 Hello,大家好,这里是OAK ...

  7. 干货!几招教你降低论文重复率!!

    相信大家已经开始为毕业论文奋战了,甚至有的学校已经答辩结束了.今天,小编就说说史上最奇葩智能系统--知网论文检测系统,并且告诉大家躲避查重的几个大招. 各个学校对所谓论文原创度的标准要求不同,碰到要求 ...

  8. 0pp0r11如何更改语言_如何写才能避免重复率过高呢?

    对于很多大学生而言毕业论文的写作都是非常艰难的一关,很多同学都不知道该如何去写论文,也不了解论文查重是怎么弄的,所以很多写完论文后依然不能合格的,主要就是论文重复率不符合要求.毕业论文该如何写才能避免 ...

  9. 计算代码重复率_了解了知网大学生论文查重原理,重复率想高于6%都难!

    大家好,我是毕业之家小毕同学.后续会持续为大家更新毕业论文写作.修改.降重,记得关注哟. 每年的毕业季,相信大家面临论文查重都会头疼.想到这,作者真想拉最初设计查重系统的人聊一聊:就算长得帅,也不能这 ...

  10. mysql 重复率高字段 索引_MySQL性能优化(二)索引优化

    一.选择合适的列建立索引 1.在where从句,group by从句,order by从句,on从句中出现的列(select) 2.索引字段越小越好(表每页数据才会更多,IO效率会更高) 3.离散度大 ...

最新文章

  1. C#中Path类的常用方法
  2. 项目范围管理---定义范围
  3. (2)MATLAB 车牌图像配准
  4. centos7 开启防火墙端口 firewalld
  5. detected idea启动 web_IDEA使用Tomcat服务器出现乱码问题排查过程
  6. eventfd-aio-test.c
  7. canvas图形处理和进阶用法
  8. 蓝桥杯 ADV-167算法提高 快乐司机(贪心算法)
  9. Codeforces Round #412 (rated, Div. 2, base on VK Cup 2017 Round 3) A Is it rated?
  10. 前端开源项目周报0103
  11. Xcode添加include目录
  12. JDK环境变量设置以及检验是否配置成功
  13. 联想Y7000安装显卡驱动
  14. html打包的app软件报毒解析
  15. vue实现关键字查询列表数据
  16. NVMe系列专题之一:NVMe技术概述
  17. 2021年金属非金属矿山(地下矿山)主要负责人模拟考试题库及金属非金属矿山(地下矿山)主要负责人复审模拟考试
  18. 网站建设凸显效果的配色原则
  19. 漫威java_10年漫威,到底有多少角色。
  20. 基于树莓派4b的传感器数据可视化实现

热门文章

  1. 3月22 坐标系转换,旋转矩阵,仿射变换,例子,相机与世界,欧拉角与轴角公式,一个坐标系下面的轨迹
  2. Java中内存泄漏八种情况的总结
  3. 数据科学高级分析 (Data science advanced analytics)
  4. 【内外网映射】通过外网ip来访问虚拟机服务器【转载】
  5. ListView 复用学习
  6. POJ 1595 素数打表水题
  7. java RandomAccessFile类(随机访问文件)
  8. JavaScript的事件绑定及深入
  9. IIS建立两个站点服务,只有一个公网IP
  10. 无线AP与无线路由器都有些什么区别?(一)