三次握手是为了确认双方的收发能力都没有问题,四次挥手是确保数据都发送完了才结束 18. 为什么 TCP 第二次握手的 SYN 和 ACK 要合并成一次?
分开两次发送,浪费资源 19. SYN Flood 的原理?有哪些防范的方法?
客户端发送三次握手的第一个 SYN 报文后收到服务器的报文却不回应,从而导致服务器的半开资源浪费直到超时释放
可以使用 SYN Cookie,即通过将源目地址及 IP 地址和端口号哈希为序列号,将返回的 ACK-1 得到原来的序列号判断是否正确,直到连接建立才分配资源
上面三个问题问了十多分钟。看起来简单,但面试官会顺着你的思路一直往下问,问得特别深,差点给问崩了。
下面问了几个 C++ 的问题。字节不是用 go 吗? 1. 智能指针有哪些?主要解决什么问题?
shared_ptr:解决资源忘记释放的内存泄漏问题,及悬空指针问题
unique_ptr:对象对其有唯一所有权
weak_ptr:和 shared_ptr 搭配,不会增加引用计数,用于避免循环引用(比如 a 对象持有 b 对象,b 对象持有 a 对象),这样必然会导致内存泄露
auto_ptr:时代的眼泪 2. 指针和引用的区别?为什么要引入引用?好处有哪些?