堆
堆,即完全二叉树,按左右节点顺序填充,可以不完整,但必须按顺序
比如 [1, 2, 3], [1, 2, 3, 4, 5]
最小堆与最大堆:
所有节点的左右子节点都大于等于当前节点的为最小堆,反之,所有节点的左右子节点值都小于等于当前节点值为最大堆。
最小堆:
最大堆:
最值问题
比如最大的第K个元素
新建大小为K的最小堆,遍历完成后,返回堆顶的元素即位最大的第K个元素(通俗掉就是第K大的元素)。
1 | Q: |
原型链:
1 | function myInstanceof(a, b) { |
测试一下:
1 | myInstanceof([], Array) |
MDN上关于new的操作:
我们的函数也可以按照这个步骤来:
1 | function myNew(Constructor, ...args) { |
测试一下:
面试也会问一些框架相关的问题,初级的比如基本使用、常见的问题,中高级的会问一些优化方法,实现原理,不过不会问太多,了解些常见的即可。
async/await是语法糖,可以让我们以同步代码的写法执行异步逻辑。
这个问题也很经典,本人在18年的时候被问到过,当时第一次遇到经一位面试官解释后有了了解,以一个场景来说就是旧版本手机浏览器在触发click事件会有300ms左右的延迟,这个是故意而为之,当时会导致的问题一个就是体验不好,另一个就是点击穿透(比如手点击了上层,这时我通过代码手段隐藏了上层元素,300ms后,下层元素则会响应这个click事件)。
值得注意的是到现在大多数浏览器已经在内部优化了,比如Chrome