C++ Primer Plus — 知识地图

← 学科总览 | ← 主页

状态:正在啃,后面刷题精学LeetCode

GITHUB嵌入式C++教程⭐⭐⭐⭐⭐(含编译工具链急需)


1774354468251

第 1 章 基础语法

专题笔记

序号题目难度对应公司
3C++的三大特性是什么?Easy零跑汽车
8const 和 define 定义常量有什么区别?优缺点?Easy中兴通讯
18struct 和 class 的区别是什么?EasyCVTE
23C++ 关键字有哪些?Easy零跑汽车
24指针与引用的相同点和区别是什么?Easy经纬恒润
28重入函数、函数重写、函数重载分别是什么?Easy博世
29重写、重载、重定义的区别是什么?EasyCVTE
30重载 (overload) 和重写 (override) 的区别?Easy海康威视
33C++ 和 C 哪个更快?Easy石头科技 / insta360
75什么是命名空间?使用 namespace 的优缺点?Middle其它
118C 语言产生死循环有哪些种?适合什么场景?Hard已练习
126strcpy 和 memcpy 的区别是什么?Hard小米
129执行 a=1; b=a++; a=a+1; 后 a 和 b 的值?为什么?Hard小米
132如何实现字符串大小写转换?Hard海康威视

第 2 章 面向对象 OOP

专题笔记

序号题目难度对应公司
2C++构造函数中的深拷贝和浅拷贝的区别是什么?Easy石头科技 / insta360
4C++面向对象三大特性是什么?虚函数的作用?Easy经纬恒润
51C++ 中运算符重载规则和注意事项Middle滴滴
54C++ 多继承的菱形问题如何解决?虚继承的原理Middle华为
71两个函数对象进行变量传递时会有什么问题?如何解决?Middle字节跳动
76什么是多态?C++ 中如何实现?Middle中兴通讯
77什么是虚函数?如何用 C 语言模拟 C++ 的多态?Middle安安创新
78什么是深拷贝和浅拷贝?如何实现深拷贝?Middle其它
79如何理解多态和运行时多态?MiddleOPPO
104多态实现的三个必要条件?底层原理?Middle其它
105多态的实现原理是什么?Middle其它
113C++ 多态怎么理解?有哪些表现形式?Hard海康威视
114多态实现原理,override、virtual 关键字作用?Hard元戎启行
115C++ 的多态是如何实现的?Hard蔚来
116继承、虚函数、多态怎么实现?虚表函数表是什么?Hard石头科技 / insta360

第 3 章 虚函数

专题笔记

序号题目难度对应公司
27纯虚函数的作用是什么?EasyCVTE
34C++ 虚函数的实现模型是什么?虚表指针内存布局差异?Easy其它
50C++ 中虚函数表是怎么实现的?虚函数调用的开销Middle华为
52虚函数和普通函数的区别?为什么析构函数声明为虚函数Middle字节跳动
57C++ 的析构函数能置为虚吗?Middle经纬恒润
81什么是虚析构函数?为什么要将基类声明为虚析构?Middle蔚来
86父类析构没写 virtual,基类指针指向派生类对象 delete 时?Middle石头科技 / insta360
90智能指针和虚函数,什么情况下需要使用虚函数?Middle其它
91构造函数为什么一般不能设为虚函数?Middle其它
92构造函数和析构函数可以是虚函数吗?为什么?Middle中兴通讯
93析构函数通常写成虚函数?MiddleCVTE
94虚函数和纯虚函数有什么区别?Middle其它
95虚函数/纯虚区别?命名空间的作用?Middle海康威视
96虚函数的实现原理是什么?Middle其它
99虚函数实现机制?vtable 和 vptr 详细说明?Middle其它
106虚函数实现原理?RTOS 中使用它的开销?Hard大疆

第 4 章 内存管理

专题笔记

