前端面试题之http/HTML/浏览器(一)

1.cookie sessionStorage localStorage区别?
答:

cookie数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来回传递

cookie数据还有路径(path)的概念,可以限制。cookie只属于某个路径下

存储大小限制也不同,cookie数据不能超过4K,同时因为每次http请求都会携带cookie,所以cookie只适合保存很小的数据,如回话标识。

webStorage虽然也有存储大小的限制,但是比cookie大得多,可以达到5M或更大

数据的有效期不同sessionStorage:仅在当前的浏览器窗口关闭有效;localStorage:始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据;cookie:只在设置的cookie过期时间之前一直有效,即使窗口和浏览器关闭

作用域不同sessionStorage:不在不同的浏览器窗口中共享,即使是同一个页面;localStorage:在所有同源窗口都是共享的;cookie:也是在所有同源窗口中共享的。


2.cookie session区别?

答:

1.cookie数据存放在客户的浏览器上,session数据放在服务器上。

2.cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
考虑到安全应当使用session。

3.session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用COOKIE。

4. 单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

3.介绍知道的http返回的状态码?

答:

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

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

200   OK    请求成功。一般用于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协议的版本,无法完成处理。


4.http常用请求头?

协议头

说明

Accept

可接受的响应内容类型(Content-Types)。     

Accept-Charset

可接受的字符集

Accept-Encoding

可接受的响应内容的编码方式。   

Accept-Language

可接受的响应内容语言列表

Accept-Datetime

可接受的按照时间来表示的响应内容版本

Authorization

用于表示HTTP协议中需要认证资源的认证信息

Cache-Control

用来指定当前的请求/回复中的,是否使用缓存机制。

Connection

客户端(浏览器)想要优先使用的连接类型

Cookie

由之前服务器通过Set-Cookie(见下文)设置的一个HTTP协议Cookie

Content-Length

以8进制表示的请求体的长度

Content-MD5

请求体的内容的二进制 MD5 散列值(数字签名),以 Base64 编码的结果

Content-Type

请求体的MIME类型 (用于POST和PUT请求中)

Date

发送该消息的日期和时间(以RFC 7231中定义的"HTTP日期"格式来发送)    

Expect

表示客户端要求服务器做出特定的行为

From

发起此请求的用户的邮件地址

Host

表示服务器的域名以及服务器所监听的端口号。如果所请求的端口是对应的服务的标准端口(80),则端口号可以省略。

If-Match

仅当客户端提供的实体与服务器上对应的实体相匹配时,才进行对应的操作。主要用于像 PUT 这样的方法中,仅当从用户上次更新某个资源后,该资源未被修改的情况下,才更新该资源。

If-Modified-Since

允许在对应的资源未被修改的情况下返回304未修改

If-None-Match

允许在对应的内容未被修改的情况下返回304未修改( 304 Not Modified ),参考 超文本传输协议 的实体标记

If-Range

如果该实体未被修改过,则向返回所缺少的那一个或多个部分。否则,返回整个新的实体

If-Unmodified-Since

仅当该实体自某个特定时间以来未被修改的情况下,才发送回应。

Max-Forwards

限制该消息可被代理及网关转发的次数。

Origin

发起一个针对跨域资源共享的请求(该请求要求服务器在响应中加入一个Access-Control-Allow-Origin的消息头,表示访问控制所允许的来源)。   

Pragma

与具体的实现相关,这些字段可能在请求/回应链中的任何时候产生。

Proxy-Authorization

用于向代理进行认证的认证信息。

Range

表示请求某个实体的一部分,字节偏移以0开始。

Referer

表示浏览器所访问的前一个页面,可以认为是之前访问页面的链接将浏览器带到了当前页面。Referer其实是Referrer这个单词,但RFC制作标准时给拼错了,后来也就将错就错使用Referer了。

TE

浏览器预期接受的传输时的编码方式:可使用回应协议头Transfer-Encoding中的值(还可以使用"trailers"表示数据传输时的分块方式)用来表示浏览器希望在最后一个大小为0的块之后还接收到一些额外的字段。

User-Agent      

浏览器的身份标识字符串

Upgrade

要求服务器升级到一个高版本协议。

Via

告诉服务器,这个请求是由哪些代理发出的。

Warning      

一个一般性的警告,表示在实体内容体中可能存在错误。

5.强缓存、协商缓存什么时候用哪个?

答:因为服务器上的资源不是一直固定不变的,大多数情况下它会更新,这个时候如果我们还访问本地缓存,那么对用户来说,那就相当于资源没有更新,用户看到的还是旧的资源;所以我们希望服务器上的资源更新了浏览器就请求新的资源,没有更新就使用本地的缓存,以最大程度的减少因网络请求而产生的资源浪费。


