Vue基础面试题

本文探讨了Vue中的nextTick机制、data作为函数的原因、响应式原理、过滤器的使用、diff算法、HTTPS的优势、MongoDB与MySQL的区别、Node事件回调以及Vue组件的生命周期,涵盖了同步异步概念的理解。
摘要由CSDN通过智能技术生成

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更加安全,能够有效的保护网站用户的隐私信息安全.

  1. 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.你是如何理解同步异步的?

同步是指两个进程的运行是相关的,其中一个进程要阻塞等待另外一个进程的运行。

异步的意思是两个进程毫无相关(不用互相等待),自己运行自己的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值