前端网络部分面试题

1.http状态码有那些?分别代表是什么意思?

1**信息,服务器收到请求,需要请求者继续执行操作

2**成功,操作被成功接收并处理

3**重定向,需要进一步的操作以完成请求

4**客户端错误,请求包含语法错误或无法完成请求

5**服务器错误,服务器在处理请求的过程中发生了错误

100 Continue继续。客户端应继续其请求

101 Switching Protocols切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议

200 K请求成功。一般用于GET与POST请求

201 Created已创建。成功请求并创建了新的资源

202 Accepted已接受。已经接受请求,但未处理完成

203 Non-Authoritative Information非授权信息。请求成功。但返回的meta信息不在原始的服务器,而是一个副本

204 No Content无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档

205 Reset Content重置内容。服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可通过此返回码清除浏览器的表单域

206 Partial Content部分内容。服务器成功处理了部分GET请求

300 Multiple Choices多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择

301 Moved Permanently永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替

302 Found临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI

303 See Other查看其它地址。与301类似。使用GET和POST请求查看

304 Not Modified未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源

305 Use Proxy使用代理。所请求的资源必须通过代理访问

306 Unused已经被废弃的HTTP状态码

307 Temporary Redirect临时重定向。与302类似。使用GET请求重定向

400 Bad Request客户端请求的语法错误,服务器无法理解

401 Unauthorized请求要求用户的身份认证

402 Payment Required保留,将来使用

403 Forbidden服务器理解请求客户端的请求,但是拒绝执行此请求

404 Not Found服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置”您所请求的资源无法找到”的个性页面

405 Method Not Allowed客户端请求中的方法被禁止

406 Not Acceptable服务器无法根据客户端请求的内容特性完成请求

407 Proxy Authentication Required请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权

408 Request Time-out服务器等待客户端发送的请求时间过长,超时

409 Conflict服务器完成客户端的PUT请求是可能返回此代码,服务器处理请求时发生了冲突

410 Gone客户端请求的资源已经不存在。410不同于404,如果资源以前有现在被永久删除了可使用410代码,网站设计人员可通过301代码指定资源的新位置

411 Length Required服务器无法处理客户端发送的不带Content-Length的请求信息

412 Precondition Failed客户端请求信息的先决条件错误

413 Request Entity Too Large由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个Retry-After的响应信息

414 Request-URI Too Large请求的URI过长(URI通常为网址),服务器无法处理

415 Unsupported Media Type服务器无法处理请求附带的媒体格式

416 Requested range not satisfiable客户端请求的范围无效

417 Expectation Failed服务器无法满足Expect的请求头信息

500 Internal Server Error服务器内部错误,无法完成请求

501 Not Implemented服务器不支持请求的功能,无法完成请求

502 Bad Gateway充当网关或代理的服务器,从远端服务器接收到了一个无效的请求

503 Service Unavailable由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中

504 Gateway Time-out充当网关或代理的服务器,未及时从远端服务器获取请求

505 HTTP Version not supported服务器不支持请求的HTTP协议的版本,无法完成处理

2.http请求头有哪些?

Accept:浏览器可接受的MIME类型。

Accept-Charset:浏览器可接受的字符集

Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip。Servlet能够向支持gzip的浏览器返回经gzip编码的HTML页面。许多情形下这可以减少5到10倍的下载时间。

Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。

Authorization:授权信息,通常出现在对服务器发送的WWW-Authenticate头的应答中。

Connection:表示是否需要持久连接。如果Servlet看到这里的值为“Keep-Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接),它就可以利用持久连接的优点,当页面包含多个元素时(例如Applet,图片),显著地减少下载所需要的时间。要实现这一点,Servlet需要在应答中发送一个Content-Length头,最简单的实现方法是:先把内容写入ByteArrayOutputStream,然后在正式写出内容之前计算它的大小。

Content-Length:表示请求消息正文的长度。

Cookie:这是最重要的请求头信息之一

From:请求发送者的email地址,由一些特殊的Web客户程序使用,浏览器不会用到它。

Host:初始URL中的主机和端口。

If-Modified-Since:只有当所请求的内容在指定的日期之后又经过修改才返回它,否则返回304“Not Modified”应答。

Pragma:指定“no-cache”值表示服务器必须返回一个刷新后的文档,即使它是代理服务器而且已经有了页面的本地拷贝。

Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。

User-Agent:浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非常有用。

UA-Pixels,UA-Color,UA-OS,UA-CPU:由某些版本的IE浏览器所发送的非标准的请求头,表示屏幕大小、颜色深度、操作系统和CPU类型。

