前端面试宝典总结(来源牛客)

  • 说一下http和https的区别
    • http和https的基本概念
    • http和https的区别
    • https协议的工作原理
    • https的优点
    • https的缺点
  • TCP和UDP的区别
  • WebSocket的实现和应用
    • 什么是WebSocket
    • WebSocket是什么样的协议,具体有什么优点
  • HTTP请求的方式,HEAD方式
  • 一个图片url访问后直接下载怎样实现
  • 几个很实用的BOM属性对象方法
    • location
    • history
    • navigation对象
  • 说一下HTML5 drag/api
  • 说一下http2.0
  • 补充400,401,403状态码
  • fetch发送两次请求的原因
  • Cookie、sessionStorage、localStorage的区别
    • Cookie
    • sessionStorage
    • localStorage
    • cookie的补充
  • 说一下Web worker
  • 对HTML5语义化标签的理解
  • iframe是什么?有什么缺点
  • Doctype作用?严格模式和混杂模式如何区分?它们有何意义?
  • Cookie如何防范XSS攻击
  • Click在ios上有300ms的延迟,该如何解决
  • addEventListener参数

说一下http和https的区别

http和https的基本概念

http:超文本传输协议,是互联网上最为广泛的一种传输协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从www服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,网络传输减少

https:是以安全为目标的http协议,简单讲就是http的安全版,在http下加入ssl层,http的安全基础是ssl,所以加密的详细内容就需要ssl
https的作用就是建立一个信息安全通道,来确保数组的传输,确保网站的真实性

http和https的区别

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

使用不同的链接方式,一般而言,http用的是80端口,https用的是443端口

https协议的工作原理

客户端在使用https预web服务器进行通信的时候,有以下几个步骤:

  1. 客户使用https url访问服务器,则要求服务器搭建ssl链接
  2. web服务器接收到客户端的请求后,会将网站的证书(包含公钥)返回或者说传输给客户端
  3. 客户端和web服务器开始协商ssl链接的安全等级,也就是加密等级
  4. 客户端浏览器通过协商一致的安全等级后,建立会话密钥,然后通过网站的公钥加密会话密钥,传输给网站
  5. web服务器会通过自己的私钥来解密出会话密钥
  6. 服务器会通过会话密钥加密与客户端之间的通信

https的优点

  1. 使用https协议可认证用户和服务器,确保数据发送到正确的客户机和服务器
  2. https协议是由ssl和http协议构建的可进行加密传输,身份认证的网络协议,可保证数据在传输过程中不被篡改、窃取,保证数据的完整性
  3. https是当下架构中最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本

https的缺点

  1. https握手比较费时,会使页面的加载时间延长50%,增加10-20%的耗电
  2. https缓存不如http高效,会增加数据开销
  3. ssl证书也需要钱,功能越强大的证书费用越高
  4. ssl协议需要绑定域名ip,不能再同一个IP上绑定多个域名,ipv4资源支持不了这种消耗

TCP和UDP的区别

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

WebSocket的实现和应用

什么是WebSocket

WebSocket是HTML5中的协议,支持持久连接,http协议不支持持久性连接

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

HTTP的生命周期通过request来界定,也就是一个Request对应一个Response,那么在http1.0协议中,这次的协议请求就算结束了。在http1.1中进行了改进,使得有一个keep-alive,可以发送多个Request和接收多个Response,但是请记住,一个Request对应一个Response,在http中永远是这样,并且Response是被动的,不能主动发起

HTTP请求的方式,HEAD方式

head:类似于get请求,只不过返回的响应中没有具体的内容,用户获取报头
options:允许客户端查看服务器的性能,比如说服务器支持的请求方式等

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

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

下载的情况下:

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

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

location

  1. location.href – 返回或设置文档的url

  2. location.search – 返回url中的查询字符串部分(?后面的部分相当于get请求的参数部分)

  3. location.hash – 返回url#后面的内容,如果没有#,则返回空

  4. location.host – 返回url中的域名部分,例如www.baidu.com

  5. location.hostname – 返回域名中的主域名部分,如baidu.com

  6. location.pathname – 返回域名后的部分,比如说https://blog.csdn.net/weixin_48337566/article/details/115613571
    中的
    /weixin_48337566/article/details/115613571

  7. location.port – 返回url中的端口部分

  8. location.protocol – 返回url中的协议部分,比如http:

  9. location.assign – 设置当前文档的url

  10. location.replace() – 设置当前文档的url并且在history对象的地址列表中移除了这个url

  11. location.reload() – 重启当前页面

