http面试题

6、服务器收到处理的请求,将数据返回至游览器

7、游览器收到http响应。

8、游览器解析响应。如果响应可以缓存,则存入缓存

9、游览器发送请求获取嵌入在HTML中的资源(html,css,JavaScript,图片,音乐等),对于未知类型,会弹出对话框

10、游览器发送异步请求

11、页面全部渲染结束。(前端的话,还要细谈渲染过程)

2、GET和POST的区别:

2、GET和POST的区别:

#这个问题。我相信只要你说你做过接口测试,基本上都被问到过。

简单来说:GET产生一个TCP数据包,POST产生两个TCP数据包

严格的说:对于GET方式的请求,游览器会把http header和data一并发送出去,服务器响应200(返回数据);

而对于POST请求。游览器先发送header,服务器响应100 continue,游览器再发送data,服务器响应200 ok(返回数据)

  • GET请求的参数是放在请求的URL中,而POST方法是放在请求体中

  • GET请求在URL中传递参数时会有长度限制,而POST无限制(不是绝对的,只是相对来说)

  • GET请求会被浏览器主动缓存,而POST不会

  • GET请求的参数会保存在浏览器中,而POST的参数不会保存在浏览器中

 3、cookies机制和session机制的区别:

1、cookies数据保存在客户端。session数据保存在服务端

2、cookies可以减轻服务器压力,但是不安全,容易进行cookies欺骗

3、session安全一点,但是占用服务器资源。

4、http和https的区别:

#与问题2一样,这个只要你说你接触过接口,基本上就会问的。

HTTPS = HTTP + SSL

1、https有ca证书,http一般没有

2、http是超文本传输协议,信息是明文传输。https则是具有安全性的ssl加密传输协议

3、http默认80端口,https默认443端口。

5、说说网络分层里七层模型是哪七层

应用层:允许访问OSI环境的手段

表示层:对数据进行翻译、加密和压缩

会话层:建立、管理和终止会话

传输层:提供端到端的可靠报文传递和错误恢复

网络层:负责数据包从源到宿的传递和网际互连

物理层:通过媒介传输比特,确定机械及电气规范

6**、TCP和UDP的区别**

  • TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来

  • UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去!UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境

 7、关于Http 2.0 你知道多少

  • HTTP/2引入了“服务端推(server push)”的概念,它允许服务端在客户端需要数据之前就主动地将数据发送到客户端缓存中,从而提高性能。

  • HTTP/2提供更多的加密支持

  • HTTP/2使用多路技术,允许多个消息在一个连接上同时交差。

  • 它增加了头压缩(header compression),因此即使非常小的请求,其请求和响应的header都只会占用很小比例的带宽

8.用什么解析成IP?

(1)浏览器会检查缓存中有没有这个域名对应的解析过的IP地址,如果缓存中有,这个解析过程就结束。

(2).如果用户浏览器缓存中没有数据,浏览器会查找操作系统缓存中是否有这个域名对应的DNS解析结果。

(3)如果没有找到,在本地域名服务器(最近的一台DNS服务器)中查询IP地址

(4)如果没有找到,本地域名服务器会向根域名服务器发送一个请求

(5)如果根域名服务器中也不存在该域名,但判定这个域名属于“com”域,则本地域名服务器会向com顶级域名服务器发送一个请求

(6)如果com顶级域名服务器没有找到该域名,但判定这个域名属于“google.com”域,则本地域名服务器会向google.com域名服务器发送一个请求,以此类推

(7)直到本地域名服务器得到域名对应的IP地址,并将其缓存到本地,供下次查询使用

9、什么是HTTP持久化和管线化?

  • HTTP持久化是针对HTTP无连接的特点进行改进的,使用的是keep-live首部字段保持长连接

  • HTTP管线化是针对HTTP每次只能是请求一次回答一次的模式进行改进,使得可以连续发送多次请求。

10、SSL有几次握手?具体过程是怎样的?

这个问题和HTTPS的实现原理可以看做是一样的,但是比较有针对性,以下是回答:

SSL有4次握手,握手过程为:

  1. 客户端请求SSL连接

  2. 服务端发送包含公钥的证书

  3. 客户端使用公钥加密对称秘钥并发送给服务端

  4. 服务端使用私钥解密对称秘钥

11.断点续传的原理


Range:用于客户端到服务端的请求,可以通过改字段指定下载文件的某一段大小及其单位,字节偏移从0开始。典型格式:

Ranges: (unit=first byte pos)-[last byte pos]

Ranges: bytes=4000- 下载从第4000字节开始到文件结束部分

Ranges: bytes=0~N 下载第0-N字节范围的内容

