百度 - C++ 工程师面经汇总
7419
2020.11.10
2020.11.10
发布于 未知归属地

image.png
{:align=left}

语言

  • 指针和引用的区别
  • 什么是多态,如何实现的
  • 静态多态和动态多态
  • 虚函数的工作方式
  • 什么是动态绑定
  • 虚表指针和虚函数表的存放位置
  • 虚函数表的存放内容
  • 多继承的虚函数表结构
  • 析构函数要设为虚函数吗,为什么
  • 构造函数可以是虚函数吗
  • 拷贝构造函数为什么传引用
  • 什么是纯虚函数
  • 如何在 main 函数之前执行一些操作
  • static 关键字的使用
  • 静态函数和非静态函数的区别
  • 全局静态遍历和局部静态变量得区别
  • define 和 const 的区别
  • new跟malloc的区别
  • 为什么要引入new
  • free是如何识别free区域的
  • 如何理解面向对象编程
  • 面向对象设计的原则
  • 有哪些强制类型转换,使用的区别
  • 构造函数发生异常会怎么廓
  • 构造函数中this指针暴露了会有什么后果
  • 有哪些智能指针,实现原理和使用区别
  • 如何避免循环依赖
  • 什么是模板,模板特化,偏特化
  • C++ 11 新特性
  • 左值和右值得区别
  • inline关键字得使用

计算机网络

  • OSI 七层模型
  • 三次握手和四次挥手
  • TCP 报文的头部信息
  • TCP与UDP的区别
  • 什么是流量控制
  • 什么是拥塞控制
  • 流量控制和拥塞控制的区别
  • DNS 的查询方式
  • 客户端掉线服务端如何处理
  • 如何解决tcp粘包问题
  • 滑动窗口机制
  • IP层如何找MAC地址?如果对应IP不在局域网呢
  • ARP攻击,ARP欺骗
  • GET 和 POST 的区别
  • HTTP错误码
  • 浏览器打开一个网页经历了怎样的过程
  • https连接中的ssl加密过程

数据结构

  • 堆与栈的区别
  • vector 迭代器失效问题
  • 什么是一致性哈希
  • vector 内存分配原则,扩容原理
  • resize、reserve 的区别
  • 二叉搜索树,平衡二叉树,红黑树的区别
  • B 树和 B+ 树的区别
  • 什么是跳表
  • 什么是哈希表,哈希函数,怎么解决碰撞
  • 如何删除map中的奇数节点
  • STL中仿函数有什么用,和函数指针有什么不同,哪个效率高

数据库

  • 什么是事务
  • 事务回滚有什么实现机制
  • MySQL数据库有哪两种引擎?它们之间有什么区别和联系
  • 索引的底层实现原理是什么
  • 查询时命中主键和普通值有什么区别
  • 数据库范式
  • 如何防止数据库被攻击
  • 数据库得ACID

操作系统

  • 进程和线程的区别
  • 线程是否拥有资源,拥有哪些资源
  • 进程间通讯方式
  • 什么是共享内存
  • 多线程要注意哪些问题
  • 什么是协程
  • select、poll、epoll 的区别
  • Linux查看文件的磁盘空间,监控进程cpu,内存使用率
  • ping的底层协议
  • socket位于哪一层?socket编程的过程
  • 内核分几个部分
  • 同步与互斥的区别
  • 线程同步和互斥方式
  • 什么是内存泄漏,如何检测
  • 什么是虚拟内存
  • 静态库和动态库有什么区别
  • 硬链接软链接的区别
  • 什么是守护进程,如何创建守护进程

算法

评论 (7)