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