C++ 后端开发面试指南
目录
- 语言基础
- 面向对象
- 内存管理
- 智能指针
- STL 标准模板库
- C++11/14/17/20 新特性
- 多线程与并发
- 编译与链接
- 高频面试题与答案
一、语言基础
1.1 基本数据类型
| 类型 |
大小(64位系统) |
范围 |
| char |
1 字节 |
-128 ~ 127 |
| short |
2 字节 |
-32768 ~ 32767 |
| int |
4 字节 |
-2^31 ~ 2^31-1 |
| long |
8 字节 |
-2^63 ~ 2^63-1 |
| long long |
8 字节 |
-2^63 ~ 2^63-1 |
| float |
4 字节 |
约 ±3.4e38 |
| double |
8 字节 |
约 ±1.7e308 |
| bool |
1 字节 |
true/false |
| 指针 |
8 字节 |
- |
1.2 const 关键字
// 1. 修饰变量 - 变量不可修改
const int a = 10;
// 2. 修饰指针
const int* p1 = &a; // 指向常量的指针,*p1 不可改,p1 可改
int* const p2 = &b; // 常量指针,p2 不可改,*p2 可改
const int* const p3 = &a; // 都不可改
// 3. 修饰成员函数 - 不修改成员变量
class MyClass {
int getValue() const { return value; } // const 成员函数
};
// 4. 修饰引用 - 常用于函数参数,避免拷贝且防止修改
void func(const std::string& str);
const vs #define vs constexpr
| 特性 |
const |
#define |
constexpr |
| 类型检查 |
✅ 有 |
❌ 无 |
✅ 有 |
| 作用域 |
遵循作用域规则 |
全局替换 |
遵循作用域规则 |
| 调试 |
可调试 |
不可调试 |
可调试 |
| 编译期求值 |
不保证 |
预处理期 |
✅ 保证编译期 |