自我介绍

项目介绍(做什么的)

平台用户角色不同权限怎么做校验

复制已登录角色链接到其他浏览器,会发生什么

如何拆分和设计组件

1、使用的场景:不同的场景需求也不一样

2、组件对外暴露的字段

什么是面向对象

继承的设计上,是为了方便什么

1、简单来说是为了更好复用代码

2、js怎么实现封装和继承

对MVVM框架的理解

vm是连接视图层和数据层的桥梁

双向绑定的原理

数据劫持,监听-发布类

vue中的key是做什么用的

diff算法简述

vue不能对数组中的某一个数组进行变更原因

MVVM框架,数据操作视图。对data对象中的数据进行监听,当侦测到数据改变时相应数据所影响的页面也会触发更新。所以我们所需要的这些响应式数据,受到javascript的限制,vue不能检测到对象属性的添加或删除,因为Vue利用的是Object的defineProperty()方法,在初始化实列时将属性转为getter/setter,所以属性必须在data对象上才能让vue转换它。
当然这只是一般的属性,以一般字符串,数字,布尔值这样的基本数据类型作为属性值的响应,当然我们有时候的诉求的初始化属性的属性值不只有这样的基本数据变量,我们还会用到数组,对象这样的引用数据变量。引用数据变量就是对地址的引用,只是对象的指针发生变化,并没有重新生成一个对象

数组内部元素更新,没有触发重绘

栈和堆的理解

声明用栈,new用堆
所有的变量都是在栈里面存的
对象在堆里面存的
所有的对象都是通过地址引用到栈里面的

简单点理解栈里存放着局部变量,堆里存放着所有new出来的东西。
而两者可是实现关联是因为堆里面带着栈的内存地址。

堆是在程序运行时,而不是在程序编译时,申请某个大小的内存空间。即动态分配内存,对其访问和对一般内存的访问没有区别。{堆是指程序运行是申请的动态内存,而栈只是指一种使用堆的方法(即先进后出)。

栈是先进后出的,但是于堆而言却没有这个特性,两者都是存放临时数据的地方。 对于堆,我们可以随心所欲的进行增加变量和删除变量

js如何实现一个栈

rem和em的区别是什么

flex-grow是什么意思

父元素flex布局宽度500px,有三个子元素,宽度都是100px,同时flex-grow 为 1 1 2,计算子元素真实宽度。

position有哪些,特点

static:所有元素在默认的情况下position属性均为static

relative:相对于自身定位,移动

absolute:相对于第一个非static方式定位

fixed:浏览器根元素固定为浏览器窗口

盒模型宽度计算

https的加密解密过程

promise用的多吗,没用…

实现一个多维数组求和

const arr = [1,2,3,[1,2,[3]]]

求最后1+2+3+1+2+3的和

1
2
3
4
5
6
7
8
9
10
11
12
function total(arr) {
var sum = 0
arr.forEach((item) => {
if(Array.isArray(item)) {
sum += total(item); //递归去处理数组元素
} else {
sum += item
}
})
return sum
}
console.log(total([1,2,3,[1,2,[3]]])) // 45