一、计算机网络
- 谈谈你对五层网络协议的理解?每一层的作用是什么?每一层的数据单元是什么?
- 简单说下每一层对应的网络协议有哪些?
- 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是如何解决的?
- 谈谈对服务治理和服务发现的理解。
- 微服务接触过吗?谈谈对微服务的理解。
- 服务异步化编程了解过吗?