关于那些年被问到的面试题,也许当时被问倒,时候自己一一查证还是弄明白了,用最简洁的话,说最深奥的问题,快来looklook吧!

79 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第8天,点击查看活动详情

什么是任务队列?

任务队列(task queue)主要分两种:

宏任务:主要包括:script(整体代码),setTimeout,setInterval

微任务:主要包括:process.nextTick, Promise,

 

栈和队列的区别?

1栈的插入和删除操作都是在一端进行的,而队列的操作却是在两端进行的

2 队列先进先出,栈先进后出

3栈只允许在一端进行插入和删除,而队列允许在一端进行插入,在另一端进行删除#

 

栈和堆的区别?

栈区

存放函数的参数值,局部变量的值等。一般由程序员分配释放, 若程序员不释放,程序结束时可能由 OS 回收

堆(数据结构):堆可以被看成是一棵树,如:堆排序;

 

Vue 的最大的优势是什么?

组件化开发、数据进行双向绑定、使用路由不会刷新页面实现局部刷新,

 

Vue 和 jQuery 两者之间的区别是什么?

jQuery 是使用选择器()选取 DOM 对象,对其进行赋值、取值、事件绑定等操作,其实和原生的 HTML 的区别只在于可以更方便的选取和操作 DOM 对象,而数据和界面是在一起的

 

Vue 则是对数据进行操作不再需要引用相应的 DOM 对象,可以说数据和 View 是分离的,他们通过 Vue 对象这个 vm 实现相互的绑定。

 

mvvm 和 mvc 区别是什么?哪些场景适合?

Vue 数据驱动,通过数据来显示视图层而不是节点操作。 场景:数据操作

比较多的场景,需要大量操作 DOM 元素时,采用 MVVM 的开发方式,会更加便捷

 

使用 MVC 的目的就是将 M 和 V 的代码分离。MVC 是单向通信

 

Vue 数据双向绑定的原理是什么?

第一步

对对象或者数组进行递归遍历,都加上 setter 和 getter

第二步:

解析模板指令,将模板中的变量替换成数据,然后初始化渲染页面视图,并将每个指令对应的节点绑定更新函数,添加监听数据,一旦数据有变动,收到通知,更新视图



第三步:

是Observer 和 Compile主要做的事情是

Vue-loader 是什么?使用它的用途有哪些

Vue-loader 会解析文件,提取出每个语言块,如果有必要会通过其他 loader

处理,最后将他们组装成一个 commonjs 模块;module.exports 出一个 Vue.js 组件对象;

 

 

Vue 中怎么自定义过滤器

可以用在两个地方

双花括号插值和 v-bind 表达式。过滤器应该被添加在 JavaScript,表达式的尾部,由“管道”符号指示

 

你是怎么认识 Vuex 的?****

1  可以理解为一种开发模式或框架

2 数据源集中管理驱动组件的变化

应用级的状态集中放在 store 中; 改变状态的方式是提交 mutations,异步逻辑应该封装在 action 中。

 

Vuex 的 5 个核心属性是什么?****

State、 Getter、Mutation 、Action、 Module

Vuex 的出现解决了什么问题?

1对于兄弟组件间的状态传递无能为力

2来自不同组件的行为需要变更同一状态。以往采用父子组件直接引用或者通过事件来变更和同步状态的多份拷贝。

 

简述 Vuex 的数据传递流程 ****

mutations 里面的每个函数都会有一个 state 参数,且是唯一修改数据的入口 ,当数据修改完毕后,会传导给页面。页面的数据也会发生改变

 

Vuex 的 Mutation 和 Action 之间的区别是什么?

Mutation:必须同步执行。

Action:可以异步,但不能直接操作 State

 

Vue-Router 是干什么的,原理是什么?

Vue-Router 是 Vue.js 官方的路由插件,实现单页面切换

原理

设定访问路径,并将路径和组件映射起来。传统的页面应用,是用一些超链接来实现页面切换和跳转的。在 Vue-Router 中,是路径之间的切换,也是组件的切换。路由模块的本质 就是建立起 url 和页面之间的映射关系。

 

路由之间是怎么跳转的?有哪些方式?

this.$router.push()跳转到指定的 url,

this.$router.replace()跳转到指定的 url,但是 history 中不会添加记录,

this.$touter.go(n)向前或者后跳转 n 个页面,可以是负数

 

Vue-Router 怎么配置路由

path:"/hello",

component:HelloWorld

默认出口

跳转导航

helloword

 

Vue-Router 有哪几种路由守卫?

路由守卫为:

全局守卫:beforeEach

后置守卫:afterEach

全局解析守卫:beforeResolve

路由独享守卫:beforeEnter

 

Vue-Router 的钩子函数都有哪些?

1)全局钩子函数要包含 beforeEach

beforeEach 函数有三个参数,分别是:

to:router 即将进入的路由对象

from:当前导航即将离开的路由

next:function,进行管道中的一个钩子,如果执行完了,则导航

的状态就是 confirmed (确认的)否则为 false,终止导航。

2)单独路由独享组件

beforeEnter,

3)组件内钩子

beforeRouterEnter,

beforeRouterUpdate,

beforeRouterLeave

 

 

路由传值的方式有哪几种 ****

1 router.push

this.$router.push("home")

接收参数 this.$route.query


2 声明式导航****

<router-link to:"news">


怎么定义 Vue-Router 的动态路由?怎么获取传过来的动

态参数?

动态路径参数,使用“冒号”开头,一个路径参数,使用冒号标记,当匹配

到一个路由时,参数会被设置到 this.$router.params 中,并且可以在每个组件中使用

可以通过动态路由传参,在路由中设置了,多段路径参数后,对应的值分别都会设置到router.queryrouter.query 和router.params

 

query 和 params 之间的区别是什么?

传参时query 要用 path 来引入,params 要用 name 来引入

获取值this.route.query.namethis.route.query.name 和 this.route.params.name

 

route’和‘route ’和‘router’ 的区别是什么?**

$route 是“路由信息对象”,包括 path,params,hash,query,fullPath,

matched,name 等路由信息参数。

$router 为 VueRouter 的实例,相当于一个全局的路由器对象,里面含有很

多属性和子对象

(history对象,经常用的跳转链接就可以用this.router.push 会往 history 栈中添加一个新的记录。返回上一个 history

也是使用$router.go 方法 )