说下你对DOM树的理解
- dom解析遇到js会暂停解析
- js有可能会操作css, 所以css会阻塞js, js需要等待css才能执行
说下事件模型
- 我特么不知所措
浏览器缓存策略是怎样的
- 命中强缓存
- 直接走缓存
- 不命中强缓存
- 走协商缓存
- 命中协商缓存走协商缓存
- 没有命中, 重新获取资源
聊下你知道的浏览器架构
- 主要有浏览器进程
- 渲染进程
- 插件进程
- 网络进程
- GPU进程
- 浏览器进程主要协调其他进程已经一些浏览器的功能比如前进后退等
- 渲染进程主要负责渲染js执行等
- GPU进程处理其他进程的GPU任务
- 插件进程主要处理浏览器插件
- 每个tab标签会创建一个渲染进程去处理, 这也是为什么一个页面崩溃不会影响其他tab
- Chrome后来改成了面向服务架构, 将网络、Gpu、文件等进程等基础功能抽离成基础服务供其他地方调用
如何定位内存泄露
- chrome devTool的 memory面部 确认是否存在内存泄露的情况
- 然后排查 定时器,事件是否销毁
- 内存泄露能被感知出来, 基本都是轮询才有可能产生, 重点排除轮询代码和定时器递归之类的代码