记一次面试题与经过

http和https有什么区别?
*HTTP协议是一种使用明文数据传输的网络协议。HTTP协议的明文传输会让用户存在一个非常大的安全隐患
*HTTPS协议可以理解为HTTP协议的升级,就是在HTTP的基础上增加了数据加密。在数据进行传输之前,对数据进行加密,然后再发送到服务器。
*https页面中不能使用http请求,http页面中可以使用https请求。
http状态码有哪些?分别代表什么意思?
1XX:通知
2XX: 成功
*200("OK")	一切正常。实体主体中的文档(若存在的话)是某资源的表示。
3XX 重定向
*301("Moved Permanently")当客户端触发的动作引起了资源URI的变化时发送此响应代码。另外,当客户端向一个资源的旧URI发送请求时,也发送此响应代码。
4XX:客户端错误
*400("Bad Request")客户端方面的问题。实体主题中的文档(若存在的话)是一个错误消息。希望客户端能够理解此错误消息,并改正问题。
*401("Unauthorized")客户端试图对一个受保护的资源进行操作,却又没有提供正确的认证证书。客户端提供了错误的证书,或者根本没有提供证书。这里的证书(credential)可以是一个用户名/密码,也可以市一个API key,或者一个认证令牌。
*403("Forbidden")客户端请求的结构正确,但是服务器不想处理它。这跟证书不正确的情况不同--若证书不正确,应该发送响应代码401。该响应代码常用于一个资源只允许在特定时间段内访问,
5XX 服务端错误
*500("Internal Server Error")这是一个通用的服务器错误响应。对于大多数web框架,如果在执行请求处理代码时遇到了异常,它们就发送此响应代码。
502("Bad Gateway")只有HTTP代理会发送这个响应代码。它表明代理方面出现问题,或者代理与上行服务器之间出现问题,而不是上行服务器本身有问题。若代理根本无法访问上行服务器,响应代码将是504。
503("Service Unavailable")此响应代码表明HTTP服务器正常,只是下层web服务服务不能正常工作。最可能的原因是资源不足:服务器突然收到太多请求,以至于无法全部处理。由于此问题多半由客户端反复发送请求造成,因此HTTP服务器可以选择拒绝接受客户端请求而不是接受它,并发送503响应代码。
504("Gateway Timeout")跟502类似,只有HTTP代理会发送此响应代码。此响应代码表明代理无法连接上行服务器。
请简述一次完整的http事务流程。
*域名解析ip => 发起TCP三次握手 => 建立TCP连接发起http请求 => 服务器响应http请求 => 浏览器解析响应回的代码并解析 => 将代码渲染于页面
GET和POST有什么区别?OPTIONS方法有什么作用。
*get是从服务器上获取数据。传输的参数会明文显示
*post是向服务器传送数据。一般增删改会使用post。收藏、书签都不会记录post的请求记录
*OPTIONS用于检测请求方式。
用什么解析IP?
域名解析ip:
		1.Chrome浏览器 会首先搜索浏览器自身的DNS缓存,看自身的缓存中是否有对应的条目,而且没有过期,如果有且没有过期则解析到此结束。
		2.如果浏览器自身的缓存里面没有找到对应的条目,那么Chrome会搜索操作系统自身的DNS缓存,如果找到且没有过期则停止搜索解析到此结束.
		3.如果在Windows系统的DNS缓存也没有找到,那么尝试读取hosts文件(位于C:\Windows\System32\drivers\etc),看看这里面有没有该域名对应的IP地址,如果有则解析成功。
		4.如果在hosts文件中也没有找到对应的条目,浏览器就会发起一个DNS的系统调用,就会向本地配置的首选DNS服务器(电信运营商)发起域名解析请求,运营商的DNS服务器首先查找自身的缓存,找到对应的条目,且没有过期,则解析成功。