6.前端优化有哪些策略?

答:

降低请求量:合并资源,减少HTTP请求数,minify/gzip压缩,webP,lazyLoad。

加快请求速度:预解析DNS,减少域名数,并行加载,CDN 分发。

缓存:HTTP协议缓存请求,离线缓存manifest,离线数据缓存localStorage。

渲染:JS/CSS优化,加载顺序,服务端渲染,pipeline。

7.GET和POST的区别?

答:

get参数通过url传递,post放在request body中。

get请求在url中传递的参数是有长度限制的,而post没有。

get比post更不安全,因为参数直接暴露在url中,所以不能用来传递敏感信息。

get请求只能进行url编码,而post支持多种编码方式

get请求会浏览器主动cache,而post支持多种编码方式。

get请求参数会被完整保留在浏览历史记录里,而post中的参数不会被保留。

GET和POST本质上就是TCP链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。

GET产生一个TCP数据包;POST产生两个TCP数据包。



8.HTTP支持的方法?

答:

GET, POST, HEAD, OPTIONS, PUT, DELETE, TRACE, CONNECT


9.如何画一个三角形?

答:

三角形原理:边框的均分原理

div {width:0px;height:0px;border-top:10px solid red;border-right:10px solid transparent;border-bottom:10px solid transparent;border-left:10px solid transparent;}


10.状态码304和 200?

答:

状态码200:请求已成功,请求所希望的响应头或数据体将随此响应返回。即返回的数据为全量的数据,如果文件不通过GZIP压缩的话,文件是多大,则要有多大传输量。

状态码304:如果客户端发送了一个带条件的 GET 请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个状态码。即客户端和服务器端只需要传输很少的数据量来做文件的校验,如果文件没有修改过,则不需要返回全量的数据。



11.说一下浏览器缓存?

答:

缓存分为两种:强缓存和协商缓存,根据响应的header内容来决定。

强缓存相关字段有expires,cache-control。如果cache-control与expires同时存在的话,cache-control的优先级高于expires。

协商缓存相关字段有Last-Modified/If-Modified-Since,Etag/If-None-Match。

12.html5新增的元素?

答:

首先html5为了更好的实践web语义化,增加了header,footer,nav,aside,p等语义化标签,在表单方面,为了增强表单,为input增加了color,emial,data,range等类型,在存储方面,提供了sessionStorage,localStorage,和离线存储,通过这些存储方式方便数据在客户端的存储和获取,在多媒体方面规定了音频和视频元素audio和vedio,另外还有地理定位,canvas画布,拖放,多线程编程的web worker和websocket协议。



13.在地址栏里输入一个URL,到这个页面呈现出来,中间会发生什么?

答:

输入url后,首先需要找到这个url域名的服务器ip,为了寻找这个ip,浏览器首先会寻找缓存,查看缓存中是否有记录,缓存的查找记录为:浏览器缓存-》系统缓存-》路由器缓存,缓存中没有则查找系统的hosts文件中是否有记录,如果没有则查询DNS服务器,得到服务器的ip地址后,浏览器根据这个ip以及相应的端口号,构造一个http请求,这个请求报文会包括这次请求的信息,主要是请求方法,请求说明和请求附带的数据,并将这个http请求封装在一个tcp包中,这个tcp包会依次经过传输层,网络层,数据链路层,物理层到达服务器,服务器解析这个请求来作出响应,返回相应的html给浏览器,因为html是一个树形结构,浏览器根据这个html来构建DOM树,在dom树的构建过程中如果遇到JS脚本和外部JS连接,则会停止构建DOM树来执行和下载相应的代码,这会造成阻塞,这就是为什么推荐JS代码应该放在html代码的后面,之后根据外部央视,内部央视,内联样式构建一个CSS对象模型树CSSOM树,构建完成后和DOM树合并为渲染树,这里主要做的是排除非视觉节点,比如script,meta标签和排除display为none的节点,之后进行布局,布局主要是确定各个元素的位置和尺寸,之后是渲染页面,因为html文件中会含有图片,视频,音频等资源,在解析DOM的过程中,遇到这些都会进行并行下载,浏览器对每个域的并行下载数量有一定的限制,一般是4-6个,当然在这些所有的请求中我们还需要关注的就是缓存,缓存一般通过Cache-Control、Last-Modify、Expires等首部字段控制。Cache-Control和Expires的区别在于Cache-Control使用相对时间,Expires使用的是基于服务器 端的绝对时间,因为存在时差问题,一般采用Cache-Control,在请求这些有设置了缓存的数据时,会先 查看是否过期,如果没有过期则直接使用本地缓存,过期则请求并在服务器校验文件是否修改,如果上一次 响应设置了ETag值会在这次请求的时候作为If-None-Match的值交给服务器校验,如果一致,继续校验 Last-Modified,没有设置ETag则直接验证Last-Modified,再决定是否返回304。

