【面经】Overseas Rabbit 字节
2022-03-21 20:00:00 # 面经

C++

  1. 简述 C++ 中智能指针的特点,简述 new 与 malloc 的区别

  2. const, static 关键字有什么区别

  3. C++ 的多态是如何实现的

  4. 简述 C++ 右值引用与转移语义

    • 在语法上,左值的声明符号为&,为了和左值区分,右值的声明符号为&&。
    • 在速度上,转移语义是和拷贝语义相对的,可以类比文件的剪切与拷贝,当我们将文件从一个目录拷贝到另一个目录时,速度比剪切慢很多,通过转移语义,临时对象中的资源能够转移其它的对象里。
    • 在析构函数的运行上,有时转移构造和转移复制操作符代替拷贝构造和拷贝复制操作符,就能比拷贝的方式省去创建临时对象,和销毁临时对象的过程。
    • 可以使用std::move(),将左值引用转化为右值引用,这样就可以调用为右值引用准备的函数,在swap函数中如果使用std::move(),可以省去三次不必要的拷贝操作
    • C++11的右值引用和转移语义
  5. C++ 中解释类模板和模板类的区别

  6. C++ 中哪些函数不能被声明为虚函数

  7. C++ 中虚函数与纯虚函数的区别

  8. 构造函数和析构函数可以被声明为虚函数吗

  9. 简述 C++ 中内存对齐的使用场景

  10. 什么是内存泄漏,怎么确定内存泄漏

  11. STL 中 vector 与 list 具体是怎么实现的,常见操作的时间复杂度是多少

  12. C++ 11 有什么新特性

操作系统

  1. 进程间有哪些通信方式

  2. 进程和线程之间有什么区别

  3. 简述操作系统如何进行内存管理

  4. 操作系统中,虚拟地址与物理地址之间如何映射

  5. 简述操作系统中的缺页中断

  6. 什么时候会由用户态陷入内核态

  7. 简述自旋锁与互斥锁的使用场景

  8. 线程间有哪些通信方式

  9. Linux 下如何查看端口被哪个进程占用

  10. 两个线程交替打印一个共享变量

  11. Linux 常见的进程调度算法

  12. 什么情况下,进程会进行切换

  13. Linux 中虚拟内存和物理内存有什么区别,有什么优点

  14. 简述 traceroute 命令的原理

计算机网络

  1. 从输入 URL 到展现页面的全过程

  2. TCP 怎么保证可靠传输

  3. TCP 中常见的拥塞控制算法有哪些

  4. HTTP 与 HTTPS 有哪些区别

  5. 简述常见的 HTTP 状态码的含义(301,304,401,403)

  6. 简述 TCP 三次握手以及四次挥手的流程,为什么需要三次握手以及四次挥手

  7. 简述 HTTPS 的加密与认证过程

  8. DNS 查询服务器的基本流程是什么?DNS 劫持是什么?

  9. TCP 与 UDP 在网络协议中的哪一层,他们之间有什么区别

  10. 面试题:聊聊TCP的粘包、拆包以及解决方案

  11. 简述 HTTP 1.0,1.1,2.0 的主要区别

  12. 简述对称与非对称加密的概念

  13. 简述 OSI 七层模型

  14. HTTP 的方法有哪些

  15. 简述 TCP 滑动窗口以及重传机制

  16. Cookie 和 Session 的关系和区别是什么

  17. TCP 挥手时出现大量 CLOSE_WAIT 或 TIME_WAIT 怎么解决

  18. HTTP 中 GET 和 POST 区别

  19. 简述 iPv4 和 iPv6 的区别

Prev
2022-03-21 20:00:00 # 面经
Next