IT岗位通用理论知识汇总


目录:

IT岗位通用理论知识汇总


1. 计算机网络

1.1 OSI 七层模型 vs TCP/IP 四层

OSI 七层                    TCP/IP 四层          协议/设备示例
┌─────────────┐          ┌─────────────┐
│  应用层      │          │             │        HTTP, HTTPS, DNS,
│  表示层      │          │   应用层     │        SMTP, FTP, SSH,
│  会话层      │          │             │        WebSocket
├─────────────┤          ├─────────────┤
│  传输层      │          │   传输层     │        TCP, UDP
├─────────────┤          ├─────────────┤
│  网络层      │          │   网络层     │        IP, ICMP, 路由器
├─────────────┤          ├─────────────┤
│ 数据链路层    │          │ 网络接口层   │        MAC, ARP, 交换机
│  物理层      │          │             │        网线, 光纤, 集线器
└─────────────┘          └─────────────┘

记忆口诀应表会传网数物 → "品"

1.2 TCP 三次握手与四次挥手

三次握手(建立连接):
Client                              Server
  │─────── SYN, seq=x ──────────────▶│
  │                                   │
  │◀── SYN+ACK, seq=y, ack=x+1 ──────│
  │                                   │
  │─────── ACK, ack=y+1 ────────────▶│
  │                                   │
  │         ESTABLISHED               │

为什么要三次?
- 防止已失效的连接请求到达服务端(历史连接问题)
- 确认双方的发送和接收能力都正常
- 同步双方的初始序列号 (ISN)

四次挥手(断开连接):
Client                              Server
  │─────── FIN, seq=u ──────────────▶│  "我不发了"
  │◀────── ACK, ack=u+1 ─────────────│  "知道了"
  │                                   │
  │◀────── FIN, seq=v ───────────────│  "我也不发了"
  │─────── ACK, ack=v+1 ────────────▶│  "知道了"
  │                                   │
  │ 等待 2MSL → CLOSED                │

为什么四次?
- TCP 全双工,双方独立关闭
- 收到 FIN 只表示对方不再发数据,自己还可以继续发

为什么 TIME_WAIT 要等 2MSL?
- 确保最后的 ACK 能被对方收到
- 让旧连接的报文在网络中消失

1.3 TCP 核心机制

┌─────────────────────────────────────────────────────────┐
│ 1. 可靠传输                                              │
│    ├─ 确认应答 (ACK) + 序列号 (seq)                       │
│    ├─ 超时重传 (RTO)                                     │
│    └─ 校验和                                              │
│                                                          │
│ 2. 流量控制(滑动窗口)                                    │
│    接收方告知自己的接收窗口大小 (rwnd)                      │
│    发送方根据 rwnd 控制发送速率                            │
│                                                          │
│ 3. 拥塞控制                                               │
│    ├─ 慢启动:cwnd 从 1 指数增长                          │
│    ├─ 拥塞避免:超过 ssthresh 后线性增长                   │
│    ├─ 快重传:收到 3 个重复 ACK 立即重传                   │
│    └─ 快恢复:不进入慢启动,直接进入拥塞避免                │
│                                                          │
│ 4. 粘包与拆包                                             │
│    原因:TCP 是流式协议,没有消息边界                       │
│    解决:定长消息 / 分隔符 / 消息头+消息体                  │
└─────────────────────────────────────────────────────────┘

1.4 TCP vs UDP

特性 TCP UDP
连接 面向连接 无连接
可靠性 可靠(ACK + 重传) 不可靠
顺序 有序 无序
头部开销 20 字节 8 字节
适用场景 HTTP, MySQL, SSH DNS, 视频直播, 游戏, VoIP

1.5 HTTP 协议

HTTP/1.0:短连接,每次请求建 TCP
HTTP/1.1:持久连接 (Keep-Alive),管道化(串行)
HTTP/2.0:多路复用、头部压缩 (HPACK)、服务器推送、二进制分帧
HTTP/3.0:基于 QUIC (UDP),0-RTT 连接,彻底解决队头阻塞
状态码 含义 示例
200 OK 请求成功
301 永久重定向 域名迁移
302 临时重定向 登录后跳转
304 未修改 缓存命中
400 请求错误 参数错误
401 未认证 需要登录
403 禁止访问 权限不足
404 未找到 URL 不存在
500 服务器内部错误 代码异常
502 网关错误 Nginx → 后端 挂了
503 服务不可用 过载/维护
504 网关超时 后端响应超时

1.6 HTTPS 与 TLS

TLS 1.3 握手流程(1-RTT):
Client                                    Server
  │── ClientHello (密钥协商参数) ─────────▶│
  │◀── ServerHello + 证书 + Finished ──────│  ← 服务端先完成
  │── Finished ──────────────────────────▶│  ← 客户端完成,开始传输数据

                    总耗时:1 RTT(比 TLS 1.2 快 1 个 RTT)

核心概念:
- 非对称加密:交换对称密钥(RSA / ECDHE)
- 对称加密:加密数据(AES-GCM / ChaCha20)
- 数字证书:CA 签名,验证公钥归属
- 证书链:Root CA → 中间 CA → 网站证书

2. 操作系统与 Linux

2.1 进程与线程

┌──────────────────────────────────────────────────────────┐
│                      进程 vs 线程                         │
├──────────────┬───────────────────┬───────────────────────┤
│    维度       │      进程          │       线程            │
├──────────────┼───────────────────┼───────────────────────┤
│ 资源         │ 独立资源(内存/文件)│ 共享进程资源            │
│ 创建开销      │ 大                 │ 小                    │
│ 通信         │ IPC(管道/共享内存)   │ 直接读写共享变量        │
│ 隔离性        │ 强(一个崩溃不影响) │ 弱(一个崩溃全挂)       │
│ 切换开销      │ 大                 │ 小                    │
│ 调度         │ 操作系统调度        │ 操作系统调度            │
└──────────────┴───────────────────┴───────────────────────┘

协程(Coroutine):
- 用户态轻量级线程,调度由程序控制(非 OS)
- 切换开销极小(不需要内核态切换)
- Goroutine、async/await、Kotlin 协程

