二十、网络与协议篇
51. TCP三次握手与四次挥手的详细过程及状态变迁?
答案:
- 三次握手:
- SYN:客户端发送
SYN=1, seq=x
→ 状态SYN_SENT
。 - SYN+ACK:服务端回复
SYN=1, ACK=1, seq=y, ack=x+1
→ 状态SYN_RCVD
。 - ACK:客户端发送
ACK=1, seq=x+1, ack=y+1
→ 双方进入ESTABLISHED
。
- SYN:客户端发送
- 四次挥手:
- FIN:主动方发送
FIN=1, seq=u
→ 进入FIN_WAIT_1
。 - ACK:被动方回复
ACK=1, ack=u+1
→ 主动方进入FIN_WAIT_2
,被动方进入CLOSE_WAIT
。 - FIN:被动方发送
FIN=1, seq=v
→ 进入LAST_ACK
。 - ACK:主动方回复
ACK=1, ack=v+1
→ 双方关闭连接。
- FIN:主动方发送
52. HTTP/2的核心优化特性?
答案:
- 多路复用:一个TCP连接并行处理多个请求,解决队头阻塞。
- 头部压缩:HPACK算法压缩HTTP头部,减少冗余传输。
- 服务器推送:服务端主动推送资源(如CSS/JS),减少客户端请求。
- 二进制分帧:数据以二进制帧传输,解析高效且扩展性强。
二十一、数据库进阶篇
53. MySQL的索引失效场景及优化方案?
答案:
- 失效场景:
- 对索引列使用函数或运算(如
WHERE YEAR(create_time)=2023
)。 - 模糊查询以
%
开头(如LIKE '%keyword'
)。 - 联合索引未遵循最左前缀原则。
- 对索引列使用函数或运算(如
- 优化方案:
- 避免索引列参与计算,改为范围查询。
- 使用覆盖索引或全文索引优化模糊查询。
- 调整联合索引顺序,高频查询条件放在左侧。
54. Redis持久化机制RDB与AOF的优缺点对比?
答案:
特性 | RDB(快照) | AOF(追加日志) |
---|---|---|
数据完整性 | 可能丢失最后一次快照后的数据 | 可配置为秒级同步,数据更安全 |
恢复速度 | 快(直接加载二进制文件) | 慢(需重放日志) |
磁盘占用 | 小(压缩存储) | 大(日志文件持续增长) |
适用场景 | 容忍分钟级数据丢失,追求快速恢复 | 要求高数据可靠性,可接受性能损耗 |
二十二、设计模式与架构
55. 分布式系统CAP理论的实际应用取舍?
答案:
- CA:传统单机数据库(如MySQL),放弃分区容忍性(无分布式)。
- AP:多数NoSQL(如Cassandra、Eureka),允许短暂数据不一致。
- CP:强一致性系统(如ZooKeeper、Etcd),牺牲可用性保证一致性。
56. 微服务拆分的原则及常见陷阱?
答案:
- 拆分原则:
- 单一职责:按业务领域(如用户、订单、支付)拆分。
- 数据自治:服务独占数据库,通过API通信。
- 演进式拆分:初期粗粒度,逐步细化。
- 常见陷阱:
- 过度拆分导致调用链复杂(可用分布式链路追踪解决)。
- 分布式事务处理不当(最终一致性代替强一致性)。
二十三、云原生与DevOps
57. Kubernetes的Pod调度策略有哪些?
答案:
- 节点亲和性(NodeAffinity):优先调度到特定节点(如SSD磁盘节点)。
- Pod亲和性/反亲和性(PodAffinity):同一拓扑域部署或避免共存。
- 污点与容忍(Taints/Tolerations):节点标记“污点”,Pod需声明容忍才能调度。
- 资源限制:通过
requests
和limits
控制CPU/内存分配。
58. Docker镜像优化最佳实践?
答案:
- 多阶段构建:分离编译环境和运行环境,减小镜像体积。
- 最小化基础镜像:使用Alpine Linux等轻量镜像。
- 合并RUN指令:减少层数,利用缓存加速构建。
- 清理无用文件:删除临时文件、缓存和依赖包。
二十四、算法与数据结构
59. 快速排序的稳定性及时间复杂度分析?
答案:
- 稳定性:不稳定(相同元素可能交换位置)。
- 时间复杂度:
- 平均:
O(n log n)
。 - 最坏(已排序数组):
O(n²)
,可通过随机选择基准值优化。
- 平均:
60. LRU缓存淘汰算法的实现思路?
答案:
- 数据结构:双向链表(维护访问顺序) + 哈希表(快速定位节点)。
- 操作逻辑:
- 访问数据:若存在则移动到链表头部。
- 插入数据:若满则删除链表尾部节点,新节点加入头部。
- Java实现:可直接用
LinkedHashMap
(重写removeEldestEntry
方法)。
二十五、前沿技术探索
61. Service Mesh的核心组件及作用?
答案:
- 数据平面(Data Plane):如Envoy代理,处理服务间通信(流量控制、熔断)。
- 控制平面(Control Plane):如Istio,管理策略(路由规则、安全认证)。
62. Serverless架构的优缺点及适用场景?
答案:
- 优点:按需计费、免运维、自动扩缩容。
- 缺点:冷启动延迟、调试复杂、状态管理困难。
- 适用场景:事件驱动型任务(图片处理、定时任务)、低频访问应用。