阿里 全栈开发(AI) 一面
- 时间
- 2026-08
- 来源
- 牛客网
《面试题目》
- 请做一下自我介绍
- TCP 半连接队列和全连接队列溢出时,服务端分别会出现什么现象?
- 服务端收到 SYN 后,会为尚未完成握手的连接保存状态,这部分连接位于半连接队列。三次握手完成、但应用还没有执行 accept 的连接位于全连接队列。
- 半连接队列溢出常见于 SYN 洪泛、网络抖动或服务端参数过小。Linux 可以使用 SYN Cookie,在不保存完整半连接状态的情况下编码必要信息。全连接队列溢出则通常说明应用接收连接不够快,可能是线程阻塞、事件循环卡顿或监听队列太小。
- 排查时不能只看 CPU。还要观察 SYN 重传、ListenOverflows、ListenDrops、连接建立延迟以及应用的 accept 速率。单纯调大 somaxconn 只能提高缓冲能力,无法解决应用长期处理不过来的问题。
- TCP 出现大量 TIME_WAIT 时,为什么不能直接通过缩短等待时间解决?
- TIME_WAIT 通常由主动关闭连接的一方进入,其作用是让旧连接中的延迟报文在网络中消失,并保证对端重传 FIN 时仍能收到 ACK。直接大幅缩短时
《参考解析》
- 并发问题应先明确共享状态和一致性边界,再选择锁、CAS或队列。线程池需要根据任务是CPU密集还是IO密集设置核心线程数、队列容量和拒绝策略,并监控活跃数与队列长度。
- TCP通过三次握手建立连接、四次挥手释放连接;HTTPS在TLS握手中协商会话密钥,并用证书校验服务端身份,数据传输阶段主要使用对称加密。