基础语法

1、 在main执行之前和之后执行的代码可能是什么?
2、结构体内存对齐问题?
3、指针和引用的区别
4、在传递函数参数时,什么时候该使用指针,什么时候该使用引用呢?
5、堆和栈的区别
6、你觉得堆快一点还是栈快一点?
7、区别以下指针类型?
8、new / delete 与 malloc / free的异同
9、new和delete是如何实现的?
10、malloc和new的区别?
11、既然有了malloc/free,C++中为什么还需要new/delete呢?直接用malloc/free不好吗?
12、被free回收的内存是立即返还给操作系统吗?
13、宏定义和函数有何区别?
14、宏定义和typedef区别?
15、变量声明和定义区别?
16、strlen和sizeof区别?
16.2、(补充题)一个指针占多少字节?
17、常量指针和指针常量区别?
18、a和&a有什么区别?
19、C++和Python的区别
20、C++和C语言的区别
21、C++与Java的区别
22、C++中struct和class的区别
23、define宏定义和const的区别
24、C++中const和static的作用
25、C++的顶层const和底层const
26、数组名和指针(这里为指向数组首元素的指针)区别?
27、final和override关键字
28、拷贝初始化和直接初始化
29、初始化和赋值的区别
30、extern”C”的用法
31、野指针和悬空指针
32、C和C++的类型安全
33、C++中的重载、重写(覆盖)和隐藏的区别
34、C++有哪几种的构造函数
35、浅拷贝和深拷贝的区别
36、内联函数和宏定义的区别
37、public,protected和private访问和继承权限/public/protected/private的区别?
38、如何用代码判断大小端存储?
39、volatile、mutable和explicit关键字的用法
40、什么情况下会调用拷贝构造函数
41、C++中有几种类型的new
42、C++的异常处理的方法
43、static的用法和作用?
44、指针和const的用法
45、形参与实参的区别?
46、值传递、指针传递、引用传递的区别和效率
47、静态变量什么时候初始化
48、const关键字的作用有哪些?
49、什么是类的继承?
50、从汇编层去解释一下引用
51、深拷贝与浅拷可以描述一下吗?
52、new和malloc的区别
53、delete p、delete [] p、allocator都有什么作用?
54、new和delete的实现原理, delete是如何知道释放内存的大小的?
55、malloc申请的存储空间能用delete释放吗?
56、malloc与free的实现原理?
57、malloc、realloc、calloc的区别
58、类成员初始化方式?构造函数的执行顺序 ?为什么用成员初始化列表会快一些?
59、有哪些情况必须用到成员列表初始化?作用是什么?
60、C++中新增了string,它与C语言中的 char *有什么区别吗?它是如何实现的?
61、什么是内存泄露,如何检测与避免
62、对象复用的了解,零拷贝的了解
63、介绍面向对象的三大特性,并且举例说明
64、成员初始化列表的概念,为什么用它会快一些?
65、C++的四种强制转换reinterpretcast/constcast/staticcast /dynamiccast
66、C++函数调用的压栈过程
66.1、以例子进行讲解
66.2、文字化表述
67、写C++代码时有一类错误是 coredump ,很常见,你遇到过吗?怎么调试这个错误?
68、说说移动构造函数
69、C++中将临时变量作为返回值时的处理过程
70、如何获得结构成员相对于结构开头的字节偏移量
71、静态类型和动态类型,静态绑定和动态绑定的介绍
72、引用是否能实现动态绑定,为什么可以实现?
73、全局变量和局部变量有什么区别?
74、指针加减计算要注意什么?
75、 怎样判断两个浮点数是否相等?
76、方法调用的原理(栈,汇编)
77、C++中的指针参数传递和引用参数传递有什么区别?底层原理你知道吗?
78、类如何实现只能静态分配和只能动态分配
79、如果想将某个类用作基类,为什么该类必须定义而非声明?
80、 继承机制中对象之间如何转换?指针和引用之间如何转换?
81、知道C++中的组合吗?它与继承相比有什么优缺点吗?
82、函数指针?
83、说一说你理解的内存对齐以及原因
84、 结构体变量比较是否相等
85、 函数调用过程栈的变化,返回值和参数变量哪个先入栈?
86、define、const、typedef、inline的使用方法?他们之间有什么区别?
87、你知道printf函数的实现原理是什么吗?
88、为什么模板类一般都是放在一个h文件中
89、C++中类成员的访问权限和继承权限问题
90、cout和printf有什么区别?
91、你知道重载运算符吗?
92、当程序中有函数重载时,函数的匹配原则和顺序是什么?
93、定义和声明的区别
94、全局变量和static变量的区别
95、 静态成员与普通成员的区别是什么?
96、说一下你理解的 ifdef endif代表着什么?
97、隐式转换,如何消除隐式转换?
98、C++如何处理多个异常的?
99、如何在不使用额外空间的情况下,交换两个数?你有几种方法
100、你知道strcpy和memcpy的区别是什么吗?
101、程序在执行int main(int argc, char *argv[])时的内存结构,你了解吗?
102、volatile关键字的作用?
103、如果有一个空类,它会默认添加哪些函数?
104、C++中标准库是什么?
105、你知道const char* 与string之间的关系是什么吗?
106、你什么情况用指针当参数,什么时候用引用,为什么?
107、你知道静态绑定和动态绑定吗?讲讲?
108、如何设计一个计算仅单个子类的对象个数?
109、怎么快速定位错误出现的地方?
110、成员初始化列表会在什么时候用到?它的调用过程是什么?
111、在进行函数参数以及返回值传递时,可以使用引用或者值传递,其中使用引用的好处有哪些?
112、说一说strcpy、sprintf与memcpy这三个函数的不同之处
113、将引用作为函数参数有哪些好处?
114、你知道数组和指针的区别吗?
115、如何阻止一个类被实例化?有哪些方法?
116、 如何禁止程序自动生成拷贝构造函数?
117、你知道Debug和Release的区别是什么吗?
118、main函数的返回值有什么值得考究之处吗?
119、模板会写吗?写一个比较大小的模板函数
120、strcpy函数和strncpy函数的区别?哪个函数更安全?
121、static_cast比C语言中的转换强在哪里?
122、成员函数里memset(this,0,sizeof(*this))会发生什么
123、你知道回调函数吗?它的作用?
124、什么是一致性哈希?
125、C++从代码到可执行程序经历了什么?
126、为什么友元函数必须在类内部声明?
127、友元函数和友元类的基本情况
128、用C语言实现C++的继承
129、动态编译与静态编译
130、hello.c 程序的编译过程
131、介绍一下几种典型的锁
132、delete和delete[]区别?
133、为什么不能把所有的函数写成内联函数?
134、为什么C++没有垃圾回收机制?这点跟Java不太一样。

