有关语言基础:
- c/c++程序的编译过程(GCC的编译流程)
- 强类型语言 VS 弱类型语言
- 数组和指针的区别
- 字符数组和字符串常量
- static关键字的作用
- c++和c的区别
- c++中的四种cast
- c++中指针和引用的区别
- 指针和数组的区别
- 野指针&悬空指针
- 虚函数&纯虚函数
- 为什么析构函数是虚函数&为什么C++默认的析构函数不是虚函数
- 函数指针VS指针函数
- C++中析构函数的作用
- 静态函数与虚函数的区别
- 重载&重写&覆盖
- 多态:静态多态&动态多态
- i++与++i的区别与实现
- 四种智能指针的实现
- 字符串之间的区别
const char * arr = "123";
char * brr = "123";
const char crr[] = "123";
char drr[] = "123";
- C++中const关键字
- C++中extern关键字
- C++中volatile关键字
- C++中explicit关键字
- C++与C的区别
- 四种类型转换
- 说一说extern C
- new/delete 与 malloc、free的区别
- 说一说RTTI
- 虚函数表具体怎么实现运行时多态的
- C语言如何进行函数调用的
- C++中拷贝构造函数的形参能否进行值传递
- 宏定义 VS const VS inline
- typeof和decltype
- 大端模式 VS 小端模式
- 内存分配
- 内存溢出
- 内存泄漏
- 内存对齐
- 指针数组和数组指针
- C++中class与struct的区别
- malloc的内存分配机制
- 堆和栈的区别
- 32/64位操作系统中各种变量的大小,比如short,int,long等
- 宏机制的缺点
- NULL 与 nullptr
- C语言中printf的执行流程(操作系统都做了哪些事情?)
- 系统调用VS库函数
面向对象相关问题
- 面向对象 VS 面向过程 VS 面向对象的三大特性
- C++内存的字节对齐
- 内联函数 VS 函数重载 VS 虚函数
- 空类的大小
- 成员函数初始化列表
- this指针的原理
- 如何只在堆区创建对象
- 如何只在栈区创建对象
- 深拷贝 VS 浅拷贝
- delete this合法吗
- 静态成员变量VS静态成员函数
- 初始化列表的好处和使用条件
- 友元全局函数 & 友元类 & 友元成员函数
- 多继承 & 菱形继承
- 构造函数能否是虚函数
- 指针函数 & 函数指针
- 堆和自由存储区(freeStore)的区别
- BSS段 VS data段
- new VS operator new VS placement new
- 构造函数的相互调用
- default与delete
- 基类指针vs子类指针
- RTTI 与 dynamic_cast
STL相关
- map与unordered_map
- C++实现map
- map和set有什么区别,分别是怎么实现的?
- 说一说STL的allocator,如何实现的?
- STL有哪些基本模块组成?
- vector的原理,扩容的时间复杂度
- STL中deque的原理
- STL中哈希表的扩容
- 说一说STL的迭代器,迭代器的作用,有指针为什么还需要迭代器?
- STL中迭代器的失效及分析
C++11相关
- C++11的新特性
- 右值引用/移动语义/完美转发
- lamda表达式
- 仿函数
- RAII
底层编译相关
- Linux进程区分段及存储数据
- 动态库 VS 静态库 区别以及GCC加载库
- extern -C的结果和CPP编译的区别
- 重载的底层原理
- 编译性语言 VS 解释性语言