作者:守望者1028
来源:牛客网
(1) 指针和引用的区别
(2) 堆和栈的区别
(3) new和delete是如何实现的,new 与 malloc的异同处
(4) C和C++的区别
(5) C++、Java的联系与区别,包括语言特性、垃圾回收、应用场景等(java的垃圾回收机制)
(6) Struct和class的区别
(7) define 和const的区别(编译阶段、安全性、内存占用等)
(8) 在C++中const和static的用法(定义,用途)
(9) const和static在类中使用的注意事项(定义、初始化和使用)
(10) C++中的const类成员函数(用法和意义)
(11) 计算下面几个类的大小:
class A {};: sizeof(A) = 1;
class A { virtual Fun(){} };: sizeof(A) = 4(32位机器)/8(64位机器);
class A { static int a; };: sizeof(A) = 1;
class A { int a; };: sizeof(A) = 4;
class A { static int a; int b; };: sizeof(A) = 4;
(12) 给一个代码,求输出结果
class A
{
public:
A(int x){}
}
问:A a = 1;是否正确, 如果正确, 那么它调用了哪些函数?
这类题目更常见的是在基类和子类有不同实现方法。(虚函数相关,栗子很多,不多说了)
(13) C++的STL介绍(这个系列也很重要,建议侯捷老师的这方面的书籍与视频),其中包括内存管理allocator,函数,实现机理,多线程实现等
(14) STL源码中的hash表的实现
(15) STL中unordered_map和map的区别
(16) STL中vector的实现
(17) vector使用的注意点及其原因,频繁对vector调用push_back()对性能的影响和原因。
(18) C++中的重载和重写的区别:
(19) C ++内存管理(热门问题)
(20) 介绍面向对象的三大特性,并且举例说明每一个。
(21) 多态的实现(和下个问题一起回答)
(22) C++虚函数相关(虚函数表,虚函数指针),虚函数的实现原理(热门,重要)
(23) 实现编译器处理虚函数表应该如何处理
(24) 析构函数一般写成虚函数的原因
(25) 构造函数为什么一般不定义为虚函数
(26) 构造函数或者析构函数中调用虚函数会怎样
(27) 纯虚函数
(28) 静态绑定和动态绑定的介绍
(29) 引用是否能实现动态绑定,为什么引用可以实现
(30) 深拷贝和浅拷贝的区别(举例说明深拷贝的安全性)
(31) 对象复用的了解,零拷贝的了解
(32) 介绍C++所有的构造函数
(33) 什么情况下会调用拷贝构造函数(三种情况)
(34) 结构体内存对齐方式和为什么要进行内存对齐?
(35) 内存泄露的定义,如何检测与避免?
(36) 手写实现智能指针类(34-37我没遇见过)
(37) 调试程序的方法
(38) 遇到coredump要怎么调试
(39) 内存检查工具的了解
(40) 模板的用法与适用场景
(41) 成员初始化列表的概念,为什么用成员初始化列表会快一些(性能优势)?
(42) 用过C11吗,知道C11新特性吗?(有面试官建议熟悉C11)
(43) C++的调用惯例(简单一点C++函数调用的压栈过程)
(44) C++的四种强制转换