14.常见的HTTP的头部?

答:

可以将http首部分为通用首部,请求首部,响应首部,实体首部。

通用首部表示一些通用信息,比如date表示报文创建时间,

请求首部就是请求报文中独有的,如cookie,和缓存相关的如if-Modified-Since。

响应首部就是响应报文中独有的,如set-cookie,和重定向相关的location,

实体首部用来描述实体部分,如allow用来描述可执行的请求方法,content-type描述主题类型,content-Encoding描述主体的编码方式



15.HTTP2.0 的特性?

答:

http2.0的特性如下:

1、内容安全,应为http2.0是基于https的,天然具有安全特性,通过http2.0的特性可以避免单纯使用https的性能下降。

2、二进制格式,http1.X的解析是基于文本的,http2.0将所有的传输信息分割为更小的消息和帧,并对他们采用二进制格式编码,基于二进制可以让协议有更多的扩展性,比如引入了帧来传输数据和指令。

3、多路复用,这个功能相当于是长连接的增强,每个request请求可以随机的混杂在一起,接收方可以根据request的id将request再归属到各自不同的服务端请求里面,另外多路复用中也支持了流的优先级,允许客户端告诉服务器那些内容是更优先级的资源,可以优先传输。

16.cache-control的值有哪些?

答:

cache-control是一个通用消息头字段被用于HTTP请求和响应中,通过指定指令来实现缓存机制,这个缓存指令是单向的,常见的取值有private、no-cache、max-age、must-revalidate等,默认为private。



17.浏览器在生成页面的时候,会生成那两颗树?

答:

构造两棵树,DOM树和CSSOM规则树

当浏览器接收到服务器相应来的HTML文档后,会遍历文档节点,生成DOM树。

CSSOM规则树由浏览器解析CSS文件生成。

注意本文的答案仅作为参考答案

关注公众号,后台回复“PDF001”,免费获取
计算机基础知识+操作系统核心笔记

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/358372.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Vulhub](WooYun-2016-199433)phpmyadmin反序列化漏洞

0x00 预备知识 什么是序列化 序列化 (serialize)是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。【将状…

用户指南接口

在AppDelegate在代码 视图控制器里的 版权声明:本文博客原创文章。博客,未经同意,不得转载。 转载于:https://www.cnblogs.com/bhlsheji/p/4747547.html

前端面试题之http/HTML/浏览器(二)

csrf和xss的网络攻击及防范?答:CSRF:跨站请求伪造,可以理解为攻击者盗用了用户的身份,以用户的名义发送了恶意请求,比如用户登录了一个网站后,立刻在另一个ta&#xff42…

查看目标主机安装的杀毒软件

命令: wmic /namespace:\\root\securitycenter2 path antivirusproduct GET displayName,productState, pathToSignedProductExe 参考链接:https://stackoverflow.com/questions/42472336/is-there-a-command-to-check-if-there-was-any-antivirus-insta…

Netty系列之Netty百万级推送服务设计要点

原文:http://www.infoq.com/cn/articles/netty-million-level-push-service-design-points 1. 背景 1.1. 话题来源 最近很多从事移动互联网和物联网开发的同学给我发邮件或者微博私信我,咨询推送服务相关的问题。问题五花八门,在帮助大家答疑…

上架APPStore需要准备哪些材料?

前端时间用敏捷式开发平台开发了一款APP应用,应用名称我就不说啦,这篇文章主要讲述一下上架苹果应用商店APPStore需要准备哪些材料,有相关的困扰欢迎私信我。一、上架流程1. 注册苹果企业账号2. 创建测试证书,发布证书 (使用Mac)3…

浅谈C++设计模式之工厂方法(Factory Method)

