1.说说你对Vue中nextTick的理解?
Vue在更新DOM时时异步执行的。当数据发生变化时,Vue将开启一个异步更新队列, 视图需要等队列中所有数据变化完成之后,再统一进行更新。
2.Vue中的data为什么是一个函数?
如果data是一个函数的话,这样每复用一次组件,就会返回一份新的data(类似于给每个组件实例创建一个私有的数据空间,让各个组件实例维护各自的数据)
Object是引用数据类型,里面保存的是内存地址,单纯的写成对象形式,就使得所有组件实例共用了一份data,就会造成一个变了全都会变的结果。
所以说vue组件的data必须是函数。
3.请说说Vue中的响应式原理?
vue响应式也叫作数据双向绑定,大致原理阐述:
首先我们需要通过Object.defineProperty()方法把数据(data)设置为getter和setter的访问形式,这样我们就可以在数据被修改时在setter方法设置监视修改页面信息,也就是说每当数据被修改,就会触发对应的set方法,然后我们可以在set方法中去调用操作dom的方法。
此外,如果页面有input用v-model绑定数据,我们需要在这种绑定了data的input元素上添加监听,添加input事件监听,每当input事件被触发时,就修改对应的data。
4.说说你对Vue中过滤器的理解?如何使用?有哪些使用场景?
过滤器(filter)是输送介质管道上不可缺少的一种装置
大白话讲就是把一些不必要的东西过滤掉
过滤器实质不改变原始数据,只是对数据进行加工处理后返回过滤后的数据再进行调用处理,我们也可以理解其为一个纯函数
Vue 允许你自定义过滤器,可被用于一些常见的文本格式化
vue中的过滤器可以用在两个地方:双花括号插值和 v-bind 表达式,过滤器应该被添加在 JavaScript表达式的尾部,由“管道”符号指示:
(1)定义filter
在组件的选项中定义本地的过滤器
(2)定义全局过滤器
当全局过滤器和局部过滤器重名时,会采用局部过滤器
过滤器函数总接收表达式的值 (之前的操作链的结果) 作为第一个参数。
应用场景:
平时开发中,需要用到过滤器的地方有很多,比如单位转换、数字打点、文本格式化、时间格式化之类的等
5.说说你对Vue中diff算法的理解
diff算法用来计算出Virtual DOM中改变的部分,然后针对该部分进行DOM操作,而不用重新渲染整个页面,渲染整个DOM结构的过程中开销是很大的,需要浏览器对DOM结构进行重绘与回流,而diff算法能够使得操作过程中只更新修改的那部分DOM结构而不更新整个DOM,这样能够最小化操作DOM结构,能够最大程度上减少浏览器重绘与回流的规模。
6.HTTP和Https有什么区别?为什么说HTTPS更安全?
HTTP:超文本传输协议(HyperText Transfer Protocol),是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。
HTTPS:安全套接字层超文本传输协议(Hyper Text Transfer Protocol over Secure Socket Layer)。是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
HTTPS和SSL支持使用X.509数字认证,用户可以确认发送者是谁,它的主要作用有两种:1、建立一个信息安全的通道,来保证数据传输的安全;2、确认网站的真实性。
https和http的主要区别:
一、https协议需要到ca机构申请ssl证书(如Gworg CA),另外Gworg CA还提供2年期ssl证书,高级别的ssl证书可以让地址栏展示企业名称。
二、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
三、http和https使用的是完全不同的连接方式,用的端口也不一样,http是80端口,https是443端口。
四、http的连接很简单,是无状态的;https协议是由ssl+http协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
五、如果要实现HTTPS那么可以淘宝Gworg获取SSL证书。
总的来说HTTPS比HTTP更加安全,能够有效的保护网站用户的隐私信息安全.
- MongoDB和MySQL有什么区别?
(1)存储方式
关系型数据库是表格式的,nosql数据库是大块的组合在一起,通常存储在数据集中,就像文档、键对值或者图结构。
(2)存储结构
Rdbms是结构化数据,一般都先预定义结构,结构描述了数据的形式和内容。
nosql数据库基于动态结构,使用与非结构化数据,很用以适应数据类型和结构变化。
(3)存储规范
rdbms是把数据切割成最小的关系表以避免重复,获得精简的空间利用,但是虽然看着清晰,但是设计多个表时,数据管理复杂。
nosql存储在平面数据集中,数据经常可能会重复。单个数据库很少被分隔开,而是存储更一个整体,这样整块的数据便于读写。
(4)存储扩展
rdbms是纵向扩展
nosql是横向扩展。
(5)查询方式
rdbms是通过结构化查询语言来操作数据库,功能强大,是业界标准的用法。
nosql是使用非结构化查询语言,它是没有标准的。
8.Cookie、Session、本地存储有什么区别?应用场景有哪些?
(1)cookie 数据存放在客户的浏览器上,session 数据放在服务器上。
(2)cookie 不是很安全,别人可以分析存放在本地的 COOKIE 并进行 COOKIE 欺骗
考虑到安全应当使用 session。
(3)session 会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用 COOKIE。
(4)单个 cookie 保存的数据不能超过 4K,很多浏览器都限制一个站点最多保存 20 个 cookie。
(5)cookie不能进行跨域处理,session存储是依赖于cookie,默认也是不能跨域的,但是session的数据是存在服务器上的,可以通过服务器来操作数据库,将session进行入库处理,既可以实现跨域
cookie
用户A在超市购买的任何商品都应该放在A的购物车内,不论是用户A什么时间购买的,这都是属于同一个会话的,不能放入用户B或用户C的购物车内,这不属于同一个会话。
只要添加了就一直存在,只要不是手动的去清除或者expires为默认的过期时间。但是安全性无法保证,而且也无法对客户的喜好进行定量的分析,有个数和长度的限制。
session
对话的时效性的问题,如果客户选购商品的途中浏览器突然关闭,服务端找不到cookie中的sessionid了,那么选购的商品就不存在了
session是实现购物车的另一种方法。session提供了可以保存和跟踪用户的状态信息的功能,使当前用户在session中定义的变量和对象能在页面之间共享,但是不能为应用中其他用户所访问,
它与cookie最重大的区别是,session将用户在会话期间的私有信息存储在服务器端,提高了安全性。在服务器生成session后,客户端会生成一个sessionid识别号保存在客户端,以保持和服务器的同步。
这个sessionid是只读的,如果客户端禁止cookie功能,session会通过在URL中附加参数,或隐含在表单中提交等其他方式在页面间传送。因此利用session实施对用户的管理则更为安全、有效。
9.说说你对Node中事件回调的理解
函数作为参数传递到另一个函数中,然后被调用。
同样,在Node.js中,比如I/O操作发生的地方,经常使用回调模式。通过在回调函数中嵌套回调函数,可以控制事情的顺序(使用回调的根本出发点),比如从数据库读取数据后通过回调用另一个函数处理数据。
10.Vue中A组件是B组件的父组件,A组件更新,请说一下A,B组件各执行了哪些生命周期函数?
父beforeUpdate --> 子beforeUpdate --> 子updated --> 父updated
11.你是如何理解同步异步的?
同步是指两个进程的运行是相关的,其中一个进程要阻塞等待另外一个进程的运行。
异步的意思是两个进程毫无相关(不用互相等待),自己运行自己的。