前端面试题:HTML面试题

284 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第2天 二、HTML+CSS 面试题

1、HTML 面试题

1.1 如何理解 HTML 语义化?

  • 让人更容易读懂(增加代码可读性)。
  • 让搜索引擎更容易读懂,有助于爬虫抓取更多的有效信息,爬虫依赖于标签来确定上下文和各个关键字的权重(SEO)。
  • 在没有 CSS 样式下,页面也能呈现出很好地内容结构、代码结构。

1.2 script 标签中 defer 和 async 的区别?

  • script :会阻碍 HTML 解析,只有下载好并执行完脚本才会继续解析 HTML。
  • async script :解析 HTML 过程中进行脚本的异步下载,下载成功立马执行,有可能会阻断 HTML 的解析。
  • defer script:完全不会阻碍 HTML 的解析,解析完成之后再按照顺序执行脚本。

下图清晰地展示了三种 script 的过程:

图片

1.3 从浏览器地址栏输入 url 到请求返回发生了什么

1、HTTP 请求准备阶段

  • 构建请求--浏览器构建请求行信息,准备发起网络请求 GET /index.html HTTP1.1

  • 查找缓存--如果浏览器发现请问资源在浏览器中存在副本,根据强缓存规则,如没有过期那么直接返回资源,如何查找失败进入下一个环节:

    --准备 ip 地址和端口\

    --DNS(域名和ip的映射系统) 域名解析,拿到ip之后找端口,默认为80

    --建立tcp链接(三次握手)

    --如果是https 还需要建立TLS连接

2、HTTP 发送请求

浏览器向服务端发起http请求,把请求头和请求行一起发送个服务器,服务端解析请求头如发现cache-control和etag(if-none-match),if-modified(if-modified-since)字段就会判断缓存是否过期,如果没有返回304,否则返回200

3、HTTP 响应返回

  • 浏览器拿到响应数据,首先判断是否是4XX或者5XX是就报错,如果是3XX就重定向,2XX就开始解析文件,如果是gzip就解压文件
  • TCP断开连接
  • 4次挥手
  • 浏览器解析渲染
  • 建立根据html建立dom树和css树,如果遇到script首选判断是否defer和async否则会阻塞渲染并编译执行js,如果没有则组合生成render tree,最后浏览器开启GPU进行绘制合成图层,将内容显示屏幕。

5、浏览器渲染页面

图片