CVTE - C++ 软件开发工程师面经汇总
6919
发布于 未知归属地

image.png

语言

  • C++ 的三大特性
  • 编译器会为一个空类自动生成那些函数
  • 多态的原理
  • 虚函数的工作原理
  • 构造函数可以是虚函数吗,析构函数呢
  • 什么是纯虚函数
  • 虚表指针存放的位置,头部还是尾部
  • 如果多重继承只有一个虚表指针吗
  • 函数模板和类模板的区别
  • 什么是内存泄漏,怎么防止内存泄漏
  • 智能指针有哪些,以及实现原理
  • 怎么解决循环引用,weak_ptr 是怎么解决循环引用的
  • 你觉得这些定位开源定位内存泄露的工具是怎么实现的
  • c++11 nullptr 比 NULL 的优势
  • 什么是类型萃取
  • c++ 有哪些创建线程的方式
  • c++ 怎么传递信号
  • c++ 和 python 的区别
  • 深拷贝和浅拷贝的区别
  • 指针和引用的区别
  • volatile 有什么作用
  • C++ 的内存分布
  • new 和 malloc 的区别
  • static 的作用
  • 了解哪些设计模式
  • 匿名表达式的具体应用和应用场合
  • class 和 struct 的区别
  • 为什么有了 class 还保留了 struct
  • c++ 中如何调用 c 写的函数
  • extern c 的原理
  • 重写、重载、覆盖的区别
  • 成员初始化列表的概念,为什么用成员初始化列表会快一些(性能优势)
  • 如何避免编译器进行的隐式类型转换
  • 怎么访问私有函数
  • 左值和右值的区别
  • 空类占多少字节

计算机网络

  • tcp 和 udp 的区别
  • 如何实现基于 udp 的可靠协议
  • tcp, udp 是那一层的协议
  • tcp 怎么保证可靠性
  • tcp 的停止等待协议是什么
  • 三次握手和四次挥手
  • 可以是两次握手吗
  • 为什么要 timewait,timewait 有什么缺点
  • 滑动窗口的原理
  • 网线断开会发生什么,哪一段会先断开
  • tcp 最大连接数限制
  • 怎么解决 tcp 粘包问题
  • 流量控制和拥塞控制的区别
  • 为什么有了 mac 地址还需要 ip 地址
  • Http1.1 和 Http1.0 的区别
  • URI(统一资源标识符)和URL(统一资源定位符)之间的区别
  • 为什么服务端易受到 SYN 攻击
  • get 和 post 的区别,get 的长度限制是多少
  • 浏览器打开网站的过程

数据结构

  • 用过哪些 STL 库
  • map 和 unorderedmap 的底层实现和性能区别
  • 二叉搜索树,平衡二叉树,红黑树的区别
  • vector 中的扩容原理和具体实现方式
  • 如果让你实现 vector 动态删除然后容量缩小你会如何设计
  • 为什么 stl 里面有 sort 函数 list 里面还要再定义一个 sort

操作系统

  • select, poll, epoll 的区别
  • 什么是死锁,怎么避免
  • 银行家算法
  • 进程间通信方式有哪些
  • 线程同步的方式
  • linux 755 指的是什么权限
  • wine 是使 windows 程序能够在 linux 下使用,你觉得他是怎么解决的
  • 系统调用和函数调用的区别
  • dll 是什么文件
  • 静态库和动态库的区别
  • 什么情况下会发生 dll 缺失
  • 什么是虚拟内存
  • 一台只有 2G 物理内存的电脑,能否 new 一个 4G 大小的数组
  • 孤儿进程、僵尸进程、守护进程的概念
  • 如何创建守护进程
  • 内核态,用户态的区别

算法

评论 (1)
暂无评论