面试题总结(一)

考察了一些基础知识点

alt text
alt text
alt text

1、考察内存机制
alt text
实际打印出来type、size都是全局作用域下的值,在内存图中它们是以值的方式存储,而对于format是一个数组,对于引用类型的值,它在内存图中是以地址的方式存储,当你往同一个地址(format数组)push值,就会更新数据,因此打印出来的只有数组发生了更新

2、考察JS单线程的执行机制
在前面的一篇博客中有总结过JS的执行机制,这里打印的顺序为:1 -> 3 -> 6 -> 4 -> undefined -> 2
alt text

当进入这段代码,这是一个宏任务,首先打印1;看到setTimeout属于另一个宏任务,将它放在宏任务对列里;看到Promise是同步任务,执行并打印3;看到then属于微任务,将它放在这段代码(宏任务)下的微任务对列里;随后打印6;此时一轮宏任务执行完毕,看微任务队列有一个任务then,它会打印成功函数4,而失败函数5不会被打印出来;此时再去查看宏任务对列有一个setTimeout函数,执行并打印出2。

3、考察数组去重,可以用

1
2
a = [1,2,5,1,4,5,2,4,3]
Array.from(new Set(a))

但题目还绕了一个弯,需要用两次reverse()方法使得“重复则保留最后出现的数值”

4、考察正则,当时看到就两眼蒙逼,根本不会写正则

方大大给出的做法:alt text

5、用到Promise.all的方法

// Promise.all, 当所有的 Promise 对象都完成后再执行
alt text

0%