面试总结(Day1)

39 阅读6分钟

1、JavaScript的内置对象

    1. document 文档对象

    2.window 浏览器对象

    3.Date 日期对象

    4.Array 数组对象

    5.Math 数学对象

    6.String 字符串对象

2、数组的方法

    1. join 将数组链接为字符串

    2. split 字符串分割为数组

    3. push 尾添元素

    4. pop 结尾删一个元素

    5. unshift 头添元素

    6. shift 头删一个元素

    7. reverse 数组翻转

    8. sort 排序

    9. concat 数组拼接

    10. slice 数组截取

    11. splice 删除替换

    12. indexOf

    13. some

    14. every

    15. find

    16. filter

3、undefined和null的区别

undefined 表示未定义,就是应该有值但是还没有赋值,连null的值都没有赋予

null 代表空值,空引用

1、null 和 undefined 虽然值的结果是相等的,但是其所代表的语义是完全不一样的(==是相等的)

2、undefined 代表了某个变量完全不存在,在内存中完全能不存在这个标识符所指向的地址

3、null 代表了内存中是存在这个变量的,只是我在某些情况下需要把这个变量原本的值给覆盖了,将它设置为一个空

4、null 转为数值是 0 ; undefined 转为数值是 NAN(not a number)

5、null 通过 typeof 判断类型的时候结果的输出是 object ; 而 undefined 的类型是 undefined

4、GET和POST方法的区别

1、传参方式不同

2、post请求更安全,get存在信息泄露风险

3、post请求发送的数据更大,get请求有url长度限制

4、post请求能发送更多的数据类型,get请求只能发送ASCII字符

5、ES6新增属性

1、块级作用域(let和const)

2、定义类的语法糖(class)

3、新增基本数据类型Symbol

4、变量的解构赋值

5、函数参数允许设置默认值,引入rest参数,新增箭头函数

6、数组新增一些API isArray from of方法,数组实例新增了entries keys values等方法

7、对象和数组新增了扩展运算符

8、模块化(import export)

9、set和map数据结构

10、proxy构造函数

11、生成器和遍历器

6、v-if和v-show的区别

1、v-show隐藏则是为该元素添加css--display:none,dom元素依旧还在。

2、v-if显示隐藏是将dom元素整个添加或删除

#/7、双向绑定的实现

Vue是采用数据劫持结合发布/订阅模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调。

8、let、const和var的区别

1、let和const是ES6新增的声明变量的关键词,之前声明变量的关键词是var。

2、变量提升:var定义的变量,可以预解析提前调用的结果是undefined,let定义的变量不能预解析,提前调用的结果是报错。

3、var定义的变量,变量名称可以重复,效果是重复赋值,let定义的变量不能重复,否则执行报错。

4、块级作用域:var定义的变量作用域是全局/局部作用域。let定义的变量如果在{}中只能在{}中调用。

5、在循环语句中var定义的循环变量和使用let定义的循环变量。执行原理和执行效果不同。

6、const具备以上let特点,且只能声明即赋值,否则报错

9、list、set和map的区别

意思不同

List:有序、可重复。

Set:无序、不可重复的集合。重复元素会覆盖掉。

Map:键值对,键唯一、值不唯一。Map 集合中存储的是键值对,键不能重复,值可以重复。

用途不同

List 集合中对象按照索引位置排序,可以有重复对象,允许按照对象在集合中的索引位置检索对象。

Map中的每一个元素包含一个键和一个值,成对出现,键对象不可以重复,值对象可以重复。

Set 集合中的对象不按照特定的方式排序,并且没有重复对象,但它的实现类能对集合中的对象按照特定的方式排序。

10、Vue3的生命周期

1、setup() : 开始创建组件之前,在 beforeCreate 和 created 之前执行,创建的是 data 和 methods

2、onBeforeMount() : 组件挂载到节点上之前执行的函数

3、onMounted() : 组件挂载完成后执行的函数

4、onBeforeUpdate(): 组件更新之前执行的函数

5、onUpdated(): 组件更新完成之后执行的函数

6、onBeforeUnmount(): 组件卸载之前执行的函数

7、onUnmounted(): 组件卸载完成后执行的函数

8、onActivated(): 被包含在   中的组件,会多出两个生命周期钩子函数,,被激活时执行

9、onDeactivated(): 比如从 A 组件,切换到 B 组件,A 组件消失时执行

10、onErrorCaptured(): 当捕获一个来自子孙组件的异常时激活钩子函数

11、Vue3与Vue2的区别

1、数据双向数据绑定用Proxy代替defineProperty

2、支持碎片 Fragments,可以有多个根节点

3、Composition API

4、建立数据data,vue2将数据放在data中,vue3使用setup方法

5、生命周期钩子不同

6、父子传值不同

12、深拷贝和浅拷贝的区别

深拷贝和浅拷贝是指在赋值一个对象时,拷贝的深度不同

浅拷贝是拷贝了对象的引用,当原对象发生变化的时候,拷贝对象也跟着变化。

深拷贝是另外申请了一块内存,内容和原对象一样,更改原对象,拷贝对象不会发生变化。

在进行深拷贝时,会拷贝所有的属性,并且如果这些属性是对象,也会对这些对象进行深拷贝,直到最底层的基本数据类型为止,因此对于深拷贝后的对象,即使原对象的属性值发生了变化,深拷贝后的对象的属性值也不会受到影响

浅拷贝只会拷贝对象的第一层属性,如果这些属性是对象,则不会对这些对象进行拷贝,而是直接复制对象的引用,因此,对于浅拷贝后的对象,如果原对象的属性值发生了变化,浅拷贝后的对象的属性值也会跟着发生变化

13、深拷贝的实现方式

1、使用递归的方式实现深拷贝

2、通过JSON对象实现深拷贝

3、通过jQuery的extend方法实现深拷贝

14、forEach、forOf和forIn的区别

1、foreach:一般用于对数组的遍历,不用于对对象的遍历,此方法会对数组中的每一个值进行遍历,直至全部遍历完成。因此在其中的return,break会失效。只能是数组

2、 forof:一般用于遍历对象,循环遍历对象的value,与forEach不同的是,它可以正常的响应break, return,continue.

3、forin:一般用于遍历对象,循环遍历对象的key,不推荐遍历数组。