内存管理

1、类的对象存储空间?
2、简要说明C++的内存分区
3、什么是内存池,如何实现
4、可以说一下你了解的C++得内存管理吗?
5、C++中类的数据成员和成员函数内存分布情况
6、关于this指针你知道什么?全说出来
7、几个this指针的易混问题
A. this指针是什么时候创建的?
B. this指针存放在何处?堆、栈、全局变量,还是其他?
C. this指针是如何传递类中的函数的?绑定?还是在函数参数的首参数就是this指针?那么,this指针又是如何找到“类实例后函数的”?
D. this指针是如何访问类中的变量的?
E.我们只有获得一个对象后,才能通过对象使用this指针。如果我们知道一个对象this指针的位置,可以直接使用吗?
F.每个类编译后,是否创建一个类中函数表保存函数指针,以便用来调用函数?
8、 内存泄漏的后果?如何监测?解决方法?
9、在成员函数中调用delete this会出现什么问题?对象还可以使用吗?
10、为什么是不可预期的问题?
11、 如果在类的析构函数中调用delete this,会发生什么?
12、你知道空类的大小是多少吗?
13、请说一下以下几种情况下,下面几个类的大小各是多少?
14、this指针调用成员变量时,堆栈会发生什么变化?

C++11

1、C++ 11有哪些新特性?
2、auto、decltype和decltype(auto)的用法
3、C++中NULL和nullptr区别
4、智能指针的原理、常用的智能指针及实现
5、说一说你了解的关于lambda函数的全部知识
6、智能指针的作用
7、说说你了解的auto_ptr作用
8、智能指针的循环引用
9、手写实现智能指针类需要实现哪些函数?
10、智能指针出现循环引用怎么解决?

