要点提纲

1. 网络

1.1 OSI 七层模型

  • 物理层:比特流传输,网线、光纤、网卡。
  • 数据链路层:成帧、MAC 地址、交换机、以太网协议。
  • 网络层:IP 地址、子网、路由、ICMP、ARP。
  • 传输层:TCP(可靠,面向连接)、UDP(无连接、不可靠,低延迟)。
  • 会话层:建立、管理、终止会话。
  • 表示层:数据表示、加密解密(SSL/TLS)、编码(Unicode)。
  • 应用层:HTTP、HTTPS、FTP、DNS、SMTP、SSH。

1.2 TCP/IP 四层模型

  • 网络接口层:驱动、网卡、MAC。
  • 网络层:IP、ICMP。
  • 传输层:TCP、UDP。
  • 应用层:HTTP、DNS、SMTP。

1.3 TCP 机制

  • 三次握手:SYN、SYN+ACK、ACK → 同步序列号,建立可靠连接。
  • 四次挥手:FIN/ACK → 关闭通道,TIME_WAIT 等待 2MSL。
  • 状态机:SYN_SENT、ESTABLISHED、FIN_WAIT、CLOSE_WAIT、TIME_WAIT。
  • 拥塞控制:慢启动、拥塞避免、快重传、快恢复。
  • 流量控制:滑动窗口。
  • 常见问题:粘包/拆包、SYN 攻击。

1.4 UDP

  • 无连接、无重传,适合实时通信(视频、语音、DNS)。

1.5 HTTPS/TLS

  • 握手:证书验证、公钥交换、对称密钥协商。
  • TLS 版本:1.2、1.3(前向保密 PFS)。
  • 证书链、CA、CRL/OCSP。

1.6 常用网络工具

  • ping、traceroute、tcpdump、wireshark、ss、netstat、iftop。

2. Linux

  • 常用命令:top、ps、df、du、netstat、ss、lsof、journalctl。
  • 权限管理:rwx、chmod、chown、ACL、SUID/SGID/sticky bit。
  • 进程管理:kill、jobs、fg、bg、nohup、tmux。
  • 文件系统:ext4、inode、硬/软链接、挂载。
  • IO 模型:阻塞、非阻塞、I/O 多路复用(select、poll、epoll)。
  • 网络排查:ping、tcpdump、iftop。
  • 性能调优:ulimit、sysctl、内存管理、I/O 调度。
  • systemd:systemctl、服务管理。
  • 安全:SELinux、AppArmor。

3. MySQL

3.1 慢查询优化

  • slow_query_log、EXPLAIN、performance_schema。

3.2 索引

  • B+ 树结构,聚簇索引 vs 非聚簇索引。
  • 分类:主键、唯一、普通、组合(最左匹配)、全文索引。
  • 覆盖索引 vs 回表。
  • 失效场景:函数操作、隐式转换、like %xxx。

3.3 事务

  • ACID。
  • 隔离级别:读未提交、读已提交、可重复读(默认)、串行化。
  • 并发问题:脏读、不可重复读、幻读。
  • MVCC:undo log + read view + 隐藏列。

3.4 锁

  • 表锁、行锁。
  • 共享锁、排他锁。
  • 间隙锁、Next-Key 锁。
  • 乐观锁、悲观锁。

3.5 存储引擎

  • InnoDB:事务、行锁、MVCC。
  • MyISAM:不支持事务,表锁,读快写慢。

3.6 日志

  • redo log:保证持久性。
  • undo log:回滚、MVCC。
  • binlog:主从复制、恢复。

4. Java

4.1 基本类型与包装类

  • 八种基本类型。
  • 自动装箱/拆箱,缓存范围(Integer -128~127)。

4.2 Object 类

  • equals、hashCode、toString、clone、wait/notify。

4.3 String

  • 不可变性、String Pool。
  • StringBuilder vs StringBuffer。

4.4 异常

  • Checked vs Unchecked。
  • try-with-resources。