Ranges: bytes=M-N 下载第M-N字节范围的内容

Ranges: bytes=-N 下载最后N字节内容

If-Range:用于客户端到服务端的请求,用于判断实体是否发生改变,必须与Range配合使用。若实体未被修改,则响应所缺少的那部分;否则,响应整个新的实体。

Accept-Ranges:用于server到client的应答,client通过该自段判断server是否支持断点续传。

Accept-Ranges:bytes 表示支持以bytes为单位进行传输。

Accept-Ranges:none 表示不支持断点续传

Content-Ranges:用于sever到client的应答,与Accept-Ranges在同一个报文内,通过该字段指定了返回的文件资源的字节范围。格式如下:

Content-Ranges:bytes M-N/size 大小为size的文件的第M-N字节范围的内容

12、强缓存和协商缓存的命中和管理

  1. 1)浏览器在加载资源时,先根据这个资源的一些http header判断它是否命中强缓存,强缓存如果命中,浏览器直接从自己的缓存中读取资源,不会发请求到服务器。比如某个css文件,如果浏览器在加载它所在的网页时,这个css文件的缓存配置命中了强缓存,浏览器就直接从缓存中加载这个css,连请求都不会发送到网页所在服务器;

  2. 2)当强缓存没有命中的时候,浏览器一定会发送一个请求到服务器,通过服务器端依据资源的另外一些http header验证这个资源是否命中协商缓存,如果协商缓存命中,服务器会将这个请求返回,但是不会返回这个资源的数据,而是告诉客户端可以直接从缓存中加载这个资源,于是浏览器就又会从自己的缓存中去加载这个资源;

  3. 3)强缓存与协商缓存的共同点是:如果命中,都是从客户端缓存中加载资源,而不是从服务器加载资源数据;区别是:强缓存不发请求到服务器,协商缓存会发请求到服务器。

  4. 4)当协商缓存也没有命中的时候,浏览器直接从服务器加载资源数据。

  5. 关于强缓存:
    1. 浏览器第一次跟服务器请求一个资源,服务器在返回这个资源的同时,在respone的header加上Cache-Control的header
  6. 浏览器在接收到这个资源后,会把这个资源连同所有response header一起缓存下来;

  7. 浏览器再请求这个资源时,先从缓存中寻找,找到这个资源后,根据它第一次的请求时间和Cache-Control设定的有效期,计算出一个资源过期时间,再拿这个过期时间跟当前的请求时间比较,如果请求时间在过期时间之前,就能命中缓存,否则就不行。

  8. 如果缓存没有命中,浏览器直接从服务器加载资源时,Cache-Control Header在重新加载的时候会被更新。

  9. 浏览器第一次跟服务器请求一个资源,服务器在返回这个资源的同时,在respone的header加上Expires的header

  10. 浏览器在接收到这个资源后,会把这个资源连同所有response header一起缓存下来(所以缓存命中的请求返回的header并不是来自服务器,而是来自之前缓存的header);

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
6o-1715456790366)]

[外链图片转存中…(img-zQWAXjxf-1715456790367)]

[外链图片转存中…(img-4oLoHtFV-1715456790367)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 7
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
http socket tcp 是指通过socket建立TCP连接进行网络通信的一种方式。下面是对该面试的回答。 TCP(传输控制协议)是一种面向连接的协议,它提供了可靠的、字节流形式的数据传输。HTTP(超文本传输协议)是一种应用层协议,它基于TCP协议,用于在Web上进行通信。 Socket是一种抽象层,它在应用层与传输层之间提供了一个接口。通过socket,应用程序可以通过TCP协议与其他计算机进行通信。 首先,HTTP是构建于TCP协议之上的,它使用TCP协议来实现可靠的数据传输。当浏览器发送一个HTTP请求时,它会通过TCP协议与服务器建立一个socket连接。然后,浏览器通过TCP连接向服务器发送HTTP请求报文。服务器收到请求报文后,会通过TCP连接向浏览器发送HTTP响应报文。最后,浏览器通过TCP连接接收响应报文并显示在界面上。 在这个过程中,socket被用于建立和维护TCP连接。通过socket,应用程序可以通过TCP协议进行数据传输。通常,一个socket连接包括服务器的IP地址和端口号,以及客户端的IP地址和端口号。 总结来说,通过socket建立的TCP连接是为了实现HTTP协议的可靠数据传输。在Web上,大部分应用都是基于HTTP协议的,因此socket和TCP在Web开发中扮演着非常重要的角色。理解socket、TCP和HTTP之间的关系,对于进行网络编程和解决网络通信问非常有帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值