胖蔡说技术
随便扯扯

[前端面试题] HTML面试题(二)

1、介绍下从浏览器地址栏输入url到显示页面的全过程

  • 输入url后会通过DNS解析,实现网址到IP地址的转换
  • 建立TCP链接,经过三次握手成功建立连接
  • 客户端发起http请求网页数据,后台返回网页数据给浏览器
  • 读取页面内容,浏览器渲染,构建 DOM 树、构建 CSSOM
  • 将解析步骤中创建的 CSSOM 树和 DOM 树合成为 Render 树,然后用于计算每个可见元素的布局,最后将其绘制到屏幕上

2、简单介绍下TCP的三次握手

  • 客户端向服务器发送一个 SYN 包,并等待服务器确认。
  • 服务器接收到客户端发来的 SYN 包后,对该包进行确认后结束 LISTEN 阶段,并返回一段 TCP 报文。
  • 客户端接收到发送的 SYN + ACK 包后,明确了从客户端到服务器的数据传输是正常的,从而结束 SYN-SENT 阶段,并返回最后一段报文。
  • 当服务器端收到来自客户端确认收到服务器数据的报文后,得知从服务器到客户端的数据传输是正常的,从而结束 SYN-RECV 阶段,进入 ESTABLISHED 阶段,从而完成三次握手。

3、简单介绍下TCP的四次挥手

和三次握手的发起者必须是客户端不同,断开 TCP 连接的发起方可以是任何一方。为了方便讲解,下面我们以客户端作为发起者进行描述。

  • 第一次挥手,客户端向服务端发送 TCP 请求,FIN 设置为 1,seq 设置为一个随机数 x,FIN 是一个标志位,表示结束(finish)的意思,1 等同于 true。seq 是个序列号,一个装数据的地方,我们这里给他设置为一个随机数,用于给服务端做确认,好对应上这个 TCP 请求。
  • 第二次挥手,服务端发送 TCP,并将 TCP 头部中的ACK 设置为 1(acknowledge,表示 “收到” 的意思),ack 确认号设置为 x+1(x 来自第一次挥手),当客户端收到这个 TCP 请求时,表示从客户端到服务端的通道已经关闭,你不能再向服务端发正常的数据请求了。此时服务端到客户端还是可以发送数据的。如果服务端有一些之前的 TCP 请求没来得及响应,在第二次挥手和第三次挥手期间还是可以去返回的。
  • 第三次挥手,服务端向客户端发送 TCP 请求:FIN 设置为 1,seq 设置为一个随机数 y。类似第一次挥手,只是这次发送方为服务端。
  • 第四次挥手,客户端向服务端发送 TCP 请求:ACK 设置为 1,ack 确认号设置为 y+1。服务端接收到这个请求后,服务端就能成功变成关闭(CLOSE)状态。客户端则会等一段时间再进入关闭状态,因为第四次挥手不一定能成功发给服务端,所以要等一下,看看服务端会不会因为没收到第四次挥手,而重发第三次挥手。

4、link和@import 引入CSS有什么区别

link@import是外部引入CSS的两种方式。link只能在HTML页面中引入外部样式,在加载页面时会被同时加载。@import 既可以在HTML页面中导入外部样式,也可以在css样式文件中导入外部css样式,将在页面加载完毕后才会被加载。

5、如何做好SEO优化?

  • 多使用html语义化标签,保证网站结构的清晰、简洁
  • 关键词优化
  • 内容优化:要提供高质量、有价值的内容,吸引用户留下来,增加用户停留时间和页面访问量,同时也可以提升网站的信誉度和排名。
  • 外部链接优化:多添加高权重外链

6、HTML性能优化能做哪些?

  • DNS解析优化:可能稳定的DNS服务器
  • 浏览器下载、解析、渲染页面优化:优化 CSS 性能,减少外部HTTP请求,压缩 CSS, JS 和 HTML,使用 CDN 和缓存提高速度。
  • 服务端处理优化:Redis缓存、数据库存储优化或是系统内的各种中间件以及Gzip压缩等。

赞(0) 打赏
转载请附上原文出处链接:胖蔡说技术 » [前端面试题] HTML面试题(二)
分享到: 更多 (0)

请小编喝杯咖啡~

支付宝扫一扫打赏

微信扫一扫打赏