2.2 进程状态转换

                    ┌──────────┐
                    │  创建     │
                    └────┬─────┘
                         
                    ┌────▼─────┐
              ┌─────│  就绪    │◄────────────┐
              │     └────┬─────┘             │
              │          │ 调度              │
              │     ┌────▼─────┐   时间片到   │
              │     │  运行    │─────────────┘
              │     └────┬─────┘
              │          │ 等待事件
              │     ┌────▼─────┐
              │     │  阻塞    │
              │     └────┬─────┘
              │          │ 事件完成
              │          └────────┐
              │                  │
              │            ┌────▼─────┐
              └────────────│  终止    │
                           └──────────┘

2.3 内存管理

虚拟地址空间布局(Linux 进程):

高地址  ┌──────────────┐
        │   内核空间     │  (1GB, 不可直接访问)
        ├──────────────┤
        │   栈 (Stack)  │  ↓ 向下增长(局部变量、函数调用)
        │      ↓       │
        │              │
        │      ↑       │  ↑ 向上增长(动态分配)
        │   堆 (Heap)   │  malloc / new
        ├──────────────┤
        │   BSS 段      │  未初始化全局变量
        ├──────────────┤
        │   Data 段     │  已初始化全局变量
        ├──────────────┤
        │   Text 段     │  代码段(只读)
低地址  └──────────────┘

2.4 常用命令分类

# === 系统信息 ===
uname -a          # 内核版本
cat /etc/os-release  # 系统版本
lscpu / free -h   # CPU / 内存
df -h / du -sh *  # 磁盘
top / htop        # 实时监控

# === 进程管理 ===
ps aux            # 所有进程
pstree            # 进程树
lsof -p <pid>     # 进程打开的文件
kill -9 <pid>     # 强制杀进程
kill -15 <pid>    # 优雅杀进程 (SIGTERM)
nohup cmd &       # 后台运行
jobs / fg / bg    # 作业控制

# === 网络 ===
ss -tlnp          # 监听端口
iptables -L       # 防火墙规则
tcpdump -i eth0 port 80  # 抓包
curl -v https://example.com
mtr example.com   # 路由追踪+丢包

# === 文件 ===
find / -name "*.log" -mtime -1
grep -r "ERROR" /var/log/
tail -f /var/log/app.log
chmod 755 / chown user:group
rsync -avz src/ dest/

# === 性能分析 ===
vmstat 1          # 虚拟内存统计
iostat -x 1       # 磁盘 I/O
sar -n DEV 1      # 网络流量
perf top          # CPU 性能分析
strace -p <pid>   # 跟踪系统调用

3. 数据库核心理论

3.1 ACID 事务特性

┌─────────────────────────────────────────────────────────┐
│ A — Atomicity (原子性)                                    │
│     事务是一个不可分割的单位,要么全做,要么全不做           │
│     实现:Undo Log                                       │
├─────────────────────────────────────────────────────────┤
│ C — Consistency (一致性)                                  │
│     事务执行前后,数据库从一种一致状态变为另一种            │
│     实现:约束、触发器、应用层逻辑                         │
├─────────────────────────────────────────────────────────┤
│ I — Isolation (隔离性)                                    │
│     并发事务之间互不干扰                                   │
│     实现:锁 (Lock) + MVCC(多版本并发控制)               │
├─────────────────────────────────────────────────────────┤
│ D — Durability (持久性)                                   │
│     事务一旦提交,即使系统崩溃也不丢失                      │
│     实现:Redo Log                                       │
└─────────────────────────────────────────────────────────┘

3.2 四种隔离级别

隔离级别 脏读 不可重复读 幻读 MySQL 默认
READ UNCOMMITTED
READ COMMITTED
REPEATABLE READ ⚠️ 部分解决
SERIALIZABLE
脏读      :读到其他事务未提交的数据
不可重复读:同一事务两次读到同一行的值不同(被其他事务 UPDATE)
幻读      :同一事务两次查询返回的结果行数不同(被其他事务 INSERT)

3.3 MVCC 原理

MVCC (Multi-Version Concurrency Control):
- 每行数据有多个版本,每个事务看到的是特定的快照版本
- 写不阻塞读,读不阻塞写(读写不冲突)

MySQL InnoDB 实现:
┌────────┬──────────┬─────────────┐
│  DB_TRX_ID      │  DB_ROLL_PTR │  数据列...
│  (创建事务ID)    │  (回滚指针)   │
└────────┴──────────┴─────────────┘
                        
                        
              ┌─────────────────┐
              │   Undo Log      │
              │  (旧版本数据链)   │
              └─────────────────┘

ReadView:事务启动时记录当前活跃事务列表
- 如果数据的 DB_TRX_ID < ReadView.min_trx_id → 可见
- 如果数据的 DB_TRX_ID > ReadView.max_trx_id → 不可见
- 如果在活跃列表中 → 不可见,沿 Undo Log 链找旧版本

3.4 索引理论

B+ 树索引:
                ┌─────────┐
                │  根节点   │  (只存索引,不存数据)
                └────┬─────┘
           ┌─────────┼─────────┐
      ┌────▼────┐ ┌──▼─────┐ ┌▼──────┐
      │ 中间节点 │ │中间节点 │ │中间节点│  (只存索引)
      └────┬────┘ └────┬───┘ └───┬───┘
    ┌──────┼──────┐     │        │
┌───▼──┐┌──▼──┐┌─▼──┐┌▼──┐┌───▼──┐
│叶子节点││叶子 ││叶子 ││叶子││叶子  │  ← 叶子层:存完整数据
│       ││节点 ││节点 ││节点││节点  │
└───┬───┘└──┬──┘└──┬──┘└─┬─┘└──┬───┘
    └───────┴──────┴─────┴─────┘
         双向链表连接(支持范围查询)

B+ 树 vs B 树:
- B+ 树数据只存叶子节点,B 树所有节点都存数据
- B+ 树叶子节点有链表,范围查询快
- B+ 树树高更低,IO 次数更少

Hash 索引 vs B+ 树索引:
- Hash:= 查询 O(1),但不支持范围查询和排序
- B+ 树:范围查询和排序高效

3.5 SQL 优化核心思路

1. 慢查询定位
   slow_query_log → mysqldumpslow / pt-query-digest

2. EXPLAIN 分析
   type 字段(从好到差):
   system > const > eq_ref > ref > range > index > ALL
                                               ↑ 全表扫描,避免
   key       → 实际使用的索引(NULL = 没用到)
   rows      → 预计扫描行数
   Extra     → Using filesort / Using temporary(需要优化)

