HTTP/HTML/浏览器(一)

2020-06-08  本文已影响0人  席小超

目录

1、说一下http和https
2、tcp三次握手,一句话概括
3、TCP和UDP的区别
4、WebSocket的实现和应用
5、HTTP请求的方式,HEAD方式
6、一个图片url访问后直接下载怎样实现?
7、说一下web Quality(无障碍)
8、几个很实用的BOM属性对象方法?
9、说一下HTML5 drag api
10、说一下http2.0
11、补充400和401、403状态码
12、fetch发送2次请求的原因
13、Cookie、sessionStorage、localStorage的区别
14、说一下web worker
15、对HTML语义化标签的理解
16、iframe是什么?有什么缺点?
17、Doctype作用?严格模式与混杂模式如何区分?它们有何意义?
18、Cookie如何防范XSS攻击
19、Cookie和session的区别
20、一句话概括RESTFUL
21、讲讲viewport和移动端布局
22、click在ios上有300ms延迟,原因及如何解决?
23、addEventListener参数

1.说一下http和https

https的SSL加密是在传输层实现的
1、http和https的基本概念

2、http和https的区别?

http传输的数据都是未加密的,也就是明文的,网景公司设置了SSL协议来对http协议传输的数据进行加密处理,简单来说https协议是由http和ssl协议构建的可进行加密传输和身份认证的网络协议,比http协议的安全性更高。

主要的区别如下:

3、https协议的工作原理

4、https协议的优点

5、https协议的缺点


2.tcp三次握手,一句话概括

客户端和服务端都需要直到各自可收发,因此需要三次握手

简化三次握手
从图片可以得到三次握手可以简化为:

C发起请求连接S确认,也发起连接C确认我们再看看每次握手的作用:
第一次握手:S只可以确认自己可以接受C发送的报文段
第二次握手:C可以确认S收到了自己发送的报文段,并且可以确认自己可以接受S发送的报文段
第三次握手:S可以确认C收到了自己发送的报文段


3.TCP和UDP的区别

  1. TCP是面向连接的,UDP是无连接的即发送数据前不需要先建立链接。
  2. TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,既不保证可靠交付。并且因为tcp可靠,面向连接,不会丢失数据因此适合大数据量的交换
  3. TCP是面向字节流,UDP面向报文,并且网络出现拥塞不会使得发送速率降低(因此会出现丢包,对实时的应用比如IP电话和视频会议等)
  4. TCP只能是1对1的,UDP支持1对1,1对多。
  5. TCP的首部较大为20字节,而UDP只有8字节
  6. TCP是面向连接的可靠性传输,而UDP是不可靠的。

4.WebSocket的实现和应用

  1. 什么是WebSocket?

WebSocket是HTML5中的协议,支持持久连接,http协议不支持持久性连接。HTTP1.0和HTTP1.1都不支持持久性的连接,HTTP1.1中的keep-alive,将多个http请求合并为1个

  1. WebSocket是什么样的协议,具体有什么优点?

HTTP的生命周期通过Request来界定,也就是Request一个Response,那么在Http1.0协议中,这次Http请求就结束了。在Http1.1中进行了改进,是的有一个connection:Keep-alive,也就是说,在一个Http连接中,可以发送多个Request,接收多个Response。但是必须记住,在Http中一个Request只能对应有一个Response,而且这个Response是被动的,不能主动发起

WebSocket是基于Http协议的,或者说借用了Http协议来完成一部分握手,在握手阶段与Http是相同的。我们来看一个websocket握手协议的实现,基本是2个属性,upgrade,connection。

基本请求如下:

GET /chat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13
Orgin: http://example.com

多了下面2个属性:

Upgrade: websocket
Connection: Upgrade

告诉服务器发送的websocket

Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13

5.HTTP请求的方式,HEAD方式


6.一个图片url访问后直接下载怎样实现?

请求的返回头里面,用于浏览器解析的重要参数就是OSS的API文档里面的返回http头,决定用户下载行为的参数。

下载的情况如下:

x-oss-object-type: Normal //第1种
x-oss-request-id: 598D5ED34F29D01FE2925F41 //第2种
x-oss-storage-class: Standard //第3种

7.说一下web Quality(无障碍)

能够被残障人士使用的网站才能称得上一个易用的(易访问的)网站。
残障人士指的是那些带有残疾或者身体不健康的用户。

使用alt属性:

<img src="person.jpg"  alt="this is a person"/>

有时候浏览器会无法显示图像。具体的原因有:

如果您使用了alt 属性,那么浏览器至少可以显示或读出有关图像的描述。


8.几个很实用的BOM属性对象方法?

