前端面试题(二)| 课程笔记

前端面试题课程笔记,课程笔记仅作为自用备忘

Ch5 知识深度-原理和源码

5.1 JS内存垃圾回收用什么算法?

1. 什么是 垃圾回收Garbage collection

  • fn1里的数据会被回收
  • fn2因为有外部引用,所以不能回收
  • 闭包里的数据也不会被回收
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

2.垃圾回收的算法

  • 引用计数(之前)
    • 缺点:循环引用的问题

在这里插入图片描述在这里插入图片描述

闭包不算内存泄露,因为闭包是有预期的,内存泄露是非预期的。
在这里插入图片描述- 标记清除(现代)


5.2 (连环问)JS闭包是内存泄露吗?JS内存泄露的场景有哪些?

1.闭包不是内存泄露

闭包里的数据不能被回收

2.内存泄露的场景

  • 被全局变量、函数引用,组件销毁时未清除
    在这里插入图片描述

  • 被全局事件、定时器引用,组件销毁时未清除
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

  • 被自定义事件引用,组件销毁时未清除

3.扩展

WeakMap和WeakSet
在这里插入图片描述

5.3 如何检测JS内存泄露?

在这里插入图片描述在这里插入图片描述

5.4 浏览器和node.js事件循环有什么区别?

在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述![在这里插入图片描述](https://img-blog.csdnimg.cn/2127fc54a02248dba9980aa8a507ee17.png在这里插入图片描述在这里插入图片描述在这里插入图片描述


5.5 虚拟DOM真的很快吗?

在这里插入图片描述在这里插入图片描述在这里插入图片描述

5.6 遍历一个数组用for和forEach哪个更快?

for更快,但实际中差别不大
在这里插入图片描述在这里插入图片描述在这里插入图片描述

5.7 node.js如何开启多进程,进程如何通讯?

5.8 清描述js-bridge的实现原理

在这里插入图片描述在这里插入图片描述

5.9 Vue每个生命周期都做了什么?

1.beforeCreate

  • 创建一个空白的Vue实例
  • data method尚未被初始化,不可使用

2.created

  • Vue实例初始化完成,完成响应式绑定
  • data method都已经初始化完成,可调用
  • 尚未开始渲染模板

3.beforeMount

  • 编译模板,调用render生成vdom
  • 还没有开始渲染DOM

4.mounted

  • 完成DOM渲染
  • 组件创建完成
  • 开始由“创建阶段”进入“运行阶段”

5.beforeUpdate

  • data完成变化之后
  • 准备更新DOM(尚未更新DOM)

6.updated

  • data发生变化,且DOM更新完成
  • (不要在updated中修改data,可能会导致死循环)

7.beforeUnmounted

  • 组件进入销毁阶段(尚未销毁,可正常使用)
  • 可移除、解绑一些全局事件、自定义事件

8.unmounted

  • 组件被销毁了
  • 所有子组件也都被销毁了

9.keep-alive组件

  • onActivated缓存组件被激活
  • onDeactived缓存组件被隐藏

5.10 连环问

1.Ajax应该在哪个生命周期?

有两个选择:created和mounted
推荐:mounted
放在created只比mounted快10ms

2.Vue3 Composition API生命周期有何区别?

在这里插入图片描述

5.11 Vue2和Vue3和React的diff算法有什么区别?

在这里插入图片描述

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

5.12 Vue-router的MemoryHistory(abstract)是什么?

不会前进和后退,网页网址不会变
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42376600/article/details/127880449