vivo面试
1.js数据类型
number boolean undefined null string 对象(object array function) symbol
2.instanceOf
检测基础数据类型用typeof,instanceof判断是什么类型的对象。
3.如何判断数组类型
(1)instanceof
a instanceof Array
(2)Object.prototype.toString.call(a).indexOf('Array')!==-1
(3)Array.prototype.isPrototypeOf(a)
(4)a.constructor.toString.indexOf("Array")!==-1
(5)Array.isArray(a)
4.Vue中data以函数形式返回的原因
组件中的data写成一个函数,数据以函数返回值形式定义,这样每复用一次组件,就会返回一份新的data,类似于给每个组件实例创建一个私有的数据空间,让各个组件实例维护各自的数据。而单纯的写成对象形式,就使得所有组件实例共用了一份data,就会造成一个变了全都会变的结果。
5.js继承
继承主要分为接口继承和实现继承在js中,由于函数没有签名,无法实现接口继承,只能实现继承,通过原型链来实现。
让原型对象等于另一个类型的实例,继承的本质是重写原型对象,代码如下:
function SuperType(){
this.property=true;
}
SuperType.prototype.getSuperValue=function(){
return this.property;
};
function SubType(){
this.subproperty=false;
}
//继承SuperType
SubType.prototype=new SuperType()
SubType.prototype.getSubValue=function(){
return this.subproperty;
};
var instance=new SubType();
alert(instance.getSuperValue()); //true
6.图片加载很慢解决方法
(1)使用第三方软件进行压缩 如:tinypng
(2)图片懒加载,当屏幕滑到下一屏时下一屏的图片才开始加载
项目介绍
Vue
1.v-if和v-show的区别
v-show只是在修改元素的css样式,也就是display的属性值,元素始终在Dom树上,有更高的初始渲染消耗,适合做频繁的额切换;v-if是根据后面数据的真假值判断直接从Dom树上删除或重建元素节点,有更高的切换消耗,不适合做频繁的切换;
2.生命周期
3.组件间的通信
4.vuex的异步编程
Css
盒子模型(三角形梯形)
优先级
Js
数据类型
基本数据类型为啥可以操作引用类型的方法
为了便于操作基本类型值,ES提供了三个特殊的引用类型:Number、Boolean、String,基本包装类型
const变量提升
Json串转换成字符串
作用域
百度一面
jQuery选择器链式操作
原理:每次方法执行完后返回this对象,这样后面的方法就可以继续在this环境下执行。链式操作的缺点如果有返回值时不能返回this对象了。jQuery主要是对DOM元素的操作,只需要改变DOM元素的表现而不需要返回值,所以适合链式操作。
jQuery中哪个操作可以实现深拷贝
jQuery.extend( [deep ], target, object1 [, objectN ] )
$.extend(true,obj1,obj2)//可以实现深拷贝
$.extend(obj1,obj2)//可以实现浅拷贝 deep默认为false
深克隆
$(selector).clone(includeEvents)
当includeEvents为true时,不仅仅只是克隆单纯的节点结构,还要把附带的事件与数据给一并克隆了
.clone()方法深度 复制所有匹配的元素集合,包括所有匹配元素、匹配元素的下级元素、文字节点。
闭包都有内存泄露吗?什么情况下不泄露
水平垂直居中布局(为什么translated要-50%)
跨域解决方式(jsonp为啥可以实现跨域)
css渲染原理
watch与computed区别
实现一个webpack打包
setTimeout执行时间
数组的操作有哪些
深拷贝与浅拷贝
浅拷贝,名字和地址在占内存中,值在堆内存中,复制的引用地址,不是堆里面的值
深拷贝,名字和地址在栈内存中,值在堆内存中有自己的值
实现深拷贝,递归复制所有层级属性、使用JSON.stringify和JSON.parse
箭头函数和普通函数区别
普通函数this是运行时基于函数的执行环境绑定的,在全局环境里this指向window,而当函数被作为某个对象的方法调用时,this等于那个对象,匿名函数的执行环境具有全局性,因此this通常指向window
箭头函数是匿名函数,不能用作构造函数,不绑定arguments,取而代之用rest参数...解决,箭头函数不绑定this,会捕获其所在上下文的this值作为自己的this值,箭头函数没有原型属性。
猿辅导一面
Vue的生命周期
Vue的组件通信
watch和computed的区别
vuex
window document区别
DOM是为了操作文档出现的接口,document是其一个对象,
属性有:
cookie
domain:返回文档当前的域名
URL:返回文档当前的URL
title:拿到文档的标题
body
head
getElementBy系列
BOM是为了操作浏览器出现的接口,window是其一个对象
属性有:
closed:返回窗口是否已被关闭
defaultStatus:设置或返回窗口状态栏中的默认文本
document:
history
innerheight:窗口文档显示区的高度
innerwidth:窗口文档显示区的宽度
length:设置或返回窗口中的框架数量
location
name:设置或返回窗口的对象
navigator
opener
outerheight:返回窗口的外部高度
outerwidth:返回窗口的外部宽度
pageXOffset:设置或返回当前页面相对于窗口显示区左上角的X位置
pageYOffset:设置或者返回当前页面相对于窗口显示区左上角的Y位置
parent:返回父窗口
screen
self:返回对当前窗口的引用
status:设置窗口状态栏的文本
top:返回最顶层先辈窗口
screenLeft、screenTop、screenX、screenY:声明窗口的左上角在屏幕上的x坐标和y坐标
ajax原生代码
事件循环
闭包(内存泄露)
手机端适配
viewport是网页默认的宽度和高度,上面这行代码的意思是,网页宽度默认等于屏幕宽度(width=device-width),原始缩放比例(initial-scale=1)为1.0,即网页初始大小占屏幕面积的100%。
垂直居中
async和defer区别
手撕代码:树的宽度
瓜子一面:
内存泄漏
arguments
vue-router
super
函数式编程
http
前端性能优化
get post区别
瓜子二面
腾讯一面
改变this指向的函数
rem em px区别
Await async
promise实现ajax
完美世界
模块化好处
语义化的作用
语义化标签的含义
meta标签的作用
css选择器
联动
===实现具体过程
哪些操作需要遵守同源策略
哪些属性可以继承
小程序生命周期
Vue双向绑定原理
定位属性有哪些:position、left、top、right、bottom、overflow、clip、vertical-align、z-indx
setTimeout与setInteval区别
贝壳一面:
计算机组成:存储器、运算器、控制器、输入设备、输出设备
CPU和GPU的区别:CPU是中央处理器,GPU是图形处理器
懒加载:
MVC和mvvm
基础类型与引用类型存储有什么不同
数组去重的方式