C++知识盲点梳理
语言基础
-
const使用, const与宏定义的区别和特点
-
static变量用法
-
什么时候子类需要有析构函数/子类析构函数的作用
-
extern C作用
extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码。加上extern "C"后,会指示编译器这部分代码按C语言(而不是C++)的方式进行编译。由于C++支持函数重载,因此编译器编译函数的过程中会将函数的参数类型也加到编译后的代码中,而不仅仅是函数名;而C语言并不支持函数重载,因此编译C语言代码的函数时不会带上函数的参数类型,一般只包括函数名。
这个功能主要用在以下情况:- C++代码调用C语言代码
- 在C++的头文件中使用
- 在多个人协同开发时,可能有的人比较擅长C语言,而有的人擅长C++,这样的情况下也会有用到
-
C++11有什么新特性
-
几种自动指针作用,有什么优缺点,如何实现
-
lambda表达式
-
泛型
-
多线程&多进程
- C++锁机制有几种: 互斥锁自旋锁条件锁
- 多线程中join的作用
- 多进程之间数据传输机制: 信号信号量管道消息队列共享内存...
- protocol buffer优缺点?
-
左值引用与右值引用
-
转移函数作用
-
C++ 中的原子操作
原子操作就是在多线程程序中“最小的且不可并行化的”操作,意味着多个线程访问同一个资源时,有且仅有一个线程能对资源进行操作。通常情况下原子操作可以通过互斥的访问方式来保证,例如Linux下的互斥锁(mutex),Windows下的临界区(Critical Section)等。
C++11中从语言层面开始支持并行编程,内容包括了管理线程保护共享数据线程间同步操作低级原子操作等各种类,极大地提高了程序可移植性,以前多线程依赖于具体的平台,而现在有了统一的借口参考. -
RAII -- Resource Acquisition Is Initialization
-
函数指针是什么?有什么作用?
C++ 111417新特性
C++11 参考
- 自动指针
- 泛型
- 多线程支持
- 基于范围的for循环(类似foreach功能)
- 继承构造函数
- final & override
- default
- explicit
- const
- constexpr
- enum class
- 正则表达式
- chrono时间库(源于boost)
- forward_list
- all_of
- lambda表达式
C++14
C++17
面向对象
- 父类与子类的构造函数与析构函数调用顺序,在子类或者父类调用析构函数时候需要注意什么?
- 重载与覆盖的区别
数据结构
- vector和list的异同?各有什么优缺点,插入读取和删除的时候性能有什么不同?
- vector<standard_pair>与map的区别?
- map如何实现的?
- 哈希表如何实现
设计模式
- 消息队列订阅发布观察者模式有什么区别, 优缺点如何?
- 适配器模式作用及优缺点
- static关键字在哪种设计模式中会用到?有什么作用?
- 单例模式有什么作用?在什么情况下会用到?
- 常用设计模式: 工厂模式抽象工厂模式建造者模式单例模式观察者模式订阅发布模式消息队列模式MVCMVVM
- MVCMVVM等设计模式的优缺点或特点
- 设计模式中的设计原则
第三方库
- boost库
- function 用法及作用
- bind如何使用,有什么作用
- join方法作用