C++ 高频面试题

张开发
2026/5/26 2:22:23 15 分钟阅读
C++ 高频面试题
C 高频面试题一、基础语法指针和引用的区别const有哪些用法static关键字作用#define、const、inline区别四种强制类型转换static_cast/dynamic_cast/const_cast/reinterpret_cast适用场景内存四区栈、堆、全局/静态区、常量区分别存什么new/delete与malloc/free区别野指针、悬空指针、内存泄漏是什么怎么避免大小端字节序是什么如何判断二、面向对象封装、继承、多态是什么public/protected/private区别重载、重写覆盖、隐藏的区别构造函数能不能是虚函数为什么析构函数为什么建议设为虚函数浅拷贝与深拷贝区别拷贝构造什么时候必须自己写多态底层实现虚函数表、虚指针原理纯虚函数与抽象类是什么友元函数/友元类作用this指针是什么存在哪里三、内存管理 智能指针栈和堆的区别RAII是什么shared_ptr原理引用计数存在哪里unique_ptr特点为什么不能拷贝weak_ptr作用解决什么问题shared_ptr循环引用问题及解决方法四、STLvector底层结构、扩容机制vector迭代器失效场景vector和list区别、适用场景deque底层实现特点map底层红黑树特点unordered_map底层哈希表哈希冲突如何解决map与unordered_map区别、性能、使用场景set/multiset/unordered_set区别emplace_back和push_back区别五、C11 及现代特性右值引用、移动语义、完美转发是什么移动构造/移动赋值作用lambda表达式捕获方式值捕获、引用捕获、this捕获auto与decltype区别nullptr与NULL区别函数对象std::function与std::bind作用六、多线程与并发C 标准库std::mutex/lock_guard/unique_lock区别线程安全的单例模式写法死锁四个条件如何避免volatile作用为什么不能保证线程安全std::atomic原子操作原理七、工程 常见坑内存溢出、栈溢出原因构造/析构顺序继承时的构造析构顺序空指针调用成员函数为什么有时不崩溃类对象大小如何计算对齐规则异常处理try/catch/throw什么时候用异常

更多文章