深信服|C++ 工程师|面经汇总|2021

12063
2020.10.27
2020.11.07
发布于 未知归属地

1111.png

语言

  • strcpy 函数有什么缺陷,如何优化
  • 指针和引用区别
  • c++ 内存分区
  • 结构体字节对齐
  • 未初始化的全局变量放在哪里,编译后在二进制文件中有它的位置吗
  • 什么是野指针,怎么检测
  • 智能指针有哪些,实现原理,如何防止循环引用
  • 能够使用 memcpy 判断两个结构体存的东西是一样的吗
  • sizeof 和 strlen 的区别
  • 用宏实现比较大小
  • new 和 malloc 区别,如何判断是否申请到内存
  • 函数模板与类模板的区别
  • c++ 如何使用c实现的函数
  • 多态的原理
  • 虚函数的实现原理
  • 纯虚函数
  • 析构函数可以是虚函数吗,构造函数呢
  • 拷贝构造函数取引用的原因
  • 如何减少构造函数的开销
  • static、const的作用
  • 静态局部变量和局部变量的区别
  • auto 类型推导的实现原理
  • 如何判断结构体是否相等
  • C++11 特性
  • 函数指针和指针函数的区别
  • 隐藏、重载、重写的区别
  • C++ 的程序编译过程

计算机网络

  • OSI 七层模型
  • 三次握手和四次挥手
  • 三次握手中的 time_wait 的作用
  • TCP 与 UDP 的区别
  • TCP 如何保证可靠传输
  • TCP 超时重传的原理
  • 如何基于 udp 实现可靠原理
  • NAT 的原理
  • get/post 区别
  • IP 协议的作用
  • 路由器和二层交换机的区别
  • arp 协议的功能
  • http 连接的全过程
  • dns 为什么用 udp
  • 浏览器输入 url 到显示网页的过程
  • ping 的过程
  • 如何解决 tcp 粘包问题
  • 流量控制和拥塞控制的区别

数据结构

  • stl 有哪些容器
  • set 与 map 底层实现
  • 二叉搜索树,平衡二叉树,红黑树的区别
  • 什么是哈希表,怎么解决冲突
  • 一个哈希表只有 32 个槽如何存放几千个数据
  • vector 和 list 区别
  • vector 的扩容机制

操作系统

  • select,poll,epoll 的区别
  • epoll 高效的原因
  • 水平触发和边缘触发的应用场景
  • 同步和异步 IO 的区别
  • 什么是僵尸进程,孤儿进程,怎么回收
  • 什么是守护进程,如何创建
  • 什么是虚拟内存
  • 物理内存和虚拟内存的区别
  • 1G 的物理内存可以读取 2G 的数据吗
  • 阻塞和非阻塞区别
  • Linux 进程调度算法主要有哪些
  • 进程与线程区别
  • 内核线程了解吗,它和用户线程什么区别
  • 进程间的通讯方式
  • 互斥锁和自旋锁
  • 大小端的区别
  • 软链接,硬链接
  • fork 子进程继承父进程什么资源
  • 操作系统的加载过程
  • 进程切换发生了什么

算法

评论 (5)