序号题目难度对应公司
6C++中堆的作用域有哪些?EasyCVTE
9delete[] 和 delete 的区别是什么?Easy大疆
13malloc 的底层实现机制是什么?EasyCVTE
14new 和 malloc 的区别是什么?EasyCVTE
31C 语言的内存管理是如何实现的?EasyCVTE
42C++ 中构造函数造成内存泄露的原因是什么?Middle安左创新
56C++ 的垃圾回收机制是怎样的?Middle蔚来
63int a 和 vector<int> b 作为参数时,a b 存储位置?Middle智元机器人
83全局变量和局部变量有什么区别?Middle石头科技 / insta360
84内存泄露是怎么造成的?在嵌入式中如何预防?Middle中兴通讯
89怎么避免野指针和悬空指针?Middle石头科技 / insta360
103使用指针时如何避免内存泄漏?Middle零跑汽车
112C++ 内存分布有哪些?Hard蔚来
119内存分布内容及堆栈区别?malloc/free 与 new/delete 区别?Hard艾派克微
122new/delete 和 malloc/free 的区别?Hard蔚来
131如何从结构体成员地址反向获取结构体首地址?Hard其它
135常见的内存泄漏场景有哪些?如何检测和避免?Hard艾派克微
139什么是内存碎片?如何解决?Hard其它
140什么是内存对齐?为什么要对齐?Hard其它
141什么是空指针和野指针?如何防范?Hard其它
152什么是零拷贝 (Zero-copy)?Hard其它

第 5 章 智能指针

专题笔记

序号题目难度对应公司
21什么是智能指针?常见的智能指针有哪些?Easy其它
25智能指针有哪些?各有什么特点和使用场景?Easy禾赛
26智能指针有哪些?他们的区别和使用场景是什么?Easy宇树科技
37C++ 中 shared_ptr, unique_ptr, weak_ptr 的区别和使用Middle米哈游
39C++ 中 std::unique_ptr 的使用场景和注意事项Middle智元机器人
40C++ 中 std::weak_ptr 解决什么问题?Middle字节跳动
65shared_ptr, unique_ptr 的区别?局部 unique_ptr 的销毁?Middleinsta360
66shared_ptr 引用计数是原子的吗?如何保证线程安全?Middle蔚来
67shared_ptr 的实现原理是什么?Middle智元机器人
73什么是 RAII?Middle其它
107C++ 中强引用和弱引用的区别是什么?Hard石头科技 / insta360
108智能指针作用?unique, shared, weak 区别与原理?Hard博智智能
137智能指针有哪些,分别解决什么问题?Hard石头科技 / insta360
138智能指针有哪些?weak_ptr 怎么用,怎么定义?Hard石头科技 / insta360

第 6 章 STL 容器

专题笔记

序号题目难度对应公司
7STL 里的哪些容器是线程安全的?Easy智能机器人
16std::map 和 std::unordered_map 的区别和适用场景?Easy网易
17std::vector 和 std::array 的区别?在嵌入式中如何选择?Easy小米
32C++ 中 vector 扩容时会有哪些影响?Easy经纬恒润
61STL 中的 map 可以输出哪些时间复杂度?Middle腾讯
62STL 中顺序表还是链表的性能?哪个容器是单继承关系?Middle经纬恒润
69std::string 的内存管理策略?SSO 优化?Middle阿里巴巴
70vector 的扩容原理?不手动扩容时的分配策略?Middle石头科技 / insta360
101vector 底层实现?如何扩容?效率更高的扩容方式?MiddleCVTE
102map 底层实现?除了红黑树还有其它的实现吗?MiddleCVTE
127unordered_map 和 map 的区别是什么?Hard元戎启行

第 7 章 C++11 新特性

专题笔记

