一、计算机网络

  • 谈谈你对五层网络协议的理解?每一层的作用是什么?每一层的数据单元是什么?
  • 简单说下每一层对应的网络协议有哪些?
  • ARP 协议的工作原理?
  • 谈下你对 IP 地址分类的理解?
  • TCP 和 UDP 的区别?
  • TCP 和 UDP 分别对应的常见应用层协议有哪些?
  • 详细说下 TCP 三次握手的过程?
  • 为什么两次握手不可以?为什么不需要四次握手?
  • 为什么要回传 SYN? 为什么要传 ACK?
  • 详细说下 TCP 四次挥手的过程?
  • 为什么 TIME-WAIT 状态必须等待 2MSL 的时间呢?
  • 为什么第二次跟第三次不能合并, 第二次和第三次之间的等待是什么?
  • 保活计时器的作用?
  • TCP 协议是如何保证可靠传输的?
  • 谈谈你对停止等待协议的理解?
  • 谈谈你对 ARQ 协议的理解?
  • 滑动窗口有什么作用?
  • 谈下你对 TCP 拥塞控制的理解?四种算法?
  • TCP 黏包是怎么产生的?怎么解决?
  • 说几个你知道的 HTTP 状态码?
  • HTTP 状态码 301 和 302 代表的是什么?有什么区别?
  • forward 和 redirect 的区别?
  • HTTP 方法有哪些?
  • 说下 GET 和 POST 的区别?
  • HTTP 的首部字段有哪些?
  • 在浏览器中输入 URL 地址到显示主页的过程?
  • 说下 DNS 解析的过程?
  • 谈下你对 HTTP 长连接和短连接的理解?分别应用于哪些场景?
  • 谈下 HTTP1.0 和 1.1、1.2 的主要变化?
  • HTTPS 的工作过程?
  • HTTP 和 HTTPS 的区别?
  • HTTPS 的优缺点?
  • 什么是数字签名?什么是证书?
  • 什么是对称加密和非对称加密?
  • 常用的加密算法有哪些?
  • Session 和 Cookie 的区别?
  • 什么是 CAS 单点登录?
  • 如何设计一个 CAS 单点登录系统?
  • Socket 两个典型的接收方式方式?
  • Socket 在 OSI七 层模型中的哪一层?
  • Java 如何实现无阻塞方式的 Socket 编程?
  • 说下你知道你知道的攻击手段有哪些?
  • 跨站脚本攻击的原理、危害和防范手段?
  • 跨站请求伪造的原理、危害和防范手段?
  • SQL 注入攻击的原理、危害和防范手段?
  • 拒绝服务攻击 DOS 的原理、危害和防范手段?

二、计算机操作系统

  • 进程与线程的区别?
  • 进程的状态及其转换?
  • 进程间的通信方式有哪些?
  • 进程(或作业)的调度算法有哪些?
  • 同步和互斥的区别?
  • 同步、异步、阻塞、非阻塞的区别?
  • 线程/进程同步的方式有哪些?
  • 什么是缓冲区溢出,有什么危害,原因是什么?
  • 什么是死锁?
  • 死锁产生的必要条件?
  • 死锁的检测和消除?
  • 怎么处理死锁?
  • 怎么预防死锁?
  • 怎么避免死锁?
  • 固定分区、动态分区、分段式存储管理和分页式存储管理的区别?
  • 页面置换算法有哪些?
  • 什么是虚拟内存技术?
  • 动态链接库和静态链接库的区别?
  • 说下你对磁盘结构的认识?
  • 磁盘调度算法?
  • 中断的类型有哪些?
  • 七、设计模式
  • 简单说下常用的设计模式有哪些?
  • 工厂方法模式和抽象工厂模式有什么区别?
  • 实际开发中用过设计模式吗?怎么用的?
  • 解释器、迭代器、观察者、适配器、组合、外观、代理等模式的原理是什么?
  • 文件目录采用的是哪种设计模式?
  • JDK 中用到了哪些设计模式?
  • Spring 中用到了哪些设计模式?

三、Linux系统

  • LVS实现负载均衡的原理。
  • 简述Linux内存管理原理以及伙伴算法和Slab算法。
  • select和epoll的对比以及epoll实现的底层原理和数据结构。
  • epoll的LT模式和ET模式下读写操作,实现一下ET模式的read/write。
  • 使用C++简单实现一个生产者消费者模型。
  • Linux虚拟内存和物理内存的区别与联系
  • 如何使用gdb调试多进程、多线程程序。
  • 谈谈C10K和C10M问题及大致实现思路。
  • Linux地址复用和端口复用的使用。
  • 谈谈Reactor和Proactor模式区别与联系。
  • 尝试基于epoll实现一个高并发网络框架。
  • Nginx的基本原理以及负载均衡实现方法。
  • 谈谈Linux服务器内存/cpu/磁盘/网络带宽的监控命令和问题排查。
  • 谈谈CAP理论以及分布式一致性算法。
  • 了解CpuCache吗,如何据此来优化代码。
  • 读写锁、RCU锁、自旋锁的对比以及设计读优先/写优先的读写锁
  • 自己设计实现一个简单的读写锁。
  • 谈谈grpc的使用以及brpc的对比。
  • 对比协程和进线程,重点说明系统开销差异和各自优缺点。
  • 谈谈对线程同步和多线程安全的理解。
  • Https的C/S交互过程、http1.0/2.0/3.0的对比。
  • 多进程通信的方法和对比。
  • 多线程同步的实现和线程安全。
  • 实现一个基于LRU的本地缓存。
  • TCP/IP的拥塞控制原理和缺陷、BBR算法对比。
  • 使用Python实现多进程和多线程以及谈谈对GIL的理解。
  • 网络攻击有哪些?简述DDos、CC攻击。
  • 对比内存分配malloc/tcmalloc/ptmalloc。
  • Protobuf协议的简单原理和使用。
  • Coredump的常见原因。
  • 死锁的原理以及写一个死锁。
  • MapReduce的基本原理、写个简单的map和reduce的程序。
  • 同步异步阻塞非阻塞IO的理解。
  • git的基本原理以及常用命令。
  • 局部性hash算法simhash的原理。
  • 服务端长短连接的区别、优势和场景。
  • 如何避免多线程的虚假唤醒问题。
  • 实现简单的线程池和连接池。
  • 实现一个可以完成C10K+的TCP网络框架。
  • 尝试多种方法实现一个守护进程,2 magic fork了解吗?
  • 惊群问题知道吗?Nginx是如何解决的?
  • 谈谈对服务治理和服务发现的理解。
  • 微服务接触过吗?谈谈对微服务的理解。
  • 服务异步化编程了解过吗?