3. 索引优化
   - 最左前缀原则:联合索引 (a,b,c),a / a,b / a,b,c 能用索引
   - 覆盖索引:查询列都在索引中,不需要回表
   - 索引下推 (ICP):存储引擎层过滤,减少回表
   - 避免索引失效:函数/计算/类型转换/前置通配符(like '%x')

4. 表结构优化
   - 字段尽量 NOT NULL
   - 使用合适的数据类型(越小越好)
   - 垂直拆分(把大字段/冷数据分离)

4. 数据结构与算法

4.1 复杂度速查

数据结构 查找 插入 删除 特点
数组 O(n) O(n) O(n) 随机访问 O(1)
链表 O(n) O(1) O(1) 无随机访问
哈希表 O(1) O(1) O(1) 空间换时间
平衡树 O(log n) O(log n) O(log n) 有序
跳表 O(log n) O(log n) O(log n) 实现简单
算法 平均时间 最坏时间 空间 稳定
快排 O(n log n) O(n²) O(log n)
归并 O(n log n) O(n log n) O(n)
堆排 O(n log n) O(n log n) O(1)

4.2 常用算法思想

1. 双指针
   快慢指针:链表判环、找中点
   左右指针:有序数组两数之和、反转数组

2. 滑动窗口
   适用:子串/子数组问题
   维护 left/right,右扩满足条件,左收优化结果

3. 动态规划
   关键:定义状态 + 状态转移方程 + 初始条件
   经典:背包问题、最长公共子序列、编辑距离

4. 贪心
   每步取局部最优,最终全局最优
   前提:局部最优 = 全局最优(需证明)

5. 回溯
   试探 → 失败 → 撤销 → 重试
   八皇后、全排列、组合问题

4.3 常见数据结构的工程应用

布隆过滤器 (Bloom Filter):
├─ 判断"一定不存在"或"可能存在"
├─ 空间效率极高(1 亿数据 ≈ 115MB)
└─ 应用:Redis 缓存穿透防护、垃圾邮件过滤

LSM-Tree(Log-Structured Merge-Tree):
├─ 写入先写内存 (MemTable),再顺序写磁盘 (SSTable)
├─ 写性能极好,牺牲部分读性能
└─ 应用:LevelDB, RocksDB, HBase, Cassandra

跳表 (Skip List):
├─ 多层链表,概率平衡
├─ 实现比红黑树简单,性能相当
└─ 应用:Redis Zset, LevelDB MemTable

一致性哈希 (Consistent Hashing):
├─ 增删节点只影响相邻节点数据
├─ 虚拟节点解决数据倾斜
└─ 应用:分布式缓存、CDN

5. 设计模式与编程范式

5.1 GoF 23 种设计模式分类

创建型(5 种)— 对象怎么创建
├─ 单例模式    全局唯一实例(Spring Bean 默认)
├─ 工厂方法    子类决定创建什么对象
├─ 抽象工厂    创建相关对象家族
├─ 建造者      分步构建复杂对象(StringBuilder, Lombok @Builder)
└─ 原型模式    克隆对象(Object.clone())

结构型(7 种)— 类/对象怎么组合
├─ 适配器      转换接口(电源适配器)
├─ 装饰器      动态添加功能(Java IO: BufferedInputStream)
├─ 代理        控制访问(Spring AOP, MyBatis Mapper)
├─ 外观        统一入口(Controller → Service → DAO)
├─ 桥接        分离抽象和实现(JDBC: Driver + Connection)
├─ 组合        树形结构(文件系统目录树)
└─ 享元        共享对象(Integer 缓存 -128~127)

行为型(11 种)— 对象怎么协作
├─ 观察者      发布订阅(消息队列, EventListener)
├─ 策略        算法族可切换(支付方式切换)
├─ 模板方法    父类定义流程,子类实现细节(JdbcTemplate)
├─ 责任链      请求沿链传递(Filter, Interceptor)
├─ 命令        请求封装为对象(线程池 Runnable)
└─ 状态        根据状态改变行为(订单状态流转)

5.2 OOP 五大原则 (SOLID)

S — 单一职责 (SRP)
    一个类只负责一件事
    例:UserService 只处理用户业务,不处理日志

O — 开闭原则 (OCP)
    对扩展开放,对修改关闭
    例:用策略模式新增支付方式,不修改原有代码

L — 里氏替换 (LSP)
    子类可以替换父类而不影响程序正确性
    例:Rectangle(长方形) 和 Square(正方形) 违反 LSP

I — 接口隔离 (ISP)
    不强迫客户端依赖它不需要的接口
    例:拆分为 UserReadService / UserWriteService

D — 依赖倒置 (DIP)
    依赖抽象(接口),不依赖具体实现
    例:Service 依赖 IRepository 接口,不依赖 MySQL 实现

5.3 编程范式

面向对象 (OOP)       封装、继承、多态
函数式 (FP)         纯函数、不可变数据、高阶函数
                    例:Java Stream, React Hooks, Scala
响应式 (RP)         数据流 + 变化传播
                    例:RxJava, WebFlux, Vue Reactivity
声明式              描述"是什么",不描述"怎么做"
                    例:SQL, HTML, Kubernetes YAML

6. 分布式系统理论

6.1 CAP 定理

CAP:一个分布式系统最多同时满足两项

          C (一致性)
         /\
        /  \
       /    \
      /  CP  \         CP: ZooKeeper, etcd
     /  (银行)\
    /         \
   /           \
  /   AP        \      AP: Eureka, Cassandra
 /   (DNS)       \
P──────────────────A
    可用性

选择策略:
- CP:需要强一致(金融交易、分布式锁)→ ZooKeeper → CP
- AP:需要高可用(服务注册、CDN)→ Eureka → AP
- 实际中:BASE 理论,舍弃强一致换取可用性

6.2 BASE 理论

Basically Available(基本可用)
    系统出现故障时,允许损失部分可用性
    例:响应时间从 50ms 降到 3s,或引导到降级页面

Soft state(软状态)
    允许系统存在中间状态,无需实时一致
    例:订单"支付中"状态

Eventually consistent(最终一致性)
    不保证实时一致,但最终会达到一致
    例:DNS 更新需要时间传播到所有节点

6.3 分布式一致性协议

两阶段提交 (2PC):
协调者 → 所有参与者:准备提交?
        参与者 → 协调者:YES/NO
协调者 → 所有参与者:提交/回滚

问题:同步阻塞、单点故障、数据不一致风险

三阶段提交 (3PC):
在 2PC 基础上加入超时机制和预提交阶段,减少阻塞