为什么要用设计模式?根本原因是为了代码复用,增加可维护性。 面向对象设计坚持的原则:开闭原则(Open Closed Principle,OCP)、里氏代换原则(Liskov Substitution Principle,LSP&…

上架Android应用到腾讯应用包、百度手机助手、华为应用市场、小米应用商店、阿里应用分发平台需要准备哪些材料?...

前端时间用敏捷式开发平台开发了一款APP应用,应用名称我就不说啦,这篇文章主要讲述一下上架各大安卓应用商店(腾讯应用宝、阿里应用商店、百度手机助手、华为应用市场、小米应用商店)需要准备哪些材料,有相关的困扰欢迎…

【APICloud系列|18】上架Android应用到腾讯应用包、百度手机助手、华为应用市场、小米应用商店、阿里应用分发平台需要准备哪些材料?

前端时间用敏捷式开发平台开发了一款APP应用,应用名称我就不说啦,这篇文章主要讲述一下上架各大安卓应用商店(腾讯应用宝、阿里应用商店、百度手机助手、华为应用市场、小米应用商店)需要准备哪些材料,有相关的困扰欢迎私信我。 一、应用商店选择 推荐平台(六选五) 1.…

Activiti 6中的可插拔持久性

在过去的几年中,我们经常听到(来自社区和我们的客户)关于如何将Activiti的持久性逻辑从关系数据库交换到其他内容的请求。 当我们宣布Activiti 6时, 我们做出的承诺之一就是我们将实现这一目标。 深入研究Activiti引擎代码的人会…

src漏洞类型总结

本文转载于https://blog.csdn.net/qq_33942040/article/details/111831536 这三类存在漏洞可能更大 越他娘丑的站,越有可能存在洞。 Asp aspx 存在漏洞的可能更大 登陆口没得验证码的可能存在一,未授权访问 常见28种服务器或者中间协议未授权访问 易出现处 ①照片…

【APICloud系列|19】上架APPStore需要准备哪些材料?

前端时间用敏捷式开发平台开发了一款APP应用,应用名称我就不说啦,这篇文章主要讲述一下上架苹果应用商店APPStore需要准备哪些材料,有相关的困扰欢迎私信我。 一、上架流程 1. 注册苹果企业账号 2. 创建测试证书,发布证书 (使用Mac) 3. 使用xcode 上传应用到APP Store (…

Json注入

一、Json简介 JSON 是存储和交换文本信息的语法,是轻量级的文本数据交换格式。类似xml,但JSON 比 XML 更小、更快,更易解析。所以现在接口数据传输都采用json方式进行。JSON 文本的 MIME 类型是 “application/json”。 json语法 数据在名…

国行 lg g3 D858 刷 lg g3 D858hk 教程(备忘)

纯手打,转载请注明出处~ 刷机有风险,出现问题概不负责! 本着自娱自乐的宗旨 ,分享一下,出了问题不负责! 准备的材料: 1,手机一枚(废话)国行lg g3 d858 2&am…

渗透测试-验证码的爆破与绕过

【验证码机制原理】 客户端发起请求->服务端响应并创建一个新的SessionID同时生成随机验证码,将验证码和SessionID一并返回给客户端->客户端提交验证码连同SessionID给服务端->服务端验证验证码同时销毁当前会话,返回给客户端结果。 【客户端可…

最近对项目代码做的一些更改和感想

最近对项目代码做了一些更改,主要的改动是对整个界面框架的改变,因为以前写代码的时候,为了完成功能,没有从上帝视角来思考软件的界面设计,完全是需要这个功能了,怎么可以做到?好,就…

CSS常见的四种垂直居中的方法

面试中不管是笔试题还是面试题,一般很容易被问到如何实现垂直水平居中,这里总结四种方法作为参考 (1)margin:auto法 css: div{ width: 400px; height: 400px; position: relative; border: 1px solid #465468; } img{ position: absolute; margin: auto; top: 0; left: 0; …

对安卓应用进行加固签名,为上架各大应用市场做准备

上架安卓各大应用市场之前需要对自己的应用进行签名加固,签名是为了证明你是这个应用的开发者,软著也是一种方式,这是不做介绍,加固是为了从安全角度给安装包加一个保护层,防止被恶意破解及攻击。下面简单介绍一下签名…

大前端最强vscode教程(基础篇)

这段时间入职了一家外包公司的前端工程师岗位,前端编辑器用起来,前端一般会用到几个编译器,VScode、sublime text3、webstorm、Hbuid等,这里主要介绍VScode. 初次使用vscode时各种不适应,所有需要用到的功能貌似都需要单独安装插件才能用。这让很多初次使用vscode的朋友有…

edusrc0day挖掘技巧

网瑞达web资源管理系统0day ps: 作为在edusrc的小白,经常看见大师傅们的刷屏,我也很向往能像大师们一样有一次刷屏的机会,于是有了这一次的渗透之旅。 思路:要想刷屏上分,就得找系统来挖掘,对…