1.常见的浏览器内核有哪些?
答案:
Trident 内核:IE,MaxThon,TT,The World,360,搜狗浏览器等。[又称 MSHTML]
Gecko 内核:Netscape6 及以上版本,FF,MozillaSuite/SeaMonkey 等
Presto 内核:Opera7 及以上。 [Opera 内核原为:Presto,现为:Blink;]
Webkit 内核:Safari,Chrome 等。 [ Chrome 的:Blink(WebKit 的分支)]
3.浏览器的渲染过程
答案:
- 解析HTML生成DOM树。
- 解析CSS生成CSSOM规则树。
- 将DOM树与CSSOM规则树合并在一起生成渲染树。
- 遍历渲染树开始布局,计算每个节点的位置大小信息。
- 将渲染树每个节点绘制到屏幕。
解析:
- 使用 HTML 创建文档对象模型(DOM)
- 使用 CSS 创建 CSS 对象模型(CSSOM)
- 基于 DOM 和 CSSOM 执行脚本(Scripts)
- 合并 DOM 和 CSSOM 形成渲染树(Render Tree)
- 使用渲染树布局(Layout)所有元素
- 渲染(Paint)所有元素
4.为何会出现浏览器兼容问题
答案:
- 同一产品,版本越老 bug 越多
- 同一产品,版本越新,功能越多
- 不同产品,不同标准,不同实现方式
- 要不要做
- 产品的角度(产品的受众、受众的浏览器比例、效果优先还是基本功能优先)
- 成本的角度 (有无必要做某件事)
2.做到什么程度
- 让哪些浏览器支持哪些效果
3..如何做
-
根据兼容需求选择技术框架/库(jquery)
-
根据兼容需求选择兼容工具(html5shiv.js、respond.js、css reset、normalize.css、Modernizr)
-
条件注释、CSS Hack、js 能力检测做一些修补
-
渐进增强(progressive enhancement): 针对低版本浏览器进行构建页面,保证最基本的功能,然后再针对高级浏览器进行效果、交互等改进和追加功能达到更好的用户体验
-
优雅降级 (graceful degradation): 一开始就构建完整的功能,然后再针对低版本浏览器进行兼容。
解析:参考
5.跨标签页的通讯方式有哪些(哔哩哔哩)
答案:
(1) BroadCast Channel
(2) Service Worker
(3) LocalStorage + window.onstorage监听
(4) Shared Worker + 定时器轮询(setInterval)
(5) IndexedDB + 定时器轮询(setInterval)
(6) cookie + 定时器轮询(setInterval)
(7) window.open + window.postMessage
(8) Websocket
6.请求时浏览器缓存 from memory cache 和 from disk cache 的依据是什么,哪些数据什么时候存放在 Memory Cache 和 Disk Cache中?
答案:
7.浏览器如何解析css选择器?
答案:
8.浏览器是如何渲染UI的?
答案:
9.浏览器的主要组成部分是什么?
答案:
10.浏览器性能问题-使用 Webpack 优化项目
答案:
11.怎样选择合适的缓存策略
答案:
12.说说浏览器缓存机制
答案:
13.说说你对Service worker的理解
答案:
14.永久性重定向(301)和临时性重定向(302)对 SEO 有什么影响
答案:
15.浏览器 Eventloop 和 Node 中的有什么区别
答案:
答案: