1 HTML
2 css
2.1 三栏布局
2.2 弹性盒
设置了display:flex属性以后,float和vertical-align,clear属性将失效。
有6个主要属性:flex-direction,flex-wrap,flex-flow,justify-content,align-item,align-content
flex-direction:row(默认,从左到右);row-reverse(从右到左);column(从上到下);column-reverse(从下到上)
flex-wrap:nowrap(默认不换行);wrap(换行,第一行在上);wrap-reverse(换行,第一行在下)
flex-flow:是flex-firection和flex-wrap的结合,默认是row nowrap
justify-content:flex-start(默认,从左到右);flex-end(右对齐);center(居中);spac-between(两端对齐,中间间距相等);space-around(两侧间距相等,项目中间距比项目与边框的间距大一倍)
align-items:stretch(默认,如果项目未设置高度或者设为auto,将占满整个高度);center(垂直居中);flex-start(在上面对齐);flex-end(在下面对齐);baseline(项目第一行文字基线对齐)
3 js
3.1 ajax的原理:
是不需要重新刷新页面,减少网络请求,提高用户体验。浏览器让xrh跟服务器要数据,自己可以做其他操作,xhr像服务器请求数据返回给xhr,xhr通知浏览器带回数据,浏览器将数据异步刷新到页面。
3.2 原型链
3.3 闭包
闭包就是能够读取其他函数内部的函数,所以闭包实际是一个函数.
闭包也可以理解为定义在函数内部的函数,本质就是函数内部和外部连接起来的桥梁.
如果函数内部的子函数并没有引用父函数作用域里的变量,这个子函数就不是闭包.
作用:读取函数内部的变量,让变量始终保存在内存中.
缺点:让变量始终保存在内存中就容易内存消耗大造成性能问题,可以在不用该变量的时候将其delete
3.4 promise
在promise出现之前,js的异步一直是依靠回调函数实现,但当多个异步操作有依赖关系就容易出现多层嵌套形成回调地狱,不利于代码维护.promise的出现主要是解决异步操作回调地狱问题;
1 promise本身是同步的,返回的是promise对象;
2 promise有三种状态:bending,resolved,rejected.由bending到resolved就不能再到reject,Promise的状态和值发生改变就不会再改变,不管后续怎么调用resolve或者reject方法,状态和值是不可逆转的
3.5 类型判断和undefined和null的区别
3.6 深拷贝和浅拷贝
4 vue
4.1 虚拟dom的优点
可以解决浏览器性能问题,如果一次操作中有10次更新dom的动作,虚拟dom不会立即操作dom,而是将10次更新的diff保存到本地一个js对象中,最终将这个js对象一次性attch到dom数上,再进行后续操作,避免了大量无谓的计算量。
4.2 v-if和v-show的区别
v-if是节点的消失和隐藏,v-show是display:none或者是block;如果是频繁操作的话用v-show比较合适,性能较高.v-if切换消耗性能,v-show初始的消耗性能大.
4.3 computed,属性观测和methods的区别
计算属性是依赖的数据发生改变就会重新计算返回新的结果,如果依赖的项没有变化,则返回上一次计算过后的数据,所以性能较高,但不能做异步操作,页面初始加载的时候回触发;属性观测只是单纯的观测data中的数据,属性值发生变化则触发相应的回调,可以做一些异步操作,初始页面不触发,但可以设置immidetely:true,对于层级较深的可以设置deep:true来观测。
4.4 vue的different算法
4.5 动态路由
4.6 组件通讯
4.7 状态管理
4.8 路由守卫
4.9 响应式原理
主要是采用数据劫持和订阅发布的模式实现的。通过object.defineProperty来劫持各个属性的getter,setter,在数据变动时发布消息给订阅者,触发响应的监听回调。
但是根据数组的下标修改数组,或者新增的对象属性不会响应式,这个用this.$set/vue.set可以解决。
5 数据结构
6 算法
7 常见网络知识
7.1 常见的状态码
8 其他
8.1 URL到浏览器经历的过程
9 浏览器兼容问题:
1. 不同浏览器的margin和padding不同,这个设置通配符margin:0,padding:0;(遇到100%)
2.块元素设置float以后,横向的margin会比设置的大一些,这个可以将块元素设置为行内元素解决
3. 设置较小高度的时候,IE会比设置的大一些,这个可以通过overflow:hidden结局
参考:https://www.cnblogs.com/fxwoniu/p/11973326.html
10 登陆
11 状态管理
Ajax和fetch的区别
浏览器中的事件循环
箭头函数和普通函数(4点)
伪数组转真数组
Array.from;
Array.protype.slice.call(obj);
[...obj];
v-for中的key 是否可以用随机数
vue中mixin的合并规则
钩子函数都会调用,而且mixin中的比组件的更先调用;
如果是data的话,则用组件的data,如果是对象的话,则合并,
如果是methods同名的话,也用组件的
如何手动销毁一个vue实例
如何区分一个数组或者对象
arr instanceof Array(判断对象的原型链是否是指向构造函数的prototype)
obj instanceof Object
arr.constructor === Array(对象的constructor属性)
obj.constructor === Object
Object.prototype.toString.call(arr)
"[object Array]"
Object.prototype.toString.call(b)
"[object Object]"
Array.isArray(arr) es6