• 栈和队列的区别
      • 栈:先进先出
      • 队列:先进后出
    • 预处理、编译、汇编、链接
      • 预处理:去掉行号、include、去掉注释、条件编译
      • 编译:将目标代码转换为汇编代码
      • 汇编:将汇编代码转换为机器
      • 链接:链接目标文件文件
    • 构造函数
      • 如果有已经初始化的参数,这个参数需要放置在参数列表的最后
    • 数组如何实现随机访问
      • 首地址+偏移量=p+sizeof(ele)*index
    • 链表和数组的区别
      • 一个是连续内存、另一个不是连续内存分配
      • 插入
      • 删除
      • 查找
    • nullptr和null
      • c++ 中 null表示的是0,nullptr表示的是空指针
    • ifndef && define
      • 防止头文件被多次包含,使用条件编译
    • include “” && include <>
      • <> 会到标准库的头文件中去查找
      • “ “会到当前目录下面去查找
    • inline && 宏定义
      • 建议编译器在编译期间对调用函数的地方进行替换,具有安全检查
      • 宏则表示在预处理期间对文本替换,没有类型检查
      • 消除函数调用以及返回带来的开销,占用更多的内存空间
    • 如何让一个类不能被继承 -
    • typedef && define
      • define是在预处理阶段展开、typedef是关键字,在编译时处理,具有类型检查
      • define 对作用域没有要求、typedef对作用域有要求
      • typedef 定义别名,以及函数指针
    • 为什么有一些类型不能用vector初始化
      • 一个基类以及一个子类,基类指针指向子类对象,memset之后,调用delete base,导致找不到虚函数
        • memset(base,0,sizeof(Derived));
    • static关键字
      • static 全局变量、static局部变量、static函数、static类的成员、static成员函数
    • 堆和栈的区别
      • 栈地址空间是一种向低地址扩展的数据结构,是一块的连续的虚拟内存区域
      • 栈地址空间是由操作系统管理,用来存储局部变量或者函数形参
      • 栈空间的大小是固定的
      • 堆空间是由程序员管理的,动态申请与释放
      • 堆空间上的分配操作比栈上的分配操作慢
    • 原子操作
      • 存储到寄存器、对寄存器进行操作、写回寄存器
    • new && delete
      • new的底层分为三步
        • 在堆上找到一块大小足够的内存,并返回起始地址
        • 调用初始化函数对内存进行初始化
        • 返回对应指针类型的指针
      • delete的底层分为两步
        • 调用对象的析构函数
        • 回收内存…