history

  1. history.go() – 前进或者后退指定的页面数history.go(num)
  2. history.back() – 后退一页
  3. hostory.forward – 前进一页

navigation对象

  1. navigation.userAgent – 返回用户代替头的字符串表示(就是包含浏览器版本的字符串)
  2. navigation.cookieEnabled – 返回浏览器是否支持使用cookie

说一下HTML5 drag/api

  1. dragstart – 事件主体是被拖放元素,在开始拖放被拖放元素时触发
  2. drag – 事件主体时被拖放元素,在被拖放元素正在被拖放时触发
  3. dragenter – 事件主体是目标元素,在被拖放元素进入目标元素时触发
  4. dragover – 事件主体是目标元素,在被拖放元素在目标元素内移动时触发
  5. dragleave – 事件主体是目标元素,在被拖放元素移出目标元素时触发
  6. drop – 事件主体是目标元素,在目标元素完全接受被拖放元素时触发
  7. dragend – 事件主体是目标元素,在整个拖放操作结束时触发

说一下http2.0

简要概括:http2.0是基于1999年发布的http1.0后的首次更新

  1. 提升访问速度(请求资源所需时间更少,访问速度更快,相比于http1.0)
  2. 允许多路复用:多路复用允许同时通过单一的http连接发送多次请求-响应信息。改善了在http1.0中,浏览器客户端在同一时间,针对同一域名下的请求有一定的数量限制,超过限制会被阻塞
  3. 二进制分帧:http2.0会将所有的传输信息分隔为更小的信息或者帧,并对他们进行二进制编码

补充400,401,403状态码

  1. 400状态码:请求无效
    产生原因:前端提交的数据类型或者数据字段没有保持一致
    解决办法:对照字段的名称,确保字段的一致性,将obj对象通过JSON.stringfy实现序列化
  2. 401状态码:当前请求需要用户验证
  3. 403状态码:服务器已经得到请求,但是拒绝执行

fetch发送两次请求的原因

原因:因为使用fetch的post请求时,导致fetch第一次发送了一个Options请求,询问服务器是否支持修改的请求头,如果服务器支持,则在第二次中发送真正的请求

Cookie、sessionStorage、localStorage的区别

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

Cookie

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

sessionStorage

仅在当前浏览器窗口关闭前有效,自然也就不可能持久保持;而localStorage是始终有效,窗口或浏览器关闭也会一直有效;cookie只在设置的过期时间之前有效,即使窗口或者浏览器关闭

localStorage

localStorage在所有的同源窗口中都是共享的;cookie也是在所有的同源窗口中共享的

cookie的补充

  1. 保存用户登录状态
  2. 跟踪用户行为:例如分页和筛选地区查询天气预报的行为

说一下Web worker

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

对HTML5语义化标签的理解

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

iframe是什么?有什么缺点

定义:iframe元素会创建包含另一个文档的内联框架
提示:可以将提示文字放在<iframe></iframe>中,方便提示一些不支持iframe的浏览器
缺点:会阻塞主页面的onload事件,搜索引擎无法解读这种页面,ifame和主页面共享连接池,而浏览器对相同区域有限制所以会影响性能

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

Doctype声明于文档最前面,告诉浏览器以合中模式渲染页面,这里有两种模式,严格模式和混杂模式

严格模式的排版和js运作模式都是以浏览器支持的最高标准运行的

混杂模式,向后兼容,模拟老式浏览器,防止浏览器无法兼容页面

Cookie如何防范XSS攻击

XSS(跨站脚本攻击)是指攻击者在返回的html中嵌入js脚本,为了减轻这些进攻,需要在http头部上,设置cookie

httponly – 这个属性可以防止XSS,它会禁止js脚本来访问cookie

secure – 这个属性告诉浏览器仅在请求为https的时候发送cookie

Click在ios上有300ms的延迟,该如何解决

  1. 禁用缩放
  2. 使用FastClick,其原理是:检测到touchend事件后,立即发出模拟click事件,并且把浏览器300ms之后发出的事件给阻断掉

addEventListener参数

addEventListener(event, function, useCapture)

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

前端面试宝典总结(一)(搬自牛客)相关推荐

  1. 【前端面试宝典】计算机网络篇(1)

    写在前面 CSDN话题挑战赛第1期 活动详情地址:https://marketing.csdn.net/p/bb5081d88a77db8d6ef45bb7b6ef3d7f 参赛话题:前端面试宝典 话 ...

  2. 携手共筑前端面试宝典之JQUERY篇-王大师

    写在前面 本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,<Java王大师王天师>作者 公众号:山峯草堂,非技术多篇文章,专注于天道酬勤的 Java 开发问题.中国国学.传 ...

  3. < CSDN话题挑战赛第1期 - 前端面试宝典 >

    CSDN话题挑战赛第1期 活动详情地址:https://marketing.csdn.net/p/bb5081d88a77db8d6ef45bb7b6ef3d7f 参赛话题:前端面试宝典 话题描述:欢 ...

  4. 前端面试宝典。向未来开启计划

    写在前面 CSDN话题挑战赛第1期 活动详情地址:CSDN 参赛话题:前端面试宝典 话题描述:欢迎各位加入话题创作得小伙伴,如果我没有猜错得话,我觉得你是应该同我一样是一位前端人.如今前端在IT事业中 ...

  5. 【前端面试宝典】超基础的vue知识

    写在前面 CSDN话题挑战赛第1期 活动详情地址:https://marketing.csdn.net/p/bb5081d88a77db8d6ef45bb7b6ef3d7f 参赛话题:前端面试宝典 话 ...

  6. 中高级前端面试宝典之浏览器篇

    中高级前端面试宝典 作为一名前端开发工程师,要掌握的知识点是多而杂的,在面试刷题阶段,经常没头没脑的,我将面试题系统化,分了好几个系列,祝愿大家(包括我)在这个疫情刚过去的互联网寒冬找到事儿少钱多

  7. 前端面试宝典 html css js ajax es6

    面试宝典 一.HTML和CSS 1 1. 你做的页面在哪些流览器测试过?这些浏览器的内核分别是什么? 1 2. 每个HTML文件里开头都有个很重要的东西,Doctype,知道这是干什么的吗? 1 3. ...

  8. web前端面试宝典——带你直击面试重难点(40个经典题目,涵盖近90%的考点,码字2w,干货满满!)

    系列文章目录 JavaScript 知识梳理,收录了web前端面试 95%以上 的高频考点,满满的干货.给你做一个高效的知识梳理,为你的面试保驾护航! 内容 参考链接 HTML & CSS 篇 ...

  9. 找工作、备考、面试刷题网站推荐(牛客网、力扣、计蒜客、hihocoder、七月在线)以及acm竞赛oj

    不管是找工作笔试面试白板试进大厂,还是研究生参加初试复试,数据结构和算法都是都是重中之重,刷题就很必要,来拿走自己的offer 吧! 一.offer刷题推荐 1.牛客网 链接:牛客网 - 找工作神器| ...

  10. React 前端面试宝典

    什么是React(谈一谈React) 从概念.用途.思路.优缺点入手: React 是一个网页 UI 框架,通过组件化的方式解决视图层开发复用的问题,本质是一个组件化框架. 它的核心设计思路有三点,分 ...

最新文章

  1. 使用Gradle第一次构建Web应用
  2. 无序数组求第k大的数 python_整数无序数组求第K大数
  3. about EnableEventValidation 这是什么意思,欢迎指点一下,谢谢
  4. LINUX前期知识回顾
  5. java web 测试类,构建一个容易单元测试的java–web系统-JSP教程,Java技巧及代码
  6. 前端学习(1499):组件特点
  7. 【C#】ADO .Net Entities Framework使用查询语句时遇到的错误
  8. python中id是什么意思_什么是python的id函数
  9. ele-calendar 日历插件使用
  10. Dota2 on Ubuntu
  11. 《万人如海一身藏》书摘
  12. Win硬件 - 西部数据绿盘、蓝盘、黑盘、红盘和紫盘有什么区别?
  13. 2022年国家自然科学基金指南发布情况
  14. 2021年起重机司机(限桥式起重机)考试题及起重机司机(限桥式起重机)考试报名
  15. Word2vec结构详解及原理推导
  16. 互联网、因特网及万维网之间的区别与联系
  17. 关于学习js的一些命令行
  18. SpringBoot项目中使用set方法后,自动保存问题
  19. 干货分享—Eclipse 的使用配置整理
  20. 创想3d打印机切片软件Creality Slicer/Cura如何添加模糊皮肤打印选项

热门文章

  1. 基于node.js和oicq的qq机器人 制作回顾分析笔记
  2. 深圳中电港 招聘FAE(FPGA Lattice)
  3. JanusGraph详解
  4. 30种SQL查询语句优化方法
  5. 100%解决VMware虚拟机NAT上网方式,保姆教学
  6. 学画画软件app推荐_【画画必备】让你成为大触的6款APP
  7. 管理win7开机启动项
  8. JVM Learning Note 4 -- HotSpot JVM Options List
  9. Smart3D-安装教程
  10. 梦幻星球社区APP源码 HYBBS的iApp社区源码