shuangmianxiaoQ / study-note

日常学习或工作笔记
6 stars 1 forks source link

浏览器相关面试题 #47

Open shuangmianxiaoQ opened 5 years ago

shuangmianxiaoQ commented 5 years ago

浏览器输入URL到展示的过程

browser workflow

重绘与重排

浏览器事件循环机制(Event Loop)

  1. 执行同步代码,执行完成后清空调用栈
  2. 遇到异步代码,将异步代码先加入任务队列
    • 微任务(Microtask):Promise, Ajax
    • 宏任务(Macrotask):定时器, IO操作, UI Rendering
  3. 从微任务队列中取出队首的任务,放入调用栈执行,直到所有微任务执行完毕
  4. 从宏任务队列中取出队首的任务,放入调用栈执行,直到所有宏任务执行完毕

Event Loop

浏览器存储

区别

特性 Cookie localStorage sessionStorage indexDB
生命周期 一般由服务器生成,可设置失效时间,没有设置的话默认关闭浏览器后失效 除非手动清除,否则永久保存 仅在当前会话生效,关闭页面或浏览器后被清除 除非手动清理,否则一直存在
存放数据大小 4K左右 一般为5MB 一般为5MB 无限
与访服务器通信 每次请求都会携带在HTTP头中,如果使用Cookie保存过多数据会带来性能问题 仅在客户端保存 仅在客户端保存 仅在客户端保存
易用性 需要自己封装,原生Cookie接口不友好 原生接口可以接受,可再次封装对对象更好的支持 原生接口可以接受,可再次封装对对象更好的支持 使用相对复杂

应用场景

垃圾回收与内存泄漏

垃圾回收:将内存中不再使用的数据进行清理,释放出内存空间,常用的GC回收方式是标记清除法 内存泄漏:由于某种原因导致程序未能释放不再使用的内存,场见的内存泄漏有:意外的全局变量闭包,未清除的定时器,未销毁的监听事件DOM引用