00 C++
C/C++八股
1.关键字
static
const
#define
union
typedef
volatile
面试问题
1.static关键字是什么意思
2.static变量的作用域
2.内存管理
类的内存对齐
如何计算C++的类或者结构体的所占的内存大小到底是多少?
除了要考虑成员变量、虚函数指针以外,还要考虑内存对齐:为了保证成员变量对齐、提高访问速度,C++在为类分配内存时,编译器可能会在成员之间插入填充字节
1 | class MyClass { |
- 虽然这个类的成员变量单独来看一共只有5字节,但由于内存对其,该类占8个字节
类的内存分布
一个类的内存包含2部分:
- 成员变量
- 虚函数指针(如果有虚函数的话),占4字节(32位)或8字节(64位)
当有虚函数的时候,类的内存对齐会将每个成员变量填充至8字节
位图
面试问题
1.类实例的内存大小有哪些影响原因
2.成员对象的顺序会对实例的内存有影响吗
3.成员函数的大小会对实例的内存有影响吗
4.虚函数和static函数对实例的内存有影响吗
5.栈内是保存什么的?malloc出来的地址在栈还是堆?
6.全局变量和静态变量保存在哪里
3.智能指针
面试问题
1.用过智能指针吗?一般用在什么地方?
2.用智能指针时需要注意什么?
4.STL
面试问题
1.对STL有了解吗?用过哪些
2.vector和list有哪些区别
3.list是单链表还是双链表
4.用过STL的函数吗?std::sort是哪个排序
5.vector和list的sort是一样的吗
6.map和set都是有序的吗
7.unordered-map和map的底层实现是什么
8.STL是不是线程安全的?
5.面向对象
面试问题
1.C++的多态是怎么实现的
2.如果用C语言实现C++多态要怎么实现
3.如果用C语言实现C++的权限要怎么实现
6.指针
面试问题
1.指针函数和函数指针有什么区别
2.什么情况下会用到函数指针
3.当struct数组的指针+1时,实际增加了多少字节
4.如何使用指针去操作内存?
5.使用指针如何避免越界访问?
7.C++11杂项
面试问题
1.右值引用是什么
2.std::async()的原理知道吗?是用什么实现的?(协程)知道异步执行的原理吗
8.数据结构
面试问题
1.哈希表的实现原理?
2.平衡二叉树的实现原理?
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.