3.HTTP1.0和HTTP1.1和HTTP2.0的区别

1 HTTP1.0和HTTP1.1的区别

1.1 长连接(Persistent Connection)

   HTTP1.1支持长连接和请求的流水线处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟,在HTTP1.1中默认开启长连接keep-alive,一定程度上弥补了HTTP1.0每次请求都要创建连接的缺点。HTTP1.0需要使用keep-alive参数来告知服务器端要建立一个长连接。

1.2 节约带宽

   HTTP1.0中存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能。HTTP1.1支持只发送header信息(不带任何body信息),如果服务器认为客户端有权限请求服务器,则返回100,客户端接收到100才开始把请求body发送到服务器;如果返回401,客户端就可以不用发送请求body了节约了带宽。

1.3 HOST

   在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname),HTTP1.0没有host域。随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址。HTTP1.1的请求消息和响应消息都支持host域,且请求消息中如果没有host域会报告一个错误(400 Bad Request)。

1.4缓存处理

   在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准,HTTP1.1则引入了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略。

1.5错误通知的管理

   在HTTP1.1中新增了24个错误状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。

2 HTTP1.1和HTTP2.0的区别
2.1 多路复用

     HTTP2.0使用了多路复用的技术,做到同一个连接并发处理多个请求,而且并发请求的数量比HTTP1.1大了好几个数量级。HTTP1.1也可以多建立几个TCP连接,来支持处理更多并发的请求,但是创建TCP连接本身也是有开销的。

2.2 头部数据压缩

   在HTTP1.1中,HTTP请求和响应都是由状态行、请求/响应头部、消息主体三部分组成。一般而言,消息主体都会经过gzip压缩,或者本身传输的就是压缩过后的二进制文件,但状态行和头部却没有经过任何压缩,直接以纯文本传输。随着Web功能越来越复杂,每个页面产生的请求数也越来越多,导致消耗在头部的流量越来越多,尤其是每次都要传输UserAgent、Cookie这类不会频繁变动的内容,完全是一种浪费。

   HTTP1.1不支持header数据的压缩,HTTP2.0使用HPACK算法对header的数据进行压缩,这样数据体积小了,在网络上传输就会更快。

2.3 服务器推送

   服务端推送是一种在客户端请求之前发送数据的机制。网页使用了许多资源:HTML、样式表、脚本、图片等等。在HTTP1.1中这些资源每一个都必须明确地请求。这是一个很慢的过程。浏览器从获取HTML开始,然后在它解析和评估页面的时候,增量地获取更多的资源。因为服务器必须等待浏览器做每一个请求,网络经常是空闲的和未充分使用的。

   为了改善延迟,HTTP2.0引入了server push,它允许服务端推送资源给浏览器,在浏览器明确地请求之前,免得客户端再次创建连接发送请求到服务器端获取。这样客户端可以直接从本地加载这些资源,不用再通过网络。

4. 从输入URL到浏览器显示页面发生了什么

1.在浏览器中输入url(解析IP地址)

2.应用层DNS解析域名

3.应用层客户端发送HTTP请求

4.传输层TCP传输报文(3次握手)

5.网络层IP协议查询MAC地址

6.数据到达数据链路层

7.服务器接收数据

8.服务器响应请求

9.服务器返回相应文件

5. 线程与进程的区别

a. 一个程序至少有一个进程,一个进程至少有一个线程

b. 线程的划分尺度小于进程,使得多线程程序的并发性高

c. 进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率

d. 每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制

e. 多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配

6. 列举IE与其他浏览器不一样的特性?

a. IE的排版引擎是Trident (又称为MSHTML)

b. Trident内核曾经几乎与W3C标准脱节(2005年)

c. Trident内核的大量 Bug等安全性问题没有得到及时解决

d. JS方面,有很多独立的方法,例如绑定事件的attachEvent、创建事件的createEventObject等

e. CSS方面,也有自己独有的处理方式,例如设置透明,低版本IE中使用滤镜的方式

7.简述同步和异步的区别

同步是阻塞模式,异步是非阻塞模式。

同步就是指一个进程在执行某个请求的时候,若该请求需要一段时间才能返回信息,那么这个进程将会一直等待下去,直到收到返回信息才继续执行下去;

异步是指进程不需要一直等下去,而是继续执行下面的操作,不管其他进程的状态。当有消息返回时系统会通知进程进行处理,这样可以提高执行的效率

8.http 和 https 有何区别?如何灵活使用?

http是HTTP协议运行在TCP之上。所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。

