面试高频 —— 与浏览器相关的几道经典难题详解

简介: 在浏览器中输入URL并回车后都发生了什么?(阿里真题)

解题过程:

1. 解析url,去域名系统里匹配IP(域名是真实IP的映射)


  1. 解析url过程(例:https://www.baidu.com): https —— 传输协议, www —— 服务器,baidu.com —— 域名

5.png


2.如果是第二次访问某个网址,会先去浏览缓存里找是否有这个url,找到对应IP

3.浏览器与网站建立链接 (TCP三次握手,期间不携带任何真实数据)

6.png

4.请求数据

5.渲染页面(详细过程如图)

7.png

TCP断开连接(四次挥手)


2. css 加载会造成阻塞吗 ?



如以上图,可知:


CSS加载不会阻塞DOM解析

CSS加载会DOM渲染

CSS会阻塞JS执行


3. 常见的性能优化策略(面向加载)



   a. 减少http请求(精灵图,雪碧图,CSS、js文件的合并,用CSS代替图片)

   b. 缩减文件大小(资源压缩,webpack,GZip压缩,图片压缩)

   c. CDN ( 大图加载,大文件,类库)

   d. http2

   e. SSR服务端渲染(vue),预渲染...

   f. 懒加载,减少首屏加载量

   g. 减少回流,使用定位等,对于操作量比较大的dom,用文档碎片去做(虚拟dom原理)

   h. 缓存(配置cache文件)



4. 图片懒加载实现原理


实现原理:即判断当前图片是否在当前视口中,如果是则加载,当滚动条滚动的时候,加上滚动条的距离,继续判断。


详见代码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <style>
    img {
      display: block;
      margin-bottom: 50px;
      width: 400px;
      height: 400px;
    }
  </style>
</head>
<body>
  <img src="./img2/timg.gif" data-src="./img2/time.jpg" alt="">
  <img src="./img2/timg.gif" data-src="./img2/time2.jpg" alt="">
  <img src="./img2/timg.gif" data-src="./img2/time3.jpg" alt="">
  <img src="./img2/timg.gif" data-src="./img2/time4.jpg" alt="">
  <img src="./img2/timg.gif" data-src="./img2/time5.jpg" alt="">
  <img src="./img2/timg.gif" data-src="./img2/time6.jpg" alt="">
  <img src="./img2/timg.gif" data-src="./img2/time7.jpg" alt="">
  <img src="./img2/timg.gif" data-src="./img2/time8.jpg" alt="">
  <img src="./img2/timg.gif" data-src="./img2/time9.jpg" alt="">
  <script>
    let num = document.getElementsByTagName('img').length;  // 9
    let img = document.getElementsByTagName('img');
    let n = 0;
    lazyload();
    window.onscroll = lazyload;
    function lazyload(){
        // 可见区域高度
        let seeHeight = document.documentElement.clientHeight; 
        // 滚动条距离顶部的高度 
        let scrollTop = document.documentElement.scrollTop || document.body.scrollTop; 
        for(let i = n; i < num; i++){
          // 是否在当前视口之内
          if(img[i].offsetTop < seeHeight + scrollTop){
            if(img[i].getAttribute("src") == "./img2/timg.gif"){
              // 替换
              img[i].src = img[i].getAttribute("data-src");
            }
            n = i + 1;
          }
        }
    }
  </script>
</body>
</html>



目录
相关文章
|
9月前
|
Web App开发 编解码 前端开发
面试题22:如何测试Web浏览器的兼容性?
面试题22:如何测试Web浏览器的兼容性?
209 3
|
9月前
|
存储 算法 前端开发
【面试题】说一下浏览器垃圾回收机制?
【面试题】说一下浏览器垃圾回收机制?
102 1
|
3月前
|
存储 缓存 网络协议
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点,GET、POST的区别,Cookie与Session
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点、状态码、报文格式,GET、POST的区别,DNS的解析过程、数字证书、Cookie与Session,对称加密和非对称加密
|
3月前
|
缓存 前端开发 JavaScript
"面试通关秘籍:深度解析浏览器面试必考问题,从重绘回流到事件委托,让你一举拿下前端 Offer!"
【10月更文挑战第23天】在前端开发面试中,浏览器相关知识是必考内容。本文总结了四个常见问题:浏览器渲染机制、重绘与回流、性能优化及事件委托。通过具体示例和对比分析,帮助求职者更好地理解和准备面试。掌握这些知识点,有助于提升面试表现和实际工作能力。
95 1
|
6月前
|
存储 JavaScript 前端开发
|
6月前
|
Web App开发 存储 缓存
|
前端开发 安全 应用服务中间件
前端经典面试题 | 浏览器跨域
前端经典面试题 | 浏览器跨域
|
JavaScript 前端开发 API
前端学习笔记202307学习笔记第五十七天-模拟面试笔记react-fiber能带来浏览器的加速吗
前端学习笔记202307学习笔记第五十七天-模拟面试笔记react-fiber能带来浏览器的加速吗
69 0
|
9月前
|
缓存 网络协议 前端开发
面试题:浏览器中输入URL返回页面过程?
面试题:浏览器中输入URL返回页面过程?
122 0
|
9月前
|
消息中间件 前端开发 Java
【面试题】前端必修-浏览器的渲染原理
【面试题】前端必修-浏览器的渲染原理

热门文章

最新文章