0%

10道大厂面试必考题

2020年3月31日 下午9:42

资料

大会演讲PPT合集
10 道大厂面试必考的计算机网络问题_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili

问题:

  1. 请详细介绍下TCP的三次握手机制,为什么要三次握手?
    1. 为什么要有握手?
      1. 动画讲解TCP,再不懂请来打我
      2. 第一,为了确认双方的接收与发送能力是否正常。
      3. 第二,指定自己的初始化序列号,为后面的可靠传送做准备。
      4. 第三,如果是 https 协议的话,三次握手这个过程,还会进行数字证书的验证以及加密密钥的生成到。
    2. 为什么是三次?为什么不是四次?
      1. TCP中建立连接的过程是三次握手
        1. client发出第三次握手后,不等待server返回,就直接断开连接了
      2. 连接断开的过程是四次握手
        1. 发起端发出第三次握手后,还得等待server返回,在这个过程中是连接的半打开状态,被动端处于close_wait状态,被动端可以向主动端发送消息,并且主动端是可以接收的。在linux,这个半打开连接状态可以是无限时长
  2. 简单介绍下HTTP协议中缓存的处理流程?
    1. 缓存的应用流程是什么?
      1. 304 与 200的区别:
        1. 304:如果服务器验证摘要没有发生变化,那么我们直接返回304,此时是返回的http是没有body的,这样就节省了带宽
        2. 200:如果服务器验证摘要发生变化,那么我们需要在返回的body中添加新的摘要信息

    2. 与缓存相关的HTTP头部有哪些?
  3. 在地址栏键入URL后,网络世界发生么什么?
    1. 这是一道开放的题,可以进行多角度的回答:讲述正向、反向、DNS的过程,转换为http协议头,计算机网络分层结构、每一个层的作用
  4. 使用HTTP长连接有哪些优点?
    1. 减少握手次数
    2. 减少慢启动时间
    3. 缺点:因为http长连接是依靠于单个tcp,而在单个tcp中文档中的每个字段在服务端接受的时候需要严格的顺序,串行的文件传输。这样就会导致大量的重传。
  5. CLOSE_WAIT状态产生的原因?
  6. 介绍下多播是怎样实现的?
    1. 多播是依靠UDP来实现的,TCP是一对一的连接,不能使用
    2. 使用了多播以后,可以降低client在内存中的数据拷贝,极大的节省了client的效率,这部分拷贝是让网络中的支持多播的路由器等设备进行拷贝。
  7. 服务器的最大并发连接数是多少?
    1. 详解Linux服务器最大tcp连接数 - 陌上归人的博客 - 博客园
    2. server端tcp连接4元组中只有remote ip(也就是client ip)和remote port(客户端port)是可变的,因此最大tcp连接为客户端ip数×客户端port数,对IPV4,不考虑ip地址分类等因素,最大tcp连接数约为2的32次方(ip数)×2的16次方(port数),也就是server端单机最大tcp连接数约为2的48次方
  8. TCP和UDP协议该如何选择?
    1. 老师在视频里讲解了多个场景
  9. TLS/SSL协议是如何保障信息安全的?
  10. HTTP2协议有哪些优点?
    1. Http系列(二) Http2中的多路复用 - 掘金
    2. 从 Http/0.9 到 Http/2 要发送多个请求,从多个 Tcp 连接=>keep-alive=>管道化=>多路复用不断的减少多次创建 Tcp 等等带来的性能损耗。
    3. 多个 Tcp 连接
      1. 在最早的时候没有keep-alive只能创建多个Tcp连接来做多次请求。多次 http 请求效果如下图所示:
      2. 一次请求完成就会关闭本次的 Tcp 连接,下个请求又要从新建立 Tcp 连接传输完成数据再关闭,造成很大的性能损耗。
    4. Keep-Alive
      1. Keep-Alive解决的核心问题是: 一定时间内,同一域名多次请求数据,只建立一次 HTTP 请求,其他请求可复用每一次建立的连接通道,以达到提高请求效率的问题。
      2. Keep-Alive# 还是存在如下问题:
        • 串行的文件传输。
        • 同域并行请求限制带来的阻塞(6~8)个
    5. 管线化
      1. HTTP 管线化可以克服同域并行请求限制带来的阻塞,它是建立在持久连接之上,是把所有请求一并发给服务器,但是服务器需要按照顺序一个一个响应,而不是等到一个响应回来才能发下一个请求,这样就节省了很多请求到服务器的时间。
      2. 不过,HTTP 管线化仍旧有阻塞的问题,若上一响应迟迟不回,后面的响应都会被阻塞到。
    6. 多路复用
      1. 多路复用代替原来的序列和阻塞机制。所有就是请求的都是通过一个 TCP 连接并发完成。因为在多路复用之前所有的传输是基于基础文本的,在多路复用中是基于二进制数据帧的传输、消息、流,所以可以做到乱序的传输。多路复用对同一域名下所有请求都是基于流,所以不存在同域并行的阻塞。多次请求如下图:
    7. 总结:
      1. 在 HTTP/2 中,有两个非常重要的概念,分别是帧(frame)和流(stream)
      2. 帧代表着最小的数据单位,每个帧会标识出该帧属于哪个流,流也就是多个帧组成的数据流
      3. HTTP2 采用二进制数据帧传输,取代了 HTTP1.x 的文本格式,二进制格式解析更高效

收获:

  1. 在面试的时候,要知道面试官问题的这个问题对应与哪几个知识点
  2. 很多题是开放性的,可以从多个角度进行分析
    1. 在地址栏键入 URL 后,网络世界发生了什么?
    2. 这个问题就是最典型的可以多角度分析的问题
  3. 并发是一个很好的总结这些网络知识的角度,尤其对于大厂来说