<>面试 vue前端工程师的常见面试题及笔试题。
面试了近十几家公司总结出一套VUE面试题,希望能帮助到更多的人。
*
对 MVVM 的理解
MVVM分为Model、View、ViewModel三者。
Model:代表数据模型
View:代表视图
ViewModel:连接视图和模型,实现数据的双向绑定
*
Vue 实现数据双向绑定的原理
采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调。当把一个普通的
JavaScript 对象传给 Vue 作为它的 data 选项时,Vue 将遍历它的属性,用 Object.defineProperty 将它们转化为
getter/setter,用户看不到getter/setter,但是在内部它们让 Vue 追踪依赖,在属性被访问和修改时通知变化。
1、实现一个数据监听器Observer,能够对数据对象的所有属性进行监听,如有变动可拿到最新值并通知订阅者
2、实现一个指令解析器Compile,对每个元素节点的指令进行扫描和解析,根据指令模板替换数据,以及绑定相应的更新函数
3、实现一个Watcher,作为连接Observer和Compile的桥梁,能够订阅并收到每个属性变动的通知,执行指令绑定的相应回调函数,从而更新视图
*
对 webpack 的了解
前端打包工具…
*
对前端工程化的理解
*
对模块化,组件化的理解
*
使用 vue-lic 搭建一个 Vue 的项目
*
对 npm 的了解
第三方库的管理工具
*
ES6 提出了哪些新概念
1.var let
2.箭头函数
3.模板字符串(反引号)
4.解构赋值
5.import,export
6.class
…
*
HTTP 常见的状态码
400 客户端请求有语法错误,不能被服务器所理解
403 服务器收到请求但是拒绝提供服务|
200 客户端请求成功|
404 请求资源不存在 eg:输入错误的URL |
500 服务器发生不可预期的错误 |
503 服务器当前不能处理客户端请求,一段时间后可能恢复正常
*
数组的常用方法,及使用
*
let ,var ,const 之间的区别
var声明变量可以重复声明,而let不可以重复声明
var是不受限于块级的,而let是受限于块级
var会与window相映射(会挂一个属性),而let不与window相映射
var可以在声明的上面访问变量,而let有暂存死区,在声明的上面访问变量会报错
const声明之后必须赋值,否则会报错
const定义不可变的量,改变了就会报错
const和let一样不会与window相映射、支持块级作用域、在声明的上面访问变量会报错
*
跨域问题 如何解决
jsonp
*
如何解决浏览器的兼容问题
*
对于 数据安全 的措施
md5,对称加密,非对称加密
*
Vue 全家桶——vue,vue-router,vuex
*
vuex 的五个核心属性
state,getter,mutations,actions,modules
*
v-show 和 v-if 的区别
*
父子组件的传值
父组件传值给子组件:
第一步:在父组件中 v-bind:parentmsg=“父组件的data值”(parentmsg 这个名字可自定义)
第二步:在子组件中 props:[‘parentmsg’]
{{parentmsg}}这样就可以使用 父组件的值
父组件把方法传递给子组件:
第一步:在父类组件中 @func=父组件方法名 (方法名不带‘()’,func可自定义)
第二步:在子组件方法中写 this.$emit(‘func’,方法参数) (func可自定义,无参方法‘方法参数’就别写)
*
路由跳转的方式
1.<router-link to='home'> router-link
2. router.push('/home')
*
Vue 实例的生命周期
*
vue-router 中 hash 模式和 history 模式的区别
最直观的区别是在 url 中 hash 带了一个 # 而 history 是没有的;
history 需要后端提供支持;
history 跳转后刷新或者回跳会报错
*
对 ui 框架的使用
element-ui,iview,ionic
*
angular 和 vue 的对比
*
原生 Ajax 如何发送请求
*
闭包的概念
函数嵌套函数,内部函数引用外部函数变量,外部函数调用之后,其对象本该被销毁,但闭包的存在,使我们仍然可访问外部函数的变量对象,导致垃圾回收机制没有生效,变量被保存下来,内存泄漏。
*
Vue 中发送请求的方式
vue-router
*
axios 怎样发送请求
*
前端缓存
cookie, WebStorage
*
CSS 常用的布局
*
你用过的 CSS 框架
less
*
对单向数据流的理解
*
计算属性(computed)和 watch 的区别
*
回调函数
*
Promise 三种状态
pending、fulfilled、rejected(未决定,履行,拒绝),同一时间只能存在一种状态,且状态一旦改变就不能再变。promise是一个构造函数,promise对象代表一项有两种可能结果(成功或失败)的任务,它还持有多个回调,出现不同结果时分别发出相应回调。
1.初始化,状态:pending
2.当调用resolve(成功),状态:pengding=>fulfilled
3.当调用reject(失败),状态:pending=>rejected
*
同步和异步的概念
*
Get 请求和 Post 请求的区别
* Get是不安全的,因为在传输过程,数据被放在请求的URL中;Post的所有操作对用户来说都是不可见的。
2 Get传送的数据量较小,这主要是因为受URL长度限制;Post传送的数据量较大,一般被默认为不受限制。
3.Get限制Form表单的数据集的值必须为ASCII字符;而Post支持整个ISO10646字符集。
4. Get执行效率却比Post方法好。Get是form提交的默认方法。
*
自定义过滤器
*
如何用原生js给一个按钮绑定多个 onclick 事件
*
VUE如果注册全局组件
*
列举css 选择器及优先级
*
权重计算规则
*
阐述清除浮动的几种方式及优缺点
*
简述 cookies sessionStorage 和 localStorage 区别
*
数组去重
*
mvvm,mvc 原理及区别
以下是笔试题