https是HTTP运行在SSL/TLS之上,SSL/TLS运行在TCP之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。此外客户端可以验证服务器端的身份,如果配置了客户端验证,服务器方也可以验证客户端的身份

9. 一次js请求一般情况下有哪些地方会有缓存处理?

a. 浏览器端存储

b. 浏览器端文件缓存

c. HTTP缓存304

d. 服务器端文件类型缓存

e. 表现层&DOM缓存

10. TCP与UDP的区别:

1.基于连接与无连接;
2.对系统资源的要求(TCP较多,UDP少);
3.UDP程序结构较简单;
4.流模式与数据报模式 ;
5.TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。

11安全问题

sql注入:利用引号截断sql语句

防御:用户输入进行过滤,sql语句预处理。

 

xss:理论上,所有可输入的地方没有对输入数据进行处理的话,都会存在XSS漏洞,漏洞的危害取决于攻击代码的威力,攻击代码也不局限于script(改变样式什么的)。(可以盗取用户cookie)

XSS攻击及防御

开发者对用户输入进行处理,个人不要随便点击连接。

vue、react等框架已经很好的预防了xss攻击,除非使用v-html将用户输入直接放到页面中。

 

csrf:伪造请求,冒充用户在站内的正常操作。

要完成一次CSRF攻击,受害者必须依次完成两个步骤:

1.登录受信任网站A,并在本地生成Cookie。

2.在不登出A的情况下,访问危险网站B。

12.TCP协议的三次握手与四次挥手

(1)TCP连接建立过程中采用“三次握手机制”

第一次握手:客户端发出连接请求报文段,其中将SYN标志位置为1表示要建立连接,选择一个初始序列号seq=x,不携带数据但消耗一个序号。之后TCP客户进程进入SYN-SENT(同步已发送)状态。

第二次握手:服务器收到连接请求报文段后,如同意建立连接,向客户端发送确认。在确认报文段中将SYN位和ACK位都置1,确认号是ack=x+1,选择一个初始序号seq=y,不携带数据但消耗一个序号。TCP服务器进程进入SYN-RCVD(同步收到)状态。

第三次握手:TCP客户进程收到服务器的确认后,检查ack是否是x+1,ACK是否是1。如果正确,向服务器发送确认报文段,其中ACK置1,确认号ack=y+1,序号seq=x+1,可以携带数据,但如果不携带数据则不消耗序号。服务器检查ack是否为y+1,ACK是否为1,如果正确则连接建立成功,客户端和服务器进入ESTABLISHED(已建立连接)状态。

(2)TCP连接释放过程中采用“四次挥手机制”

第一次挥手:客户端的应用进程发出连接释放报文段,停止发送数据。FIN置1,序号seq=u,是前面已经传送过的数据的最后一个字节的序号加1,不携带数据但消耗一个序号。客户端进入FIN-WAIT-1(终止等待1)状态,等待服务器的确认。

第二次挥手: 服务器收到连接释放报文段后发出确认。ACK置1,确认号ack=u+1,序号seq=v,是服务器前面已经传送过的数据的最后一个字节的序号加1。服务器进入CLOSE-WAIT(关闭等待)状态。从客户端到服务器的连接释放了。

客户端收到来自服务器端的确认后,进入FIN-WAIT-2(终止等待)状态,等待服务器发出连接释放报文段。

第三次挥手:若服务器已经没有要向客户端发送的数据,发出连接释放报文段。FIN置1,序号seq=w,确认号ack=u+1。服务器进入LAST-ACK(最后确认)状态,等待客户端的确认。

第四次挥手:客户端收到服务器的连接释放报文段后,发出确认。ACK置1,确认号ack=w+1,序号seq=u+1。进入TIME-WAIT(时间等待)状态,经过2MSL后,进入CLOSED状态。

服务器只要收到客户端发出的确认,就进入CLOSED状态。

13.TCP连接为什么需要三次握手?

客户端最后还要发送一次确认,主要是为了防止已失效的连接请求报文段突然又送到了服务器,产生错误。

假定客户端发出连接请求报文段,在某个网络结点长时间滞留,延误到连接释放以后的某个时间才到达服务器。这是一个早已失效的报文段,但服务器收到后会误以为客户端又发出一次新的连接请求,于是向客户端发出确认报文段,同意建立连接。假定不采用第三次握手,新的连接就建立了。

由于现在客户端并没有发出建立连接的请求,因此不会理睬服务器的确认,但服务器却误以为新的连接已经建立,一直等待客户端发数据,服务器的资源被浪费。但如果采用三次握手的方法,客户端不会向服务器发出确认,就不会建立连接。

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值