面试

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

基础类型与引用类型存储有什么不同

数组去重的方式

你可能感兴趣的:(面试)