腾讯QQ后台开发部门一面面经

  1. TCP 和 UDP 区别(答案烂大街了,略)
  1. UDP 和 TCP 的数据包有最大长度限制吗?

    ——UDP包分为包头和正文, 包头共有64位(8字节),分别是16位源端口,16位目的端口,16位UDP包长度和16位校验和.因此UDP包正文的 最大长度是2^16 - 1=65535字节.【以太网帧的数据区最大长度为1500字节】

  1. TCP 分段 和 IP 分段,UDP 会分段吗

    ——TCP分段的原因是MSS,IP分片的原因是MTU,由于一直有MSS<=MTU,很明显,分段后的每一段TCP报文段再加上IP首部后的长度不可能超过MTU,因此也就不需要在网络层进行IP分片了。因此TCP报文段很少会发生IP分片的情况。

    由于UDP数据报不会自己进行分段,因此当长度超过了MTU时,会在网络层进行IP分片。同样,ICMP(在网络层中)同样会出现IP分片情况。

    总结:UDP不会分段,就由IP来分。TCP会分段,当然就不用IP来分了!https://www.jianshu.com/p/f9a5b07d99a2)

  1. TCP TIME_WAIT 状态

    ——通信双方建立TCP连接后,主动关闭连接的一方就会进入TIME_WAIT 状态。

    如下图:客户端主动关闭连接时,会发送最后一个 ack 后,然后会进入TIME_WAIT状态,再停留 2 个 MSL 时间,进入 CLOSED 状态。

    img

    【为什么叫 FIN 包呢?因为是 finish 的 abbr】

    MSL:maximum segment lifetime (最大分节生命期),这是一个 IP 数据包能在互联网上生存的最长时间,超过这个时间 IP 数据包将在网络中消失 。MSL 在 RFC 1122上建议是2分钟,而源自berkeley的TCP实现传统上使用30秒。

    TIME_WAIT:状态维持时间,是两个 MSL 时间长度,也就是在 1-4 分钟。Windows 操作系统就是 4 分钟。

  1. 为什么建立连接协议是三次握手,而关闭连接却是四次握手?

    这是因为服务端的LISTEN状态下的SOCKET当收到SYN报文的建连请求后,它可以把ACK和SYN(ACK起应答作用,而SYN起同步作用)放在一个报文里来发送。但关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,所以你可以未必会马上会关闭SOCKET,也即你可能还需要发送一些数据给对方之后,再发送FIN报文给对方来表示你同意现在可以关闭连接了,所以它这里的ACK报文和FIN报文多数情况下都是分开发送的。

【建议:看看 TCP 的各个状态,参考 https://www.cnblogs.com/softidea/p/5741192.html】

  1. TCP 的半连接队列是什么?

    ——https://www.cnblogs.com/sidesky/p/6844228.html

  1. C++中的容器了解多少 —— https://blog.csdn.net/tju_fengbo/article/details/81978595

  2. C++ vector 是在头还是尾插入的?如果 C++ 要删除一个列表中的元素,会影响头指针还是尾指针

  3. C++ 中重载、重写的区别

  4. C++ 进程内存空间分布

  5. C++ 中指针和引用的区别

    对于指针来说,它是一个地址,这个地址是一个数值,那么就意味这个数值可以为0(空指针),也可以为其他,即指针可以不指向任何东西。

    对于引用来说,引用被称为变量的别名。一定是“某个存在物体”的别名,所以引用不能为空,即不能存在空引用。在声明引用的同时就要对它初始化,并且,引用一经声明,就不可以再和其它对象绑定在一起了。

    在底层,引用变量由指针按照指针常量的方式实现。

  1. mysql 怎样保障数据一致性
  1. 对于一个基本有序的数组进行排序用什么最快?

    —— 插入排序?求指正

  1. 红黑树中已经有n个数据,寻找某个key是否存在的时间复杂度为 logN (是一种平衡二叉树)。
  1. 进程间通信(IPC:Inter-Process Communication)的几种方式

    —— 管道、信号量(semophore)、消息队列、信号(signal)、共享内存、套接字

  1. Linux 对 IPC 的管理的命令

    ——https://www.cnblogs.com/wt645631686/p/9151029.html

  2. socket 编程的 epoll、select、poll 什么意思?

    ——https://blog.csdn.net/jyy305/article/details/73012706https://blog.csdn.net/wk_bjut_edu_cn/article/details/80669310

附:无意间看到的文章

  1. 看到一个讲排序的 blog ,动图很可
  2. topK 、BFPRT、KMP
  3. QQ 是怎么实现通信的
#面经##腾讯##校招##C++工程师#
全部评论
UDP最大64k,在网络层会拆成1500?
2 回复 分享
发布于 2020-08-12 00:50
msq带带我
1 回复 分享
发布于 2020-08-12 10:34
msq,太强了,不愧是逍遥子接班人
1 回复 分享
发布于 2020-08-16 19:22
楼主你好,请问你是实习、校招还是社招?岗位是什么?开发的话,是Java方向还是C++方向?或者其他语言方向~
点赞 回复 分享
发布于 2020-08-11 20:53
没有撕代码嘛
点赞 回复 分享
发布于 2020-08-11 21:40
马思琪带带我
点赞 回复 分享
发布于 2020-08-11 21:43
项目没有怎么问吗
点赞 回复 分享
发布于 2020-08-11 22:19
基本有序数组排序那个应该就是插入排序😂lz太强了
点赞 回复 分享
发布于 2020-08-11 23:38
马思琪无敌!!
点赞 回复 分享
发布于 2020-08-12 00:41
思琪棒棒哒
点赞 回复 分享
发布于 2020-08-12 08:22
msq带带我 
点赞 回复 分享
发布于 2020-08-12 09:15
点赞 回复 分享
发布于 2020-08-12 10:06
厉害厉害
点赞 回复 分享
发布于 2020-08-12 10:35
腾讯qq有java岗位吗
点赞 回复 分享
发布于 2020-08-12 11:08
阿里投了没,要内推吗
点赞 回复 分享
发布于 2020-08-12 12:50
快手试试不
点赞 回复 分享
发布于 2020-08-12 16:33
msq tql
点赞 回复 分享
发布于 2020-08-12 16:38
你太强了。我今天也面试了这个部门,被问到怀疑人生。
点赞 回复 分享
发布于 2020-08-12 21:22
见过最几把贴心的面试帖
点赞 回复 分享
发布于 2020-08-14 11:45
msq tql!
点赞 回复 分享
发布于 2020-08-16 14:22

相关推荐

34 299 评论
分享
牛客网
牛客企业服务