网络通信面试题集锦

  1. TCP/IP协议栈层次结构

  2. TCP三次握手需要知道的细节点

  3. TCP四次挥手需要知道的细节点(CLOSE_WAIT、TIME_WAIT、MSL)

  4. TCP与UDP的区别与适用场景

  5. linux常见网络模型详解(select、poll与epoll)

  6. epoll_event结构中的epoll_data_t的fd与ptr的使用场景

  7. Windows常见的网络模型详解(select、WSAEventSelect、WSAAsyncSelect)

  8. Windows上的完成端口模型(IOCP)

  9. 异步的connect函数如何编写

  10. select函数可以检测网络异常吗?

  11. epoll的水平模式和边缘模式

  12. 如何将socket设置成非阻塞的(创建时设置与创建完成后设置),非阻塞socket与阻塞的socket在收发数据上的区别

  13. send/recv(read/write)返回值大于0、等于0、小于0的区别

  14. 如何编写正确的收数据代码与发数据代码

  15. 发送数据缓冲区与接收数据缓冲区如何设计

  16. socket选项SO_SNDTIMEO和SO_RCVTIMEO

  17. socket选项TCP_NODELAY

  18. socket选项SO_REUSEADDR和SO_REUSEPORT(Windows平台与linux平台的区别)

  19. socket选项SO_LINGER

  20. shutdown与优雅关闭

  21. socket选项SO_KEEPALIVE

  22. 关于错误码EINTR

  23. 如何解决tcp粘包问题

  24. 信号SIGPIPE与EPIPE错误码

  25. gethostbyname阻塞与错误码获取问题

  26. 心跳包的设计技巧(保活心跳包与业务心跳包)

  27. 断线重连机制如何设计

  28. 如何检测对端已经关闭

  29. 如何清除无效的死链(端与端之间的线路故障)

  30. 定时器的不同实现及优缺点

  31. http协议的具体格式

  32. http head、get与post方法的细节

  33. http代理、socks4代理与socks5代理如何编码实现

  34. ping

  35. telnet

关于以上问题的答案,有兴趣可以参考我的知乎live:https://www.zhihu.com/lives/922110858308485120

或者如果你有任何不明白的地方,可以加我微信 easy_coder 交流。