C++常见面试题汇总

1.c和c++的区别?

   c是面向过程;c++是面向对象,面向对象的三大特征:封装、继承、怎么理解这三个呢?

  封装:相对隐藏一些细节重要的东西,让用户直接调用方法就可以;

   继承:继承就是可以利用已有类的方法;不用再重新写;节省开销;

多态:多态的实现重要条件:继承和虚函数;多态指的是:不同的子类实现相同的方法会产生不同的行为;但是没有虚函数的存在,调用子类的方法永远时调用父类的方法;

2.c++中指针和引用的区别?

   指针:指针是新开辟一段内存空间;它的值是可以改变;而且可以为空

  引用:是变量的别用,和原变量共用一个空间内存,而且必须初始化,并且初始化后不能改变;

3.结构体和类的区别,以及结构体和共同体的区别?

  c++中结构体默认的成员都是共有成员,而类中为定以属性类型,则默认为私有属性;

 结构体;可以使用多个变量类型,而共同体同一时间仅可以使用一种类型;

4.#define和const的区别?

  #define 没有类型定义,不占用内存,而且在预处理阶段进行宏替换;

  const:const需要定义类型,占用内存;

5.重载和重写。隐藏(重定义)三者的区别?

   重载:函数名相同但是传递的参数不同;

重写:子类对父类函数的重写;但是在虚函数下参能起作用;

重定义:子类对父类函数的重写但又不是虚函数,必须强制类型转换;

6.new、delete、malloc、free的关系?

  在C中只能只用malloc;C++中都可以使用;molloc只分配内存地址;而NEW不仅分配内存地址而且返回void型指针;

7.delete和delete【】用过?

   在标准数据类型的释放时;不会报错;内存已经帮忙管理;比如数组;

但是自定义数据类型,比如类,就会出现编译错误;

8.虚函数和纯虚函数?

虚函数:是为了子类覆写基类的函数的条件;

而纯虚数:基类只写声明,在子类写实现;

9.STL库有哪些容器?

vector;string;list;stack;queue队列;以及堆还有map\set很少有;

向量:可以进行索引读取数据,也可以在尾部头部进行插入删除数据;是连续的空间;

list:是非连续的空间;插入和删除时间复杂度较低;但是无法索引获取;

队列:先进先出;

10.描述一下const和static?

    const:定义的变量的值无法改变;

static:静态变量,是限制变量和函数的作用与;相当于局部全局变量,在模块内的,可以被其他函数调用,但是模块外不行;

12.堆 和 栈的区别?

   栈分配内存是系统自动分配内存;

堆:需要手动分配和释放;

13.#include<>和#include ""的区别?

《》是系统自带的库或者动态链接的库文件;引号的文件是创建的头文件或者cpp文件

14.定义和声明的区别?

声明不分配内存;定义分配内存;

15.C++的编译与运行的四个阶段?

预处理-编译-汇编-链接;分别做了什么?

预处理:包含头文件和宏替换;编译将头文件编译成二进制代码;汇编;将代码编译成二进制代码;链接:生成可执行文件;

16.map和set的使用在C++中?

map和set的底层实现主要通过红黑树来实现

17.指针和数组的区别?

18.针织数组和数组指针?

19.指针函数和函数指针?

你可能感兴趣的:(c++,java,jvm)