序号题目难度对应公司
12lambda 表达式什么时候用?捕获列表有哪些方式?Easy经纬恒润
20什么是左值和右值?C++11 中引入右值引用的作用?Easy腾讯
35C++11/14/17/20 各引入了哪些重要特性?Middle阿里巴巴
36C++17 中 std::optional, std::variant, std::any 的用法Middle字节跳动
38C++ 中 std::move 的原理和注意事项Middle宇树科技
45C++ 中 chrono 应该如何使用?Middle智元机器人
46C++ 中 bind 函数和 std::bind 的用法Middle腾讯
48C++ 中 std::tuple 和 structured bindings 的用法Middle未曾科技
64lambda 表达式捕获方式?存储在哪个内存段?Middle经纬恒润
98右值引用和引用分别是什么?什么是移动语义?Middle声网
109C++11 之后有哪些新特性?Hard经纬恒润
110C++11 之后常见特性?结合嵌入式开发说明?Hard其它
111C++11 新特性有哪些?Hard蔚来
143C++11 中的 atomic 库有什么作用?Hard其它
144什么是内联函数?它与宏的区别?Hard其它
145C++ 11 新特性:auto 和 decltype 区别?Hard其它
146C++ 11 新特性:基于范围的 for 循环原理?Hard其它
147什么是移动构造函数?Hard其它
148什么是完美转发 (Perfect Forwarding)?Hard其它
149什么是线程局部存储 (Thread Local Storage)?Hard其它
150std::function 和函数指针的区别?Hard其它

第 8 章 关键字与语法

专题笔记 | volatile

序号题目难度对应公司
5C/C++ 中 static 修饰全局变量、函数和局部变量的作用?Easy暴蓝科技
10extern “C” 的作用是什么?EasyCVTE
11extern 关键字的作用是什么?extern “C” 的含义?Easy海康威视
15static 的定义与用法有哪些?EasyCVTE
19什么是 constexpr? 与 const 的区别?EasyOPPO
22什么是类型转换?(static_cast, dynamic_cast 等)Easy腾讯
43C++ 中 mutable 关键字在什么场景下使用?Middle字节跳动
49C++ 中异常处理机制是怎样的?try-catch-throwMiddle海康威视
68static 关键字在 C/C++ 中的常见用法?Middle蔚来
87宏定义常见用法?与内联函数的区别?Middle鼎桥通信
97dynamic_cast 与 static_cast 区别?动态绑定底层实现?Middle百度
123static 关键字的作用和应用场景?Hard零跑汽车
124static 的作用和应用场景有哪些?Hard其它
125static, final, finally, finalize 的用法与区别?Hard小米
151C++ 的类型安全是什么?Hard其它

第 9 章 并发编程

专题笔记 | 原子性与atomic

序号题目难度对应公司
44C++ 中 atomic 的特性方法和原理Middle腾讯
47C++ 中 std::thread 的使用方法Middle腾讯
53C++ 中线程创建函数是什么?std::thread 注意事项Middle华硕
82什么是死锁?在嵌入式操作系统中如何预防?Middle大疆
100C++ 中的通信信号是什么?信号与线程的区别?Middle中兴通讯

第 10 章 模板编程与设计模式

专题笔记

序号题目难度对应公司
1C++常见设计模式有哪些?Easy零跑汽车
41C++ 中如何实现单例模式?线程安全的单例Middle米哈游
55C++ 模板的原理是什么?模板特化和偏特化Middle华为
72什么是 CRTP (静态多态)?Middle其它
74什么是 SFINAE?在模板编程中的应用?Middle其它
80什么是 PIMPL 模式?Middle其它
85单例模式如何实现?MiddleCVTE
128什么是黑框小程序?在 C++ 中如何实现?Hard经纬恒润
134嵌入式开发中常用的设计模式有哪些?Hard大疆
153在 C++ 中如何通过底层手段实现反射机制?Hard其它

第 11 章 编译链接与嵌入式

专题笔记

序号题目难度对应公司
58C++ 编译过程分为哪几个阶段?MiddleCVTE
59在嵌入式开发过程中,C++ 的使用注意事项有哪些?Middle零跑汽车
60C 语言编译后,由 main 函数执行前经过了什么操作?Middle安安创新
88嵌入式中有哪些常见异常?它们和内核的区别?Middle其它
117C++ 调用 C 函数怎么调用?混合编译结果?Hard深度量化
120CRC 的原理是什么?Hard蔚来
121extern “C” 作用?为什么引用 C 头文件要用它?Hard海康威视
130在嵌入式开发中,C 和 C++ 的使用差异?Hard经纬恒润
133如何设计一个跨平台的 C++ 模块?Hard睿创自控
136平时编程用 C 还是 C++?分别适合什么场景?Hard影石 / insta360
142什么是大端和小端?如何判断?Hard其它