STL

1、什么是STL?
2、解释一下什么是trivial destructor
3、使用智能指针管理内存资源,RAII是怎么回事?
4、迭代器:++it、it++哪个好,为什么
5、说一下C++左值引用和右值引用
6、STL中hashtable的实现?
7、简单说一下traits技法
8、STL的两级空间配置器
一级配置器
二级配置器
一级分配器
二级分配器
9、 vector与list的区别与应用?怎么找某vector或者list的倒数第二个元素
10、STL 中vector删除其中的元素,迭代器如何变化?为什么是两倍扩容?释放空间?
11、Vector如何释放空间?
12、容器内部删除一个元素
13、STL迭代器如何实现
14、map、set是怎么实现的,红黑树是怎么能够同时实现这两种容器? 为什么使用红黑树?
15、如何在共享内存上使用STL标准库?
16、map插入方式有哪几种?
17、STL中unorderedmap(hashmap)和map的区别,hash_map如何解决冲突以及扩容
18、vector越界访问下标,map越界访问下标?vector删除元素时会不会释放空间?
19、map中[]与find的区别?
20、 STL中list与queue之间的区别
21、STL中的allocator、deallocator
22、STL中hash_map扩容发生什么?
23、常见容器性质总结?
24、vector的增加删除都是怎么做的?为什么是1.5或者是2倍?
25、说一下STL每种容器对应的迭代器
26、STL中迭代器失效的情况有哪些?
27、STL中vector的实现
28、STL中slist的实现
29、STL中list的实现
30、STL中的deque的实现
31、STL中stack和queue的实现
32、STL中的heap的实现
33、STL中的priority_queue的实现
34、STL中set的实现?
35、STL中map的实现
36、set和map的区别,multimap和multiset的区别
37、STL中unordered_map和map的区别和应用场景
38、hashtable中解决冲突有哪些方法?

其余问题

1、C++的多态如何实现
2、为什么析构函数一般写成虚函数
3、构造函数能否声明为虚函数或者纯虚函数,析构函数呢?
4、基类的虚函数表存放在内存的什么区,虚表指针vptr的初始化时间
5、模板函数和模板类的特例化
6、构造函数、析构函数、虚函数可否声明为内联函数
7、C++模板是什么,你知道底层怎么实现的?
8、构造函数为什么不能为虚函数?析构函数为什么要虚函数?
9、析构函数的作用,如何起作用?
10、构造函数和析构函数可以调用虚函数吗,为什么
11、构造函数、析构函数的执行顺序?构造函数和拷贝构造的内部都干了啥?
12、虚析构函数的作用,父类的析构函数是否要设置为虚函数?
13、构造函数析构函数可否抛出异常
14、构造函数一般不定义为虚函数的原因
15、类什么时候会析构?
16、构造函数或者析构函数中可以调用虚函数吗
17、构造函数的几种关键字
18、构造函数、拷贝构造函数和赋值操作符的区别
19、拷贝构造函数和赋值运算符重载的区别?
20、什么是虚拟继承
21、什么情况会自动生成默认构造函数?
22、抽象基类为什么不能创建对象?
23、模板类和模板函数的区别是什么?
24、多继承的优缺点,作为一个开发者怎么看待多继承
25、模板和实现可不可以不写在一个文件里面?为什么?
26、将字符串“hello world”从开始到打印到屏幕上的全过程?
27、为什么拷贝构造函数必须传引用不能传值?
28、静态函数能定义为虚函数吗?常函数呢?说说你的理解
29、虚函数的代价是什么?
30、说一说你了解到的移动构造函数?
31、 什么情况下会合成构造函数?都说一说,你知道的都说一下
32、那什么时候需要合成拷贝构造函数呢?
33、构造函数的执行顺序是什么?
34、一个类中的全部构造函数的扩展过程是什么?
35、哪些函数不能是虚函数?把你知道的都说一说
36、什么是纯虚函数,与虚函数的区别