【网络】个人70场面试精选50题
网络原理
- tcp、udp区别
- 三次握手的作用?
- 四次挥手的过程中如果处在timewait状态的请求较多,会有什么结果?要怎么解决这个问题?你在项目中是怎么解决?
- tcp连接如何判断对方已经断开?
- 为什么recv=0判断对方断开连接?
- tcp和udp套接字能共用一个端口吗?
- CLOSE_WAIT和TIME_WAIT是什么?
- 一个进程退出后,它所占用的端口如何被释放?
- 说说Tcp三次握手过程,为什么是三次?两次行不行?
- 说说Tcp四次挥手过程,三次行不行?
- TIME_WAIT状态有什么用?TIME_WAIT为什么要设置为至少两倍的MSL时间
- 讲讲Tcp滑动窗口(流量控制)和 慢启动(拥塞控制)
- Tcp是如何实现可靠性传输的?
- Tcp粘包怎么处理?
- 什么是连接半打开,半关闭状态?
- 什么是MTU、MSS以及为什么要有MSS?
- 对端异常掉线,本端调用 write 函数向 socket 写入数据,会出现什么情况?
- tcp连接建立之后有一方突然宕机或者进程崩溃了,另一方什么状态?
- 为什么要有 QUIC?
- 举例,如何用 udp 实现可靠传输?
网络编程
- select、poll、epoll
- epoll的ET、LT、EPOLLONESHOT、惊群效应
- 讲一下协程,调度策略
- socket通信的主要过程,哪些函数会阻塞,close会阻塞吗
- epoll为什么用红黑树而不用b+树
- TCP的accept()函数发生在第几次握手?
- 你刚刚说accept会阻塞,有没有不阻塞的方法?
- epoll在不考虑服务器内存 网卡的情况下最大支持多少并发?
- recv()函数返回值,什么错误是可以接受的?
- 如果LT模式下epoll一直通知可写怎么办?
- 什么是文件描述符fd?
- udp套接字为什么要进行connect?
- socket()、bind()、listen()、accept()是怎么实现的?
- recv() 和send()做了什么事情