面试高频 30 题
中间件面试就考这些,点开展开看答案。覆盖 Nginx/Kafka/Redis/RabbitMQ/分布式事务/ELK/Zabbix。
1. Nginx 为什么高并发性能好?
查看答案
事件驱动+非阻塞 I/O(epoll),一个 worker 同时处理几千连接;sendfile 零拷贝;异步非阻塞。
2. Nginx location 匹配优先级?
查看答案
= 精确 > ^~ 前缀 > ~/~* 正则 > 普通前缀 > / 兜底。
3. Nginx 负载均衡策略有哪些?
查看答案
轮询(默认)、加权轮询、ip_hash(会话粘滞)、least_conn(最少连接)。
4. Nginx 反向代理为什么要 proxy_set_header?
查看答案
不传的话后端拿到的 RemoteAddr 是 Nginx 的 IP,日志统计和限流都废。三件套:Host、X-Real-IP、X-Forwarded-For。
5. Kafka 为什么这么快?
查看答案
顺序写磁盘(比随机写快100倍)、零拷贝 sendfile、批量发送、分区并行、页缓存。
6. Kafka 怎么保证消息不丢?
查看答案
生产者 acks=all + retries;Broker 副本因子>=2 + min.insync.replicas=2;消费者手动提交 offset。
7. Kafka 怎么保证消息顺序?
查看答案
同一 key 哈希到同一 Partition,Partition 内有序。全局有序只能单 Partition。
8. Kafka 的 ISR 是什么?
查看答案
In-Sync Replicas,和 Leader 保持同步的副本集合。Leader 挂了从 ISR 里选新 Leader。
9. Kafka 的消费者重平衡(rebalance)是什么?
查看答案
消费者组内成员变化(新增/宕机)或 Partition 数变化时,重新分配 Partition 给消费者。期间消费暂停。
10. RabbitMQ 和 Kafka 怎么选?
查看答案
高吞吐/日志/大数据管道选 Kafka;企业可靠消息/复杂路由/低延迟选 RabbitMQ。
11. RabbitMQ 的 Exchange 类型?
查看答案
Direct(直连)、Fanout(广播)、Topic(模式匹配)、Headers(头匹配)。
12. RabbitMQ 延迟队列怎么实现?
查看答案
TTL + 死信队列(DLX):消息进无人消费的队列,TTL 到了变死信,路由到真正处理的队列。
13. Redis 为什么快?
查看答案
纯内存操作;单线程避免上下文切换;IO 多路复用 epoll;高效数据结构(跳表/压缩列表)。
14. Redis 缓存穿透/击穿/雪崩?
查看答案
穿透=查不存在→布隆过滤器;击穿=热点key过期→互斥锁/永不过期;雪崩=大量key同时过期→随机TTL+集群+熔断。
15. Redis 分布式锁怎么实现?
查看答案
SET key value NX PX 过期时间,value 设 UUID,释放用 Lua 脚本先比较再删。生产用 Redisson(自动续期)。
16. Redis 持久化 RDB vs AOF?
查看答案
RDB 快照恢复快但可能丢数据;AOF 日志数据安全但恢复慢。生产用混合模式(RDB+AOF)。
17. Redis 主从复制原理?
查看答案
全量同步(bgsave RDB 文件传输)+ 增量同步(复制积压缓冲区)。主写从同步。
18. Redis Sentinel 干什么?
查看答案
监控主从,主挂了自动选新主并通知客户端。三个 Sentinel 节点投票,quorum 法定人数。
19. Redis Cluster 哈希槽?
查看答案
16384 个槽,CRC16(key) % 16384 算槽,槽分布到各节点。MOVED 重定向到正确节点。
20. CAP 定理实际怎么选?
查看答案
P 必保,CP(ZooKeeper)或 AP(Eureka/Nacos)。互联网系统选 AP + 最终一致。
21. 2PC 的问题?
查看答案
同步阻塞、协调者单点故障、Commit 阶段可能数据不一致。
22. TCC 三问是什么?
查看答案
空回滚(Try没到Cancel到了)、幂等(Confirm/Cancel可能重复)、悬挂(Cancel先到Try后到)。
23. Seata AT 模式原理?
查看答案
一阶段直接提交本地事务+记录 undo log;二阶段成功删 undo log,失败用 undo log 生成反向 SQL 回滚。
24. Tomcat 调优要点?
查看答案
JVM:Xms=Xmx、G1GC;连接器:maxThreads、acceptCount;关 enableLookups;开 compression。
25. Tomcat 集群 Session 怎么共享?
查看答案
Nginx + ip_hash 会话粘滞(简单但单点风险);或 Session 放 Redis 共享(推荐)。
26. ES 为什么搜得快?
查看答案
倒排索引(词→文档列表),分片并行,近实时刷新。
27. ELK 架构是什么?
查看答案
Filebeat 采集 → Logstash 过滤解析 → Elasticsearch 存储搜索 → Kibana 可视化。
28. Zabbix 核心概念?
查看答案
Host/Item/Trigger/Action/Template。监控项定义查什么,触发器定义告警阈值,动作定义告警方式。
29. Prometheus 和 Zabbix 区别?
查看答案
Zabbix 推模型+MySQL存储;Prometheus 拉模型+自带时序库+PromQL+K8s 自动发现。
30. TLS 握手过程?
查看答案
Client Hello → Server Hello+证书 → 验证证书+密钥交换 → Finished 加密通信。TLS 1.3 只要 1 RTT。