HTTP、浏览器面试题

一、http和https的区别?

①HTTP是未加密的,明文的。https是http和ssl协议构建的加密的协议。

②https需要ca证书,费用较高。

③连接的端口不同 http是80端口号,https是443端口号。

④HTTP的连接时无状态的,gttps较安全。

二、三次握手?

①为什么要进行三次握手?

因为要使得双方都可以进行收发。

第一次握手:C端向S端发送连接请求。

第二次握手:S端确认收到C端发来的报文。

第三次握手:C端确认S端收到了自己的报文,并且确定自己可以收到S端的报文。

三、UDP和TCP的区别?

①TCP面向连接,提供可靠连接,面向字节流,只支持1对1连接

②UDP不面向连接,提供不可靠连接,面向保温,支持1对多,1对1。

四、HTTP请求的HAED方式?

类似与get,但是不同的时HEAD不返回具体的内容,只返回请求头。

五、BOM对象?

BOM:浏览器对象  location对象 、history对象、navigator对象

location对象:

①location.href()  返回或设置当前文档的URL

②location.hash()  返回URL#之后的内容

history对象:

①history.go(num)  前进或后退页数

②history.back()   后退一页

③history.foword()  前进一页

navigator对象:

①navigator.userAgent -- 返回用户代理头的字符串表示(就是包括浏览器版本信息等的字符串)
②navigator.cookieEnabled -- 返回浏览器是否支持(启用)cookie

六、http状态码

①1**  信息

100:继续访问

②2** 成功

200:请求成功

201:已创建资源。

202:已接受,但还没有处理

③3** 重定向

301URL已转移

④4** 客户端错误

401:请求语法错误

402:没有权限

403:禁止访问

404:找不到页面

⑤5**  服务器端错误

500:服务器内部错误

503:超载或在维修

七、cookie、localStorage、sessionStorage的区别?

相同:都是存储在浏览器端

①存储大小不同

cookie是4KB,session和local是5MB。

②生命周期不同

cookie可设置过期时间,如果不设置就是页面级的。local是长期存储,除非手动删除。session是页面级存储,关闭页面则消失。

③请求参数不同

cookie每次都会带http头,其他二者不需要

④实用性

cookie没有自己的api需要开发人员自己进行封装 getCookie、setCookie。其他二者都有自己的api,setItem()、getItem()

八、Doctype的作用?

告诉浏览器应该用何种模式来解析文档。

有严格模式,混杂模式。

严格模式:W3C的标准模式。  混杂模式:浏览器自己的模式。

九、addEventListener参数

addEventListener(event,function,useCopture)

event:事件    function:触发时执行的函数   useCopture:true为事件冒泡,false为事件捕获

十、HTTP的缓存机制?

①根据HTTP响应报文的缓存标识符进行缓存      有强制缓存和协商缓存。

强制缓存:浏览器缓存中存在缓存结果和标识符。

协商缓存:强制缓存失效之后再向服务端发送请求的过程。返回304表示资源没有更新。返回200表示资源已更新。

②强制缓存的字段expires和cache-Control    协商缓存字段:last-Modified/If-Modified-Since   Etag/If-None-Match

总结:强制缓存是优于协商缓存的,若强制缓存生效则直接用缓存,若失效则进行协商缓存。

协商缓存由服务器端决定是否使用缓存。304继续使用缓存。200重新获取缓存。

十一、POST和GET的区别?

①get的信息是在url中的,所以不安全,并且有长度限制。

②post的信息实在请求体内的,所以较安全,没有长度限制

十二、在输入URL之后,页面会发生什么?

①过程:输入url→查看缓存(浏览器缓存、系统缓存、路由器缓存。若有缓存直接显示页面内容)→DNS服务器(解析出IP地址)→发起HTTP请求(TCP连接)→服务端进行响应→绘制页面

②详细过程:输入URL后,浏览器先查看缓存,若有缓存则直接显示页面内容。如果没有缓存则查询DNS服务器找到IP地址。然后浏览器向服务端发起HTTP请求、tcp连接。服务端返回请求结果。

根据返回的结果解析文档,先解析HTML文档构建DOM树,遇到<link><style>标签构建CSSOM树,最后在结合DOM树和CSSSOM树生成Render渲染树。若在解析过程中遇到js文件就会停止DOM树的构建,直到js文件加载并解析完成后再继续DOM树的构建。因为js会改变DOM结构。

③重绘和回流:js代码可以修改和访问dom节点和css,所以再解析js的过程中会导致页面的重新布局和渲染。

原文地址:https://www.cnblogs.com/babilong/p/13765280.html