面试常问C++基础

有关语言基础:

  • c/c++程序的编译过程(GCC的编译流程)
  • 强类型语言 VS 弱类型语言
  • 数组和指针的区别
  • 字符数组和字符串常量
  • static关键字的作用
  • c++和c的区别
  • c++中的四种cast
  • c++中指针和引用的区别
  • 指针和数组的区别
  • 野指针&悬空指针
  • 虚函数&纯虚函数
  • 为什么析构函数是虚函数&为什么C++默认的析构函数不是虚函数
  • 函数指针VS指针函数
  • C++中析构函数的作用
  • 静态函数与虚函数的区别
  • 重载&重写&覆盖
  • 多态:静态多态&动态多态
  • i++与++i的区别与实现
  • 四种智能指针的实现
  • 字符串之间的区别
const char * arr = "123";
char * brr = "123";
const char crr[] = "123";
char drr[] = "123";
  • C++中const关键字
  • C++中extern关键字
  • C++中volatile关键字
  • C++中explicit关键字
  • C++与C的区别
  • 四种类型转换
  • 说一说extern C
  • new/delete 与 malloc、free的区别
  • 说一说RTTI
  • 虚函数表具体怎么实现运行时多态的
  • C语言如何进行函数调用的
  • C++中拷贝构造函数的形参能否进行值传递
  • 宏定义 VS const VS inline
  • typeof和decltype
  • 大端模式 VS 小端模式
  • 内存分配
  • 内存溢出
  • 内存泄漏
  • 内存对齐
  • 指针数组和数组指针
  • C++中class与struct的区别
  • malloc的内存分配机制
  • 堆和栈的区别
  • 32/64位操作系统中各种变量的大小,比如short,int,long等
  • 宏机制的缺点
  • NULL 与 nullptr
  • C语言中printf的执行流程(操作系统都做了哪些事情?)
  • 系统调用VS库函数

面向对象相关问题

  • 面向对象 VS 面向过程 VS 面向对象的三大特性
  • C++内存的字节对齐
  • 内联函数 VS 函数重载 VS 虚函数
  • 空类的大小
  • 成员函数初始化列表
  • this指针的原理
  • 如何只在堆区创建对象
  • 如何只在栈区创建对象
  • 深拷贝 VS 浅拷贝
  • delete this合法吗
  • 静态成员变量VS静态成员函数
  • 初始化列表的好处和使用条件
  • 友元全局函数 & 友元类 & 友元成员函数
  • 多继承 & 菱形继承
  • 构造函数能否是虚函数
  • 指针函数 & 函数指针
  • 堆和自由存储区(freeStore)的区别
  • BSS段 VS data段
  • new VS operator new VS placement new
  • 构造函数的相互调用
  • default与delete
  • 基类指针vs子类指针
  • RTTI 与 dynamic_cast

STL相关

  • map与unordered_map
  • C++实现map
  • map和set有什么区别,分别是怎么实现的?
  • 说一说STL的allocator,如何实现的?
  • STL有哪些基本模块组成?
  • vector的原理,扩容的时间复杂度
  • STL中deque的原理
  • STL中哈希表的扩容
  • 说一说STL的迭代器,迭代器的作用,有指针为什么还需要迭代器?
  • STL中迭代器的失效及分析

C++11相关

  • C++11的新特性
  • 右值引用/移动语义/完美转发
  • lamda表达式
  • 仿函数
  • RAII

底层编译相关

  • Linux进程区分段及存储数据
  • 动态库 VS 静态库 区别以及GCC加载库
  • extern -C的结果和CPP编译的区别
  • 重载的底层原理
  • 编译性语言 VS 解释性语言
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容