背景
又是一年一度的秋季校招开始了,以往的校招各个公司都会在公司现场或者学校现场安排学生进行现场面试?但是今年由于疫情的原因,不允许让同学在现场进行一个面试,所以今年的面试形式就从线下转到了线上,面试形式的转变,但是我们考核学生的方式依旧没有转变。
校招的同学和社招的同学有很大的不同,他们没有丰富的工作经验,没有太多的项目经历,那么我们如何去衡量一个校招的同学呢?那就是基础和潜力,怎么去理解基础呢?俗话说不积跬步,无以至千里,不积小流,无以成江海,如果没有一个好的基础那么怎么才能成为一个优秀的工程师呢。如何去考察一个学生基础的好坏呢?我觉得有三个方面比较重要,计算机网络,操作系统以及算法和数据结构,通常来说计网考察得特别多,常见的一些问题:
网络模型分层
TCP和UDP的区别
TCP三次握手和四次挥手
HTTP各版本的区别
上面列举的问题只是其中一部分,这些问题基本在上课的书本中找到答案,如果你这些都不会那么只能说基础算是比较差了。由于这次是视频面试,我通常会问你觉得牛客网的视频面试是用的TCP还是UDP呢?在我揭晓答案之前大家也可以想想使用的是哪个网络协议,在面试的过程中所有的同学都回答了应该是使用的是UDP。我问为什么使用UDP?基本都会回答道UDP是一个无连接的协议,不用保证可靠性,传输速度快。我又问道如果UDP不保证可靠性,咱们在视频面试的时候我问你问题,如果你回答问题的视频流丢包了,那么你的答案我就听不见了,那视频面试的体验将会非常低。不少同学在这个时候就会改答案说那应该使用的是TCP吧,我这是又会问道TCP由于需要保证可靠性,但是在公网的复杂环境下,想必应该经常会出现缓冲或者卡顿的现象吧,很多同学这个时候就会哑口无言了。
其实这个问题的答案不难想出,我们可以将TCP和UDP的特性互相结合起来,让这个协议既可以保证可靠性,又可以保证实时性,这也就是我们所说的RUDP((Reliable UDP),常见的RUDP协议有QUIC,WebRTC,Aeron等等,我这里主要介绍谷歌提出的QUIC,带大家领略一下RUDP的精彩,看看他们是如何既能做到可靠又能保证效率。
QUIC
QUIC(Quick UDP Internet Connection)是Google公司提出的基于UDP的高效可靠协议,他和HTTP一样同样是应用层协议。
为什么高效呢?是因为其基于无连接的UDP而不是基于TCP去实现