# 技术面题库

适用：研发 / 算法 / 数据 / DevOps 岗位的 1~2 面（技术轮）。

按职级分层：
- **初级（0-3 年）**：基础八股 + 简单算法 + 项目细节
- **中级（3-5 年）**：系统设计 + 复杂场景题 + 项目深度追问
- **高级（5+ 年）**：架构权衡 + 跨团队问题 + 业务理解

## 一、后端 / 服务端

### 基础八股（每家都问）
1. HTTP / HTTPS / TLS 流程，session vs cookie vs token
2. TCP 三握四挥，为什么是 4 次挥手
3. MySQL 索引底层（B+ 树）、何时失效、最左前缀
4. MySQL 事务隔离级别 + 各自解决什么问题
5. Redis 持久化（RDB / AOF）+ 主从 + 哨兵 + 集群
6. Redis 缓存击穿 / 穿透 / 雪崩 怎么解
7. 分布式锁 3 种实现（Redis / Zookeeper / 数据库）+ 各自坑
8. Kafka 怎么保证消息不丢、不重复、有序
9. JVM 内存模型 + GC（Java 岗）/ Goroutine 调度（Go 岗）
10. 一致性哈希、CAP、BASE、Raft / Paxos 简述

### 系统设计高频
- 设计一个秒杀系统（QPS 10w）
- 设计一个短链服务（生成 / 重定向 / 统计）
- 设计一个分布式 ID 生成器
- 设计微博 feed 流（推 / 拉 / 推拉结合）
- 设计一个限流器（令牌桶 / 漏桶 / 滑动窗口）

### 系统设计回答框架
```
1. 澄清需求（问清 QPS、读写比、数据量、SLA）
2. 估容量（QPS × 平均请求大小 = 带宽；数据量 × 时间 = 存储）
3. 高层架构（接入层 → 业务层 → 存储层 → 数据流）
4. 关键模块深挖（讲清楚选型为什么）
5. 扩展性 / 高可用 / 容灾
6. 主动指出 trade-off
```

## 二、前端

1. 浏览器渲染流程（DNS → TCP → TLS → HTTP → HTML 解析 → 布局 → 绘制）
2. 事件循环 + 微任务 / 宏任务
3. 闭包、原型链、this 绑定
4. React / Vue 响应式原理
5. 性能优化（FCP / LCP / CLS 指标 + 实操）
6. SSR vs CSR vs SSG，何时用哪个
7. 跨域方案（CORS / JSONP / 反向代理）
8. webpack / vite 区别 + 原理

## 三、算法 / 机器学习

### 基础
1. 偏差 / 方差，过拟合怎么解
2. L1 / L2 正则的区别
3. 随机森林 vs GBDT vs XGBoost
4. 梯度消失 / 爆炸 + 解决（BatchNorm / 残差 / 激活函数）
5. Attention 机制讲清，Transformer 与 RNN 对比
6. 样本不平衡处理（采样 / 类权重 / Focal Loss）
7. 模型评估：准确率、精确率、召回率、AUC、F1，何时用哪个

### LLM / GenAI 方向（2024+ 热门）
1. SFT vs RLHF vs DPO，原理 + 何时用
2. RAG 完整 pipeline：分块策略、Embedding 选型、检索融合、Reranker
3. Agent 的 tool use / planning / memory，与单 LLM 的区别
4. 长上下文（YARN / RoPE 缩放、Context window 扩展）
5. 推理优化：KV cache、speculative decoding、量化
6. 大模型评估：benchmark、人工评估、LLM-as-Judge 各自坑

### 项目深挖（每个面试官必问）
- 你这个模型为什么选 ___ 而不是 ___
- 数据是怎么标注 / 清洗的，量级
- 训练用了什么硬件、跑了多久、超参怎么调
- 上线后效果怎么评估，与基线对比
- 失败 / bug 的 case，怎么 debug

## 四、数据 / 数仓 / 分析

### SQL（必考）
- 行转列 / 列转行 / 透视
- 窗口函数（rank / dense_rank / lead / lag）
- 计算 7 日 / 30 日活跃用户
- 同 user 连续登录天数
- 留存率 / 漏斗 / 同期群分析
- 性能优化（索引、explain、分区、避免子查询）

### 业务题
- 给你一个业务场景，让你设计指标体系
- DAU 跌了 5%，怎么排查
- 设计一个 A/B 测试（样本量计算、显著性、停损）
- 用户分层模型（RFM / 生命周期）

## 五、技术面回答原则

1. **澄清问题再答**：模糊的题先问 1~2 个澄清问题
2. **结构化输出**：分点 / 分模块讲，不要意识流
3. **trade-off 思维**：选 A 而不选 B 时，主动说"因为 ___"
4. **诚实**：不会的题说"这个我没研究过，但根据我对 X 的理解，可能可以这样想 ___"
5. **画图 / 写代码**：白板题写代码先讲思路，再写，最后跑测试用例
