二、计算机操作系统

  • 进程与线程的区别?
  • 进程的状态及其转换?
  • 进程间的通信方式有哪些?
  • 进程(或作业)的调度算法有哪些?
  • 同步和互斥的区别?
  • 同步、异步、阻塞、非阻塞的区别?
  • 线程/进程同步的方式有哪些?
  • 什么是缓冲区溢出,有什么危害,原因是什么?
  • 什么是死锁?
  • 死锁产生的必要条件?
  • 死锁的检测和消除?
  • 怎么处理死锁?
  • 怎么预防死锁?
  • 怎么避免死锁?
  • 固定分区、动态分区、分段式存储管理和分页式存储管理的区别?
  • 页面置换算法有哪些?
  • 什么是虚拟内存技术?
  • 动态链接库和静态链接库的区别?
  • 说下你对磁盘结构的认识?
  • 磁盘调度算法?
  • 中断的类型有哪些?

七、设计模式

  • 简单说下常用的设计模式有哪些?
  • 工厂方法模式和抽象工厂模式有什么区别?
  • 实际开发中用过设计模式吗?怎么用的?
  • 解释器、迭代器、观察者、适配器、组合、外观、代理等模式的原理是什么?
  • 文件目录采用的是哪种设计模式?
  • 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 是如何解决的?
  • 谈谈对服务治理和服务发现的理解。
  • 微服务接触过吗?谈谈对微服务的理解。
  • 服务异步化编程了解过吗?