华为OD技术面试高频考点(C++篇)
1. C++ 的基本特性有哪些?
核心答案:
-面向对象、泛型编程、模板元编程
-RAII资源管理、手动内存控制、强类型系统
2. new/delete vs malloc/free
区别对比:
-new/delete:C++运算符,触发构造/析构函数
-malloc/free:C库函数,仅分配/释放内存
3. 引用 vs 指针的区别?
关键点:
-引用:必须初始化、不可空、不可重绑定
-指针:可为空、可重指向、支持算术操作
4. 虚函数 vs 纯虚函数的作用?
一句话总结:
-虚函数:基类提供默认实现,子类可覆盖(运行时多态)
-纯虚函数:virtualfunc()=O; 强制子类实现,定义接口规范
5. C++11/14/17/20 新特性?
高频考点:
- C++11: ~auto / lambda /智能指针/右值引用
-C++17:结构化绑定/std::optional
-C++20:概念约束/协程/模块
6. vector 和 list 的区别?
容器对比:
-vector:动态数组,随机访问快(O(1)),尾部增删
-list:双向链表,任意位置增删快(O(1)),访问慢 (0(n)
7. const 的常见用法?
用法场景:
- 常量变量:^const int×= 5;
-函数参数/返回值:防止意外修改
-成员函数:void func() const;承诺不修改成员
8. shared _ptr vs unique_ptr
智能指针选择:
-shared_ptr:引用计数,允许多指针共享对象
-unique_ptr:独占所有权,性能更高,不可复制
9. 如何避免内存泄漏?
避坑指南:
-优先使用智能指针(RAII 患想)
-循环引用时用weakptr打破
-严格配对new/delete,避免裸指针
10.多态如何实现?
底层原理:
-虚函数表(vtable):每个含虚函数的类生成虚表
-动态绑定:运行时通过对象实际类型查表调用函数
总结
C++面试核心围绕 对象模型、内存管理、新特性展开,重
点理解:
-多态机制(虚函数表)
智能指针所有权(RAII设计思想)
-容器选择(时间/空间复杂度权衡)
速记关键词:虚函数、RAlI、const、右值引用、智能指针
#大厂##C++##八股文##华为OD##华为#