阿里巴巴-c++工程师面经汇总
2905
2020.10.18
2020.11.07
发布于 中国

0a9a06bb26ac9c8016b7eac7694ca4b0.jpeg

语言

  • 什么是指针
  • 什么是野指针和悬空指针
  • 指针和引用的区别
  • struct 和 union 得区别
  • 什么是内存对齐
  • 什么是多态
  • 单继承和多继承得虚表结构
  • 传值和传指针的区别
  • violatile 的作用,是否具有原子性,对编译器有什么影响
  • 什么场景一定要使用 violatile
  • violatile 能否和 const 一起用
  • new 和 malloc 的区别
  • 如果让你实现malloc,你回怎么实现
  • 左值和右值的区别
  • std::move() 函数的实现原理
  • C++ 11 新特性
  • inline 实现原理
  • 知道哪些设计模式
  • C++ 类的初始化顺序
  • 怎么实现 malloc 和 free 方法
  • define 和 const 的区别
  • 构造函数可以申明为 virtual 的形式吗,如果声明会发生什么
  • 深拷贝和浅拷贝

计算机网络

  • tcp 三次握手和四次挥手
  • tcp 实现可靠传输的机制
  • ip 协议的作用
  • socket() 套接字有哪些
  • http 和 https 的区别
  • select,poll,epoll的区别
  • tcp 和 udp 的区别
  • 拥塞控制的算法
  • 拥塞控制和流量控制的区别
  • 高并发服务器客户端主动关闭连接和服务端主动关闭连接的区别
  • HTTP1.X 和 HTTP2.X 的区别
  • HTTP3 了解吗

数据结构

  • 堆和栈有什么区别
  • vector 的扩容原理
  • resize() 和 reserve() 的区别
  • map 的底层是怎么实现的
  • map 和 unordered_map的区别
  • unordered_map 支持并发读取吗,如果要实现一个支持并发读取的 unordered_map 得话要怎么实现
  • 解决哈希冲突 的方法有哪些
  • 什么是智能指针
  • 什么是跳表
  • 遍历二叉树的方式
  • map 容器如果 key 是类对象,对类有什么要求
  • vector 和 list 的区别

数据库

  • 什么是索引
  • Mysql 的 B+ 树是什么样的一个索引
  • B+ 树和 B 树有什么性能上的区别
  • 数据库的并发安全是怎么做到的
  • 事务的属性
  • 事务的原子性怎么保证的
  • 事务的提交过程
  • 事务的隔离性怎么做到的
  • MVCC 是什么
  • 数据库的隔离级别
  • 什么是幻读
  • R级别 会不会有幻读
  • mysql 的查询过程

操作系统

  • 多线程什么时候需要同步
  • 什么是缺页异常,什么情况下会缺页异常
  • 进程间的通信机制
  • 什么是共享内存
  • 什么是线程安全,实现线程安全的机制
  • 内核态线程的原理
  • 什么是同步和异步
  • cpu的流水线机制
  • 缓存一致性协议
  • 程序通过一个地址读取一个变量的过程
  • 一个进程的地址空间分为几段
  • 可执行文件的文件格式
  • 编译和链接的过程
  • 互斥锁和信号量的区别
  • 自旋锁和乐观锁
  • 怎么在用户空间实现一个定时器
  • 进程优先级和cpu任务调度策略
  • 死锁发生的必要条件
  • 什么是内存泄漏,如何定位内存泄漏
  • 除了 RAII 机制还有什么方法可以避免内存泄漏
  • 多线程下载比单线程快的原因
  • 什么是分布式
  • 内存池的作用
  • 用户态和内核态的理解
  • 硬中断和软中断

算法

评论 (0)