4.5 并发

  • synchronized、ReentrantLock、CAS、原子类。
  • ThreadLocal(内存泄漏风险)。
  • Thread、Runnable、Callable。
  • 线程状态:NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED。
  • 线程池:ThreadPoolExecutor(核心数、最大数、队列、拒绝策略)。

4.6 集合

  • List:ArrayList(数组)、LinkedList(链表)。
  • Set:HashSet、TreeSet。
  • Map:HashMap(哈希表+红黑树)、LinkedHashMap、TreeMap。
  • 并发集合:ConcurrentHashMap(CAS+分段锁)、CopyOnWriteArrayList。

4.7 JVM 内部结构

  • 运行时内存区域:堆、方法区(元空间)、虚拟机栈、本地方法栈、程序计数器。
  • 类加载过程:加载、验证、准备、解析、初始化。
  • 双亲委派模型:避免类冲突。
  • OOM 类型:
    • Java heap space。
    • Metaspace。
    • StackOverflowError。
    • Direct buffer memory。

4.8 GC(垃圾回收)

  • 垃圾回收算法:引用计数、标记清除、标记整理、复制算法。
  • 分代回收:新生代(Eden+Survivor)、老年代。
  • 收集器:Serial、Parallel、CMS、G1、ZGC、Shenandoah。
  • Minor GC、Full GC。

5. Web

  • HTTP:请求方法、状态码、Header。
  • HTTPS:TLS 加密。
  • Cookie、Session、Token。
  • RESTful API 设计。
  • 跨域:CORS、JSONP。
  • 缓存:Cache-Control、ETag、Last-Modified。
  • WebSocket、SSE、长轮询。

6. 框架

6.1 Spring

  • IoC 容器、Bean 生命周期。
  • AOP:JDK 动态代理、CGLIB。
  • 常用注解
  • 原理
  • 启动流程

6.2 Spring Boot

  • 自动配置原理:@EnableAutoConfiguration。
  • Starter 模块化。
  • 配置文件优先级。
  • Actuator:健康检查、监控。
  • 常用注解
  • 原理
  • 启动流程

6.3 Spring MVC

  • DispatcherServlet 流程:HandlerMapping、HandlerAdapter、ViewResolver。
  • 拦截器、异常处理。

6.4 MyBatis

  • SQL 映射、动态 SQL。
  • 一级缓存、二级缓存。
  • N+1 问题。

7. 分布式

7.1 Spring Cloud

  • 服务注册发现:Eureka、Nacos。
  • 负载均衡:Ribbon、Feign。
  • 网关:Spring Cloud Gateway。
  • 熔断限流:Hystrix、Sentinel。

7.2 分布式核心要点

  • 雪花算法:分布式唯一 ID。
  • JWT、OAuth2:无状态认证。
  • Redis:
    • 数据结构:String、Hash、List、Set、ZSet。
    • 持久化:RDB、AOF。
    • 集群:哨兵集群、完全集群。
    • 分布式锁:SETNX+过期时间,Redisson。
    • 缓存问题:穿透、击穿、雪崩。
  • MQ:
    • 场景:削峰填谷、解耦、异步。
    • Kafka、RocketMQ、RabbitMQ。
    • 消费语义:at-most-once、at-least-once、exactly-once。
  • 分布式事务:
    • 2PC、XA。
    • Saga、补偿。
    • Seata。
  • CAP、BASE 理论。
  • 一致性协调:Zookeeper、etcd。
  • 可观测性:ELK、Prometheus、Grafana、Jaeger。

8. 运维/容器化

  • Docker:镜像、容器、Dockerfile。
  • Kubernetes:
    • Pod、Deployment、Service、Ingress。
    • ConfigMap、Secret、StatefulSet。
  • 部署策略:滚动更新、蓝绿、金丝雀。
  • CI/CD:Jenkins、GitLab CI、ArgoCD。
  • 高可用:多 AZ、故障切换、自动伸缩。
  • 监控与告警:SLO/SLI/SLA,Prometheus+Grafana。