浏览器面试题

1. 不同标签页通讯

本质原理就是去运用一些可以 共享的中间介质,因此比较常用的有 以下方法

  • 通过父页面window.open()和子页面postMessage
  • 异步下,通过 window.open('about: blank')tab.location.href = ‘*’ 设置同域下共享的 localStorage 与监听 window.onstorage
  • 重复写入相同的值无法触发 , 会受到浏览器隐身模式等的限制
  • 设置共享 cookie不断轮询脏检查(setInterval)
  • 借助服务端或者中间层实现

2. 浏览器架构

  1. 用户界面(The user interface): 包括地址栏、前进/后退按钮、书签菜单等。除了浏览器主窗口显示的您请求的页面外,其他显示的各个部分都属于用户界面。
  2. 浏览器引擎(The browser engine): 在用户界面和呈现引擎之间传送指令
  3. 呈现引擎(The rendering engine):负责显示请求的内容。如果请求的内容是 HTML,它就负责解析 HTML 和 CSS 内容,并将解析后的内容显示在屏幕上。
  4. 网络(Networking): 用于网络调用,比如 HTTP 请求。其接口与平台无关,并为所有平台提供底层实现
  5. JavasScript 解释器(JavaScript interpreter):用于解析和执行 JavaScript 代码。
  6. 用户界面后端(UI backend): 用于绘制基本的窗口小部件,比如组合框和窗口。其公开了与平台无关的通用接口,而在底层使用操作系统的用户界面方法。
  7. 数据存储组成(Data storage): 这是持久层。浏览器需要在硬盘上保存各种数据,例如 Cookie。新的 HTML 规范 (HTML5) 定义了“网络数据库”,这是一个完整(但是轻便)的浏览器内数据库。

3. 浏览器下事件循环(Event Loop)

事件循环是指: 执行一个宏任务,然后执行清空微任务列表,循环再执行宏任务,再清微任 务列表

  • 微任务 microtask(jobs): promise / ajax / Object.observe(该方法已废弃)
  • 宏任务 macrotask(task): setTimout / script / IO / UI Rendering

4. 从输入 url 到展示的过程

  1. DNS 解析
    浏览器根据请求的 URL 交给 DNS 域名解析,找到真实 IP
  2. TCP 三次握手建立连接
  3. 发送请求,分析 url,设置请求报文(
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值