说下你知道的es6。
1.变量解构赋值 2.模板字符串 3.拓展运算符 4.箭头函数 5.class类 6.let const 关键字 7.symbol
浏览器存储的方式有哪些,有什么区别?
cookie:在客户端存储会话信息,记录用户的状态。或用cookie在客户端存储一些其它的数据
localStorage:sessionS和localS都克服了cookie的一些限制,它们都有很多共同的特点,localS与sessionS的唯一区别就是localS属于永久性存储,而sessionS属于当会话结束的时候,sessionS中的键值对会被清空
sessionStorage:存储特定于某个会话的数据,也就是数据只保存到浏览器关闭,存储在sessionStorage中的数据可以跨越页面刷新而存在
Let 的特性。
不能重复声明、在块级作用域有效,不会预处理,不存在变量提升
setTimeout,Promise,async/await的区别?
*setTimeout 属于异步,又属于宏任务
*Promise 对象属于同步,又属于微任务
*await 将异步对象改造成同步
forEach,for in,for of的区别?
*forEach	没有return跳出,中断循环
*for in		主要是为遍历对象而设计的,不适用于遍历数组。
*for of		适用于任何含有iterator的数据结构
介绍js的基本数据类型。
String,Number,Boolean,Null,undefined
类型判断用到哪些方法?
*typeof
*Object.prototype.toString.call()
*instanceof
*Array.isArray()
*constructor
null,undefined的区别?
*null:表示没有对象,即该处不应该有值
*undefined:表示缺少值,即此处应该有值,但没有定义
数组的原生方法,列举一下?
1.push	在数组末尾添加数组
2.unshift	在数组头部添加
3.concat	合并数组
4.shift		删除并返回数值的最后一个值
5.pop		删除并返回数组的第一个值
6.reverse	反转数组
7.sort		排序
8.join		分割数组并转字符串
9.slice		将字符串转数组
10.splice	删除指定位置的值
声明变量和声明函数的提升有什么区别?
变量提升,js引擎事先会预解析声明变量,但不赋值。
函数提升,就是函数的声明在执行前会被提升到该作用域顶部,二者具有优先性
== 和 === 的区别。
都是比较符,不过后者会判断数据类型
用过什么代码管理工具?
git(branch、status、commit、merge checkout)
什么是同步,什么是异步?
*同步:同步会阻塞程序运行,除非事件操作完毕后,否则不会执行后续代码。
*异步:异步不会阻塞程序运行,在程序操作完成时,执行后续事件代码
列出display的值,说明他们的作用。fixed,relative 和 absolute 分别是相对于谁定位。
解释下浮动和它的工作原理?如何清除浮动?
为什么会跨域?怎么解决?
跨域是浏览器同源策略(cors)的安全策略:域名,协议,端口完全相同,违反了则属于跨域。
*1.JSONP -- 原理就是利用了script标签,在标签外套了一层壳,利用标签特性达到跨域加载资源的效果。
*2.CORS -- 跨站资源共享,它是跨域的官方解决方案
*3.webSockets -- 不受同源策略影响。原理是因为它不使用HTTP协议,而使用一种自定义的协议,专门为快速传输小数据设计。
*4.Nginx -- 代理跨域。反向代理跨域。
对于mvvm的理解?
*Model	--数据模型业务逻辑都在中定义
*View	--ui视图,数据展示
*ViewModel	--是一个同步View 和 Model的对象
vue 的生命周期有几个阶段?
1、beforeCreate(创建前)
2、created(创建后)
3、beforeMount(载入前)
4、mounted(载入后)
5、beforeUpdate(更新前)
6、updated(更新后)
7、beforeDestroy(销毁前)
8、destroyed(销毁后)
第一次页面加载会触发几个钩子?
1、beforeCreate(创建前)
2、created(创建后)
3、beforeMount(载入前)
4、mounted(载入后)
Vue的生命周期
Vue实现数据双向绑定的原理。
*Object.defineProperty()来劫持各个属性的setter设置,getter读取,
Vue组件间的参数传递。
*父传子-props
*子传父-emit
Vuex是什么?怎么使用,使用场景?
1.状态管理
2.在入口文件中引入store,只用来读取状态的集中放在state中,改变状态方式的提交mutations(同步),逻辑事件分发在action(异步)
3.单页面应用,组件之间状态,登录状态,购物车等
Vue几种常用的指令
Vue中的key的作用?
*在v-for后面使用,具有唯一性
什么是Vue的计算属性?
*computed,vue内置的一个方法,一旦数据变化,计算属性就会重新执行,视图也会更新。
怎么定义Vue-router的动态路由。
*this.$router.push()
*path: '/describe/:id',
*this.$route.params.id
&子组件获取相应参数*this.$route.query.id
js 中的堆栈内存图,你能描述一下吗?
栈内存:提供代码运行的环境。存储基本类型值
堆内存:提供应用类型的环境。
js 的强制转换和隐式转换
隐式转换:数字和字符串相加结果是string
		 数字和字符串相减结果是number
怎么区分一个页面是静态的还是动态的?
根据网页制作的语言来区分;
	静态网页使用语言:HTML(超文本标记语言);
	动态网页使用语言:HTML+ASP 或 HTML+PHP 或 HTML+JSP 或HTML+ASP.NET等。
从url到页面显示,过程发生了什么?
 1.解析DNS,将域名地址解析成ip地址。
	-会到浏览器DNS缓存读取
	-读取系统DNS缓存
	-读取路由器DNS缓存
	-读取运营商DNS缓存(如果执行到了这一步)
		-就会执行递归搜索 如:blog.baidu.com
			-.com根域名下查找DNS解析
			-.baidu域名下查找DNS解析
			-.blog域名下查找DNS解析(如果还没有)
			-出错了
2.TCP连接,TCP三次握手。
			-第一次握手,由浏览器发起,告诉服务器我要发送请求了
			-第二次握手,由服务器发起,告诉浏览器我准备接收了,你赶紧发送吧
			-第三次握手,由浏览器发送,告诉服务器,我马上发送了,准备接收吧
3.发送请求:
	-请求报文,http协议的通信内容
4.接受响应
	-响应报文
5.渲染页面
	-遇见HTML标记,浏览器html解析成token并构建成dom数
	-遇见style/link标记,浏览器调用css解析器,处理css标记并构建cssom树
	-。遇见scipt标记,调用javascript解析器,处理script代码(绑定事件,修改dom数/cssom数)
	-将dom树和cssom树合并成一个渲染树
	-根据渲染树来计算布局,计算每个节点的位置,大小信息布局
	-将各个节点颜色绘制到屏幕上(渲染)
	注意:五个步骤不一定是顺序执行,如果dom树或cssom树被修改了,可能会执行多次布局和渲染
6.断开连接,TCP四次挥手
	-第一次挥手,由浏览器发起,发送服务器,我东西发送完了(请求报文),你准备关闭吧
	-第二次挥手,由服务器发起的,告诉浏览器,我东西接收完了(请求报文)我准备关闭了,你也准备把
	-第三次挥手,由服务器发起,告诉浏览器,我东西发送完了(响应报文),你准备关闭吧
	-第四次挥手,由浏览器发起,告诉服务器,我东西接收完了,我准备关闭了(响应报文),你也准备关闭吧-

猜你喜欢

转载自blog.csdn.net/Anonymous996/article/details/106007483