什么是Bom? Bom是浏览器对象。有哪些常用的Bom属性呢?

  1. location对象
  1. history对象
  1. Navigator对象

9.说一下HTML5 drag api


10.说一下http2.0

首先补充一下,http和https的区别,相比于http,https是基于ssl加密的http协议
简要概括:http2.0是基于1999年发布的http1.0之后的首次更新。


11.补充400和401、403状态码

  1. 400状态码:请求无效

产生原因:

解决方法:

  1. 401状态码:当前请求需要用户验证
  2. 403状态码:服务器已经得到请求,但是拒绝执行

12. fetch发送2次请求的原因

fetch发送post请求的时候,总是发送2次,第一次状态码是204,第二次才成功?


13.Cookie、sessionStorage、localStorage的区别

共同点:都是保存在浏览器端,并且是同源的

Cookie:
cookie数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来回传递。而sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。cookie数据还有路径(path)的概念,可以限制cookie只属于某个路径下,存储的大小很小只有4K左右。
(key:可以在浏览器和服务器端来回传递,存储容量小,只有大约4K左右)

sessionStorage:
仅在当前浏览器窗口关闭前有效,自然也就不可能持久保持,localStorage:始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据;cookie只在设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭。
(key:本身就是一个回话过程,关闭浏览器后消失,session为一个回话,当页面不同即使是同一页面打开两次,也被视为同一次回话)

localStorage:
localStorage 在所有同源窗口中都是共享的;cookie也是在所有同源窗口中都是共享的。
(key:同源窗口都会共享,并且不会失效,不管窗口或者浏览器关闭与否都会始终生效)

补充说明一下cookie的作用:
保存用户登录状态。例如将用户id存储于一个cookie内,这样当用户下次访问该页面时就不需要重新登录了,现在很多论坛和社区都提供这样的功能。 cookie还可以设置过期时间,当超过时间期限后,cookie就会自动消失。因此,系统往往可以提示用户保持登录状态的时间:常见选项有一个月、三个 月、一年等。

跟踪用户行为。

例如一个天气预报网站,能够根据用户选择的地区显示当地的天气情况。如果每次都需要选择所在地是烦琐的,当利用了cookie后就会显得很人性化了,系统能够记住上一次访问的地区,当下次再打开该页面时,它就会自动显示上次用户所在地区的天气情况。因为一切都是在后 台完成,所以这样的页面就像为某个用户所定制的一样,使用起来非常方便定制页面。如果网站提供了换肤或更换布局的功能,那么可以使用cookie来记录用户的选项,例如:背景色、分辨率等。当用户下次访问时,仍然可以保存上一次访问的界面风格。


14.说一下web worker

在HTML页面中,如果在执行脚本时,页面的状态是不可相应的,直到脚本执行完成后,页面才变成可相应。web worker是运行在后台的js,独立于其他脚本,不会影响页面你的性能。并且通过postMessage将结果回传到主线程。这样在进行复杂操作的时候,就不会阻塞主线程了。

如何创建web worker:


15.对HTML语义化标签的理解

HTML5语义化标签是指正确的标签包含了正确的内容,结构良好,便于阅读,比如nav表示导航条,类似的还有article、header、footer等等标签。


16. iframe是什么?有什么缺点?


17.Doctype作用?严格模式与混杂模式如何区分?它们有何意义?


18.Cookie如何防范XSS攻击

XSS(跨站脚本攻击)是指攻击者在返回的HTML中嵌入javascript脚本,为了减轻这些攻击,需要在HTTP头部配上,set-cookie:httponly-这个属性可以防止XSS,它会禁止javascript脚本来访问cookie。


19.Cookie和session的区别

HTTP是一个无状态协议,因此Cookie的最大的作用就是存储sessionId用来唯一标识用户


20. 一句话概括RESTFUL

就是用URL定位资源,用HTTP描述操作


21.讲讲viewport和移动端布局

可以参考以下文章:响应式布局的常用解决方案对比(媒体查询、百分比、rem和vw/vh)


22.click在ios上有300ms延迟,原因及如何解决?

  1. 粗暴型,禁用缩放
<meta name="viewport" content="width=device-width, user-scalable=no">
  1. 利用FastClick,其原理是:
    检测到touchend事件后,立刻出发模拟click事件,并且把浏览器300毫秒之后真正出发的事件给阻断掉

23.addEventListener参数

addEventListener(event, function, useCapture)

其中,event指定事件名;function指定要事件触发时执行的函数;useCapture指定事件是否在捕获或冒泡阶段执行。

本篇面试题源自于牛客网前端基础

上一篇下一篇

猜你喜欢

热点阅读