TCC (Try-Confirm-Cancel):
Try:   预留资源(冻结库存)
Confirm: 确认执行(扣减库存)
Cancel: 取消执行(释放冻结)

Paxos / Raft:
共识算法,用于选主和日志复制
Raft 比 Paxos 更易理解(Leader 选举 + 日志复制 + 安全性)

6.4 分布式系统常见问题

1. 分布式 ID 生成
   方案:Snowflake (1bit + 41bit时间 + 10bit机器 + 12bit序号)
        号段模式 (美团 Leaf)
        数据库自增 (单点瓶颈)

2. 分布式锁
   方案:Redis (SET NX EX + Redlock)
        ZooKeeper (临时顺序节点)
        etcd

3. 分布式事务
   方案:2PC / 3PC / TCC / Saga / 本地消息表 + MQ

4. 限流算法
   固定窗口:简单但有临界问题
   滑动窗口:更精确
   漏桶:固定速率流出(NGINX limit_req)
   令牌桶:允许突发(Guava RateLimiter)

5. 服务降级与熔断
   降级:关掉非核心功能(关闭推荐、返回缓存数据)
   熔断:错误率达到阈值 → 快速失败 → 半开探测 → 恢复
        (Hystrix → Resilience4j → Sentinel)

6.5 负载均衡

四层负载 (L4, 传输层):
├─ 基于 IP + Port
├─ 性能高,无法根据 URL 路由
└─ 实现:LVS, F5, Nginx Stream

七层负载 (L7, 应用层):
├─ 基于 URL / Header / Cookie
├─ 更智能,支持 SSL 终结
└─ 实现:Nginx, HAProxy, Traefik, Envoy

算法:
轮询、加权轮询、最少连接、IP Hash、一致性 Hash

7. 软件工程与质量

7.1 软件开发流程

需求分析 → 系统设计 → 编码实现 → 测试 → 部署 → 运维

瀑布模型:    顺序执行,不可回溯(适合需求稳定的项目)
敏捷 (Scrum):迭代增量,2-4 周一个 Sprint
DevOps:      打通 Dev + Ops,CI/CD 持续交付

7.2 测试金字塔

           ┌──────┐
           │ E2E  │  UI 端到端测试(少而精)
           │ 10%  │
          ┌┴──────┴┐
          │ 集成测试│  API/服务间测试
          │  20%   │
         ┌┴────────┴┐
         │  单元测试  │  快速、大量
         │   70%    │
         └──────────┘
// 单元测试 (JUnit 5)
@Test
void shouldCreateOrderSuccessfully() {
    // Given
    OrderDTO dto = new OrderDTO(1L, 100);
    when(orderRepo.save(any())).thenReturn(mockOrder);

    // When
    Order result = orderService.create(dto);

    // Then
    assertThat(result.getStatus()).isEqualTo(OrderStatus.PENDING);
}

// 集成测试
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
class OrderControllerTest {
    @Test
    void shouldReturnOrderById() {
        given()
            .contentType(ContentType.JSON)
        .when()
            .get("/api/orders/1")
        .then()
            .statusCode(200)
            .body("id", equalTo(1));
    }
}

7.3 代码质量指标

圈复杂度 (Cyclomatic Complexity):
  衡量代码逻辑复杂度,if/else/for 越多越高
  建议 ≤ 10(单个方法)

代码重复率:
  建议 < 5%(SonarQube 检测)

测试覆盖率:
  行覆盖率 > 80%(核心业务 > 90%)
  分支覆盖率 > 70%

技术债务:
  SonarQube 技术债务比率 < 5%

7.4 Git 工作流

Git Flow:
main ─────●──────────●──────────●
           \         /          /
  develop───●──●──●──●──●──●──●
              \ /     \ /
  feature──────●       ●

GitHub Flow(简化版):
  main ← feature branch ← PR ← Review ← Merge

GitLab Flow:
  main → pre-production → production
  (环境分支模型)

常用操作:
  git rebase -i HEAD~3    # 合并最近 3 个提交
  git cherry-pick <hash>  # 挑一个提交合入
  git reflog              # 找回丢失的提交
  git bisect              # 二分法找 bug 提交

8. DevOps 与 CI/CD

8.1 CI/CD 流水线

代码提交 ──▶ 编译 ──▶ 单元测试 ──▶ 代码扫描 ──▶ 构建镜像 ──▶
            │                                          │
            └──────── 失败则通知 ──────────────────────┘
                                                       
         ┌─────────────────────────────────────────────┘
         
   部署到 DEV ──▶ 集成测试 ──▶ 部署到 STAGING ──▶ UAT ──▶
                                                       
         ┌─────────────────────────────────────────────┘
         
   蓝绿/金丝雀发布 ──▶ PRODUCTION ──▶ 监控告警
# GitHub Actions CI 示例
name: CI Pipeline
on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  build-and-test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Set up JDK 17
        uses: actions/setup-java@v3
        with:
          java-version: '17'
          distribution: 'temurin'
      - name: Build & Test
        run: mvn verify
      - name: SonarQube Scan
        run: mvn sonar:sonar -Dsonar.host.url=$SONAR_URL
      - name: Build Docker Image
        run: docker build -t myapp:${{ github.sha }} .
      - name: Push to Registry
        run: docker push myapp:${{ github.sha }}

8.2 发布策略

蓝绿部署 (Blue-Green):
├─ 两套完全相同的环境:Blue (当前) + Green (新版本)
├─ 流量一次性切换到 Green
├─ 优点:秒级回滚
└─ 缺点:双倍资源

金丝雀发布 (Canary):
├─ 新版本先部署到少量实例(5%)
├─ 验证无问题逐步扩大比例
├─ 优点:风险可控
└─ 缺点:需要流量路由能力

滚动发布 (Rolling):
├─ 逐个替换实例
├─ 优点:资源利用率高
└─ 缺点:回滚慢,短暂多版本共存

A/B 测试:
├─ 不是发布策略,是业务实验
├─ 两套方案给不同用户群体
└─ 比较转化率/用户反馈

8.3 Docker 核心概念

镜像 (Image):    应用程序的只读模板
容器 (Container):镜像的可运行实例(镜像 + 可写层)
仓库 (Registry): 存储和分发镜像(Docker Hub, Harbor)
Dockerfile:     构建镜像的脚本
Docker Compose: 多容器编排(开发/测试环境)
# 多阶段构建(减小镜像体积)
FROM maven:3.9-eclipse-temurin-17 AS build
WORKDIR /app
COPY pom.xml .
RUN mvn dependency:go-offline
COPY src ./src
RUN mvn package -DskipTests

FROM eclipse-temurin:17-jre-alpine
RUN addgroup -S app && adduser -S app -G app
USER app
COPY --from=build /app/target/*.jar app.jar
EXPOSE 8080
HEALTHCHECK CMD wget -qO- http://localhost:8080/actuator/health || exit 1
ENTRYPOINT ["java", "-jar", "app.jar"]

8.4 Kubernetes 核心概念

┌─────────────────────────────────────────────────────────┐
│                      Cluster                             │
│  ┌─────────────────────────────────────────────────────┐│
│  │                    Node (Worker)                     ││
│  │  ┌─────────────┐  ┌─────────────┐                  ││
│  │  │    Pod      │  │    Pod      │                  ││
│  │  │ ┌─────────┐ │  │ ┌─────────┐ │                  ││
│  │  │ │Container│ │  │ │Container│ │                  ││
│  │  │ └─────────┘ │  │ └─────────┘ │                  ││
│  │  └─────────────┘  └─────────────┘                  ││
│  │       ↑ Service 提供稳定访问                         ││
│  └─────────────────────────────────────────────────────┘│
│                                                          │
│  Deployment: 管理 Pod 副本和滚动更新                       │
│  Service:    Pod 的负载均衡入口                           │
│  Ingress:    外部流量入口(HTTP 路由)                    │
│  ConfigMap:  配置管理                                    │
│  Secret:     敏感信息                                    │
└─────────────────────────────────────────────────────────┘

9. 运维核心理论

9.1 监控体系

监控四层模型:
┌──────────────────────────────────────┐
│ 第 4 层:业务监控                     │
│   订单量、GMV、注册数、转化率          │
├──────────────────────────────────────┤
│ 第 3 层:应用监控                     │
│   QPS、响应时间、错误率、GC           │
├──────────────────────────────────────┤
│ 第 2 层:中间件监控                   │
│   MySQL/Redis/MQ 连接数和性能         │
├──────────────────────────────────────┤
│ 第 1 层:基础设施监控                  │
│   CPU、内存、磁盘、网络               │
└──────────────────────────────────────┘

黄金指标(Google SRE 四大指标):
1. 延迟 (Latency):P50 / P99 / P999
2. 流量 (Traffic):QPS / TPS
3. 错误 (Errors):5xx / 异常率
4. 饱和度 (Saturation):连接数 / 队列长度 / CPU

9.2 灾备体系

RTO (Recovery Time Objective):
  故障后多久能恢复服务?(目标恢复时间)
  例:RTO = 30 分钟 → 必须在 30 分钟内恢复

RPO (Recovery Point Objective):
  允许丢失多少数据?(目标恢复点)
  例:RPO = 5 分钟 → 最多丢 5 分钟的数据

灾备级别:
┌──────────┬────────────┬──────────┐
│   级别    │    RTO      │   方案    │
├──────────┼────────────┼──────────┤
│ 热备      │ 秒-分钟     │ 多活/主从自动切换  │
│ 暖备      │ 分钟-小时   │ 主从手动切换       │
│ 冷备      │ 小时-天     │ 全量备份恢复       │
│ 异地容灾  │ 视方案而定   │ 异地多活 / 两地三中心│
└──────────┴────────────┴──────────┘

9.3 故障管理

MTBF (Mean Time Between Failures):平均故障间隔时间
MTTR (Mean Time To Repair):      平均修复时间

故障响应流程:
发现 → 通告 → 止损 → 定位 → 修复 → 复盘

止损三板斧:
1. 回滚:回到上一个稳定版本
2. 降级:关闭非核心功能
3. 限流:限制入口流量

故障复盘 (Postmortem):
├─ 时间线:发生了什么,什么时候
├─ 根因:5-Why 分析法
├─ 影响:用户/业务影响范围
├─ 改进:Action Items + 责任人 + 截止日期
└─ 心态:对事不对人

9.4 SRE 核心概念

SLO (Service Level Objective):服务等级目标
  例:99.9% 的请求在 500ms 内完成

SLI (Service Level Indicator):服务等级指标
  实际测量值,如 P99 延迟 = 480ms

SLA (Service Level Agreement):服务等级协议
  合同约定,不达标要赔偿

错误预算 (Error Budget):
  错误预算 = 1 - SLO
  例:SLO = 99.9% → 错误预算 = 0.1%(每月约 43 分钟)
  如果错误预算没花完 → 可以加速发布
  如果错误预算花完了 → 暂停发布,优先稳定性

10. 架构设计方法论

10.1 架构演进路径

单体架构 → 垂直拆分 → SOA → 微服务 → Service Mesh

单体:
  优势:简单、开发快、部署容易
  挑战:耦合高、扩展难、部署慢

微服务:
  优势:独立部署、独立扩展、技术异构
  挑战:分布式复杂性、数据一致性、运维成本高

判断是否该拆:
  - 团队规模 > 2-pizza team (8-10 人)
  - 模块间耦合度低,各自独立变更
  - 不同模块有不同的扩展需求
  - 不同模块有不同的技术栈需求

10.2 DDD 领域驱动设计

战略设计:
├─ 统一语言 (Ubiquitous Language)
├─ 限界上下文 (Bounded Context)
└─ 上下文映射 (Context Map)

战术设计:
├─ 实体 (Entity):有唯一标识,可变
├─ 值对象 (Value Object):无标识,不可变
├─ 聚合 (Aggregate):实体+值对象的聚合体,通过聚合根访问
├─ 领域服务 (Domain Service):不属于特定实体的领域逻辑
├─ 仓库 (Repository):聚合的持久化接口
└─ 领域事件 (Domain Event):领域中发生的重要事件

架构分层:
  用户接口层 → 应用层 → 领域层 → 基础设施层
      ↑                     ↑
    Controller/UI    Service(编排) + Domain(核心)

10.3 常见架构模式

事件驱动架构 (EDA):
  服务 A 发布事件 → MQ → 服务 B/C/D 订阅消费
  优点:解耦、异步、可扩展
  适合:订单→库存→物流→通知 这种链式场景

CQRS (命令查询职责分离):
  写模型:Command → 写数据库
  读模型:Query → 读数据库(独立优化的查询库)
  适合:读写比例悬殊、查询模型复杂的场景

Clean Architecture(六边形架构/洋葱架构):
  ┌─────────────────────────────┐
  │       Frameworks & Drivers  │  外层
  │  ┌───────────────────────┐  │
  │  │  Interface Adapters   │  │
  │  │  ┌─────────────────┐  │  │
  │  │  │  Application    │  │  │
  │  │  │  ┌───────────┐  │  │  │
  │  │  │  │  Domain   │  │  │  │  内层(核心)
  │  │  │  └───────────┘  │  │  │
  │  │  └─────────────────┘  │  │
  │  └───────────────────────┘  │
  └─────────────────────────────┘
  核心原则:依赖方向 → 向内,外层依赖内层

分层架构 / 整洁架构 / 六边形架构都是此思想。

10.4 技术选型方法论

评估维度(加权打分):
├─ 功能匹配度 (30%):是否满足业务需求?
├─ 技术成熟度 (20%):社区活跃度、文档、案例
├─ 团队能力 (20%):团队是否熟悉?
├─ 性能与扩展 (15%):能否支撑业务增长?
├─ 运维成本 (10%):部署、监控、升级难度
└─ 许可证与成本 (5%):是否开源?商业授权?

决策矩阵示例:
        功能  成熟  团队  性能  运维  许可  总分
方案A    9     8     7     8     7     10    8.1
方案B    8     9     5     7     8     10    7.7
→ 选方案A

11. 产品经理知识体系

11.1 产品生命周期

┌──────────┐    ┌──────────┐    ┌──────────┐    ┌──────────┐    ┌──────────┐
│  概念     │───▶│  设计     │───▶│  开发     │───▶│  运营     │───▶│  退市     │
│  验证     │    │  原型     │    │  迭代     │    │  增长     │    │  迁移     │
└──────────┘    └──────────┘    └──────────┘    └──────────┘    └──────────┘

关键活动:
概念:用户需求调研、竞品分析、可行性评估
设计:信息架构、交互原型 (Figma)、PRD
开发:需求评审、Sprint 计划、验收
运营:数据分析、用户反馈、A/B 测试
退市:数据迁移、用户通知、替代方案

11.2 用户故事与需求管理

用户故事格式:
  作为 <角色>,我想要 <功能>,以便 <价值>

  例:作为 买家,我想要 按价格筛选商品,以便 快速找到符合预算的商品

INVEST 原则(好的用户故事):
  Independent  — 独立(故事之间尽量解耦)
  Negotiable   — 可协商(细节通过沟通确认)
  Valuable     — 有价值(对用户/业务有明确价值)
  Estimable    — 可估算(团队能估算工作量)
  Small        — 小粒度(一个 Sprint 内完成)
  Testable     — 可测试(有明确的验收条件)

验收条件 (Acceptance Criteria):
  当 [场景],如果 [操作],那么 [预期结果]

  例:当 用户输入有效的用户名和密码,点击登录按钮,
      那么 系统跳转到首页并在右上角显示用户名。

KANO 模型:
  基本型需求:没有=极度不满,有=理所当然(登录、支付安全)
  期望型需求:越多越满意,越少越不满(响应速度、UI 美观度)
  兴奋型需求:没有=不会不满,有=超出预期(智能推荐、夜间模式)

11.3 数据分析框架

AARRR 海盗模型:
  Acquisition  获取(用户从哪里来?下载/访问量)
  Activation   激活(用户首次体验到核心价值?注册完成率)
  Retention    留存(用户会回来吗?次日/7日/30日留存率)
  Revenue      变现(如何赚钱?付费率、ARPU、GMV)
  Referral     推荐(用户会推荐给别人吗?邀请率)

北极星指标 (North Star Metric):
  最能代表产品价值的核心指标
  例:Spotify → 总听歌时长
      Airbnb → 预订天数
      Slack → 发送的消息数

数据驱动决策:
  1. 定义问题(What/Why/How)
  2. 提出假设(如果做 X → 会导致 Y,因为 Z)
  3. 设计实验(A/B Test 样本量、时长)
  4. 分析结果(统计显著性 P < 0.05)
  5. 落地决策(发布/放弃/继续迭代)

11.4 PRD 核心结构

┌─────────────────────────────────────────────┐
│ 产品需求文档 (PRD)                           │
│                                             │
│ 1. 背景与目标                                │
│    为什么要做?解决什么问题?衡量成功的指标?    │
│                                             │
│ 2. 用户分析                                  │
│    目标用户画像、使用场景、痛点                │
│                                             │
│ 3. 功能详述                                  │
│    功能列表、流程图、原型图、交互说明           │
│                                             │
│ 4. 非功能需求                                │
│    性能指标、安全要求、兼容性(APP / 浏览器)   │
│                                             │
│ 5. 验收标准                                  │
│    可测试的通过条件                           │
│                                             │
│ 6. 发布计划                                  │
│    版本规划、灰度策略、回滚方案                │
│                                             │
│ 7. 风险与依赖                                │
│    技术风险、依赖的外部系统、法规合规           │
└─────────────────────────────────────────────┘

12. 项目管理知识体系

12.1 PMBOK 十大知识领域

1.  整合管理    项目章程、项目管理计划、变更管理
2.  范围管理    需求收集、WBS(工作分解结构)
3.  进度管理    里程碑、关键路径、甘特图
4.  成本管理    估算、预算、挣值分析 (EVM)
5.  质量管理    质量标准、测试策略、评审
6.  资源管理    团队组建、RACI 矩阵
7.  沟通管理    沟通计划、状态报告
8.  风险管理    风险识别、概率×影响矩阵、应对计划
9.  采购管理    招标、合同管理
10. 干系人管理  识别干系人、管理期望

12.2 敏捷 vs 瀑布

瀑布 (Waterfall):
  需求 → 设计 → 开发 → 测试 → 部署
  适合:需求明确、变更少(如政府项目、嵌入系统)
  风险:后期才发现问题,改造成本高

敏捷 (Agile):
  Sprint 1    Sprint 2    Sprint 3
  ┌────────┐ ┌────────┐ ┌────────┐
  │需求设计│ │需求设计│ │需求设计│
  │开发测试│ │开发测试│ │开发测试│
  │交付评审│ │交付评审│ │交付评审│
  └────────┘ └────────┘ └────────┘
  适合:需求不确定、需要快速验证(互联网产品)
  核心:拥抱变化、快速迭代、持续交付

12.3 Scrum 框架

角色:
├─ Product Owner (PO):定义需求、排优先级、验收
├─ Scrum Master (SM):引导流程、移除障碍、教练
└─ Development Team (Dev):开发、自组织(5-9人)

仪式(Sprint 周期 2-4 周):
├─ Sprint Planning:定 Sprint 目标 + 选 Backlog
├─ Daily Standup (15min):昨天做了什么/今天做什么/有什么阻碍
├─ Sprint Review:演示交付物 → 收集反馈
└─ Sprint Retrospective:改进流程(KPT: Keep/Problem/Try)

工件:
├─ Product Backlog:所有需求清单(PO 负责优先级)
├─ Sprint Backlog:本 Sprint 要完成的需求
├─ Increment:Sprint 产出的可用产品增量
└─ Burndown Chart:剩余工作量趋势图

12.4 估算方法

故事点 (Story Point):
  相对估算单位,不是工时
  代表复杂度+工作量+不确定性
  例:Fibonacci 数列(1, 2, 3, 5, 8, 13, 21)

规划扑克 (Planning Poker):
  每人出牌 → 最高和最低解释 → 第二轮投票 → 达成共识

三点估算法:
  乐观(O) + 最可能(M) + 悲观(P)
  期望值 = (O + 4M + P) / 6

12.5 风险管理

风险矩阵:
              影响程度
              低    中    高    极高
概率  高       关注   重要   严重   灾难
      中       关注   关注   重要   严重
      低       忽略   关注   关注   重要
      极低     忽略   忽略   关注   关注

风险应对策略:
├─ 规避:不干了(取消高风险活动)
├─ 转移:让别人承担(买保险、外包)
├─ 缓解:降低概率或影响(增加测试、冗余)
├─ 接受:留应急储备(可接受的风险)
└─ 利用:机会(有利的不确定性)

12.6 沟通与干系人管理

RACI 矩阵:
┌────────────┬─────┬─────┬─────┬─────┐
│   活动      │ PM  │ PO  │ Dev │ QA  │
├────────────┼─────┼─────┼─────┼─────┤
│ 需求定义    │  C  │  R  │  C  │  I  │
│ 架构设计    │  I  │  C  │  R  │  I  │
│ 开发编码    │  I  │  I  │  R  │  C  │
│ 测试验收    │  A  │  C  │  C  │  R  │
│ 部署发布    │  A  │  I  │  R  │  C  │
└────────────┴─────┴─────┴─────┴─────┘
R=执行 (Responsible)
A=负责 (Accountable) — 最终拍板的
C=咨询 (Consulted)
I=知情 (Informed)

13. 安全理论

13.1 常见攻击与防护

OWASP Top 10 (Web 安全十大风险):

1. 注入 (Injection)
   SQL 注入:' OR '1'='1' --
   防护:参数化查询、ORM、输入校验

2. 失效的身份验证
   弱密码、Session 劫持
   防护:MFA、密码复杂度、Session 过期

3. 敏感数据泄露
   明文存储、日志泄露密码
   防护:加密存储(bcrypt)、脱敏日志、HTTPS

4. XXE (XML 外部实体注入)
   防护:禁用 DTD、使用 JSON

5. 失效的访问控制
   越权:修改 URL 参数访问他人数据
   防护:服务端权限校验、RBAC

6. 安全配置错误
   默认密码、错误信息暴露版本
   防护:安全基线、信息最小化

7. XSS (跨站脚本)
   反射型/存储型/DOM 型
   防护:输出编码、CSP、HttpOnly Cookie

8. 不安全的反序列化
   防护:白名单、签名校验、RASP

9. 使用含已知漏洞的组件
   防护:依赖扫描、及时更新

10. 日志和监控不足
    防护:集中日志、异常告警

13.2 认证与授权

认证 (Authentication):你是谁?
├─ 密码 / MFA / OTP
├─ OAuth 2.0(微信登录、GitHub 登录)
├─ SSO (Single Sign-On)
└─ 生物特征

授权 (Authorization):你能做什么?
├─ RBAC:基于角色(admin / user / guest)
├─ ABAC:基于属性(时间+地点+设备+...)
├─ OAuth 2.0 Scope:基于范围
└─ ACL:基于访问控制列表

JWT (JSON Web Token):
  Header.Payload.Signature
  无状态,服务端不需要存 Session
  注意:payload 仅 Base64 编码,非加密!不存敏感信息

13.3 安全架构原则

纵深防御 (Defense in Depth):
  多层防护,一层破了还有下一层
  网络层(WAF/IP白名单) → 应用层(输入校验) → 数据层(加密)

最小权限原则 (Least Privilege):
  只给完成任务所需的最小权限
  例:普通用户不能访问管理接口

默认安全 (Secure by Default):
  默认配置即安全
  例:MySQL 8.0 默认 localhost 访问

零信任 (Zero Trust):
  永不信任,始终验证
  不因在内网就信任,每次请求都要认证+授权

14. 各岗位面试核心考点

14.1 运维工程师

运维工程师核心能力:
├─ Linux 系统管理:启动流程、systemd、内核参数、故障排查
├─ 网络:TCP/IP 协议栈、抓包分析 (tcpdump/Wireshark)、DNS/CDN
├─ 脚本:Shell/Python 自动化
├─ 数据库运维:备份恢复、主从管理、慢查询优化
├─ 中间件:Nginx/Tomcat/Redis/MySQL/RabbitMQ 部署调优
├─ 容器化:Docker + K8s(Deployment/Service/Ingress/ConfigMap)
├─ 监控:Prometheus + Grafana + ELK
├─ CI/CD:Jenkins/GitLab CI/GitHub Actions
├─ 云平台:至少熟悉阿里云/AWS/Azure 之一
└─ 自动化:Terraform/Ansible

高频面试题:
Q: 服务器 CPU 飙升 100%,怎么排查?
A: top → 找出进程 → top -Hp <pid> 找线程 → 
   jstack (Java) / 看代码逻辑 → 是死循环?频繁 GC?大量计算?

Q: 网站访问慢,怎么排查?
A: 分层定位 —
   1. 前端:Network 面板看资源加载时间
   2. Nginx:$request_time / $upstream_response_time
   3. 应用:JVM GC / 线程池 / 数据库连接池
   4. 数据库:慢查询 / 锁 / 连接数
   5. 系统:CPU / 内存 / 磁盘 I/O / 网络带宽

14.2 开发工程师

核心能力:
├─ 语言深度:JVM 原理 / Go 并发 / Python 元类
├─ 数据结构与算法:LeetCode 200+
├─ 设计模式:能说出项目中用到的 5+ 种模式
├─ 框架原理:Spring IoC/AOP/事务、MyBatis 插件
├─ 数据库:索引优化、SQL 改写、分库分表方案
├─ 中间件:Redis 缓存设计、MQ 消息可靠性
├─ 系统设计:秒杀、短链、IM、Feed 流
├─ 代码质量:重构、单元测试、Code Review

高频面试题:
Q: ConcurrentHashMap 原理?
A: JDK 7: Segment 分段锁(默认 16 段)
   JDK 8: CAS + synchronized(锁粒度更细)
   红黑树优化:链表长度 ≥ 8 转红黑树

Q: MySQL 一条 SQL 的执行过程?
A: 连接器 → 分析器 → 优化器 → 执行器 → 存储引擎
   优化器:选择索引、Join 顺序
   执行器:调用存储引擎接口逐行读取

14.3 架构师

核心能力:
├─ 系统设计:高并发、高可用、高扩展
├─ 分布式理论:CAP/BASE/共识算法/分布式事务
├─ 架构模式:微服务/事件驱动/CQRS/DDD
├─ 技术广度:能选型,知道各方案的 trade-off
├─ 性能优化:全链路压测、性能瓶颈定位
├─ 容量规划:预估 QPS → 需要的机器数
├─ 技术领导力:推动技术演进、制定规范

高频面试题:
Q: 设计一个秒杀系统?
A: 
1. 前端:按钮防重复 + 验证码
2. 网关:限流(令牌桶)
3. 服务层:Redis 预减库存 → 消息队列异步下单
4. 数据库:行级锁扣库存 + 热点隔离
5. 容量:预估 QPS → 扩容机器 → 压测验证

Q: 微服务拆分原则?
A: 
- 按业务域拆分(DDD 限界上下文)
- 高内聚低耦合
- 独立变更和部署
- 数据独立性(每服务独立数据库)
- 团队对齐(康威定律)

14.4 产品经理

核心能力:
├─ 需求分析:用户调研、竞品分析、数据洞察
├─ 产品设计:原型(Axure/Figma)、交互、信息架构
├─ 数据分析:AARRR、留存分析、漏斗分析
├─ 项目管理:需求优先级、版本规划、跨部门协调
├─ 商业思维:商业模式画布、ROI 分析
└─ 技术理解:能评估技术可行性、理解开发成本

高频面试题:
Q: 怎么判断一个需求做不做?
A: 
1. 是否符合产品战略和 OKR?
2. 用户价值 × 用户量 × 影响强度
3. 开发成本 / 实现难度
4. 投入产出比 (ROI)
5. 是否紧急?是否有依赖?

Q: 如何确定需求优先级?
A: 
- RICE 模型:Reach(覆盖) × Impact(影响) × Confidence(信心) / Effort(成本)
- MoSCoW:Must/Should/Could/Won't
- KANO:基本型 > 期望型 > 兴奋型

14.5 项目经理

核心能力:
├─ 计划制定:WBS、甘特图、关键路径
├─ 进度跟踪:燃尽图、里程碑、站会
├─ 风险管理:风险识别、评估、应对
├─ 沟通协调:干系人管理、跨团队协调
├─ 质量管理:评审机制、质量标准
└─ 方法论:Scrum/Kanban/SAFe

高频面试题:
Q: 项目延期了怎么办?
A: 
1. 分析原因:需求变更?估算不准?依赖阻塞?
2. 评估影响:延期多久?影响哪些里程碑?
3. 制定方案:
   - 赶工:增加资源(但可能降低质量)
   - 快速跟进:并行原本串行的任务(增加风险)
   - 削减范围:协商优先级,延迟低优先级
   - 调整日期:与管理层/客户沟通新日期
4. 总结经验:改进估算流程、增加缓冲

Q: 怎么管理需求变更?
A: 
1. 建立变更控制流程(CCB)
2. 评估变更影响(范围/进度/成本/质量)
3. 与干系人沟通(告知代价)
4. 记录所有变更(可追溯)
5. 整体考虑,不单看一个变更

附录:知识体系全景图

                    ┌─────────────────────────────────────┐
                    │           IT 知识体系全景             │
                    └─────────────────────────────────────┘
                                      
        ┌──────────┬──────────┬───────┴───────┬──────────┬──────────┐
        │          │          │               │          │          │
   ┌────▼───┐ ┌───▼────┐ ┌──▼───┐     ┌─────▼────┐ ┌───▼───┐ ┌───▼────┐
   │ 计算机  │ │ 编程   │ │数据库 │     │ 分布式   │ │ 工程  │ │ 业务   │
   │ 基础    │ │ 语言   │ │      │     │ 系统     │ │ 实践  │ │ 领域   │
   └────┬───┘ └───┬────┘ └──┬───┘     └─────┬────┘ └───┬───┘ └───┬────┘
        │         │         │               │          │         │
   ┌────▼───┐     │    ┌────▼───┐      ┌────▼───┐      │         │
   │·OS     │     │    │·MySQL  │      │·CAP    │  ┌───▼───┐     │
   │·网络   │     │    │·Redis  │      │·BASE   │  │·Git   │     │
   │·DS/ALG │     │    │·ES     │      │·Raft   │  │·CI/CD │     │
   │·编译   │     │    │·MongoDB│      │·微服务  │  │·DevOps│     │
   └────────┘     │    └────────┘      │·消息队列│  │·Docker│     │
                  │                    │·分布式锁│  │·K8s   │     │
              ┌───▼────┐               └────────┘  └───────┘     │
              │ Java   │                                          │
              │ Go     │                                     ┌────▼───┐
              │ Python │                                     │·电商   │
              │ JS/TS  │                                     │·金融   │
              └────────┘                                     │·SaaS   │
                                                             └────────┘

运维侧重点:OS/网络 → 中间件运维 → 容器/K8s → 监控 → CI/CD
开发侧重点:语言 → 框架 → 数据库 → 中间件 → 系统设计
架构侧重点:分布式 → DDD → 微服务 → 容量规划 → 技术选型
产品侧重点:需求分析 → 数据驱动 → 商业模式 → 技术理解
项目侧重点:敏捷/Scrum → 风险 → 沟通 → 干系人