当前位置: 首页 > news >正文

2025面试题(10)

一、从输入url到渲染出页面的整个过程?

  1. DNS解析:将域名转换为IP地址。

  2. TCP连接:与服务器建立TCP三次握手。

  3. HTTP请求:发送HTTP请求(GET/POST等)。

  4. 服务器响应:返回HTML文件及资源(CSS/JS/图片等)。

  5. 解析与渲染

    • HTML解析:构建DOM树。

    • CSS解析:生成CSSOM树,与DOM合并为渲染树(Render Tree)。

    • 布局(Layout):计算元素位置和大小。

    • 绘制(Paint):将渲染树转换为屏幕像素。

  6. JS执行:阻塞DOM/CSSOM构建,可通过async/defer优化。

关键点

  • 优化方向:减少DNS查询、HTTP请求(合并资源)、Critical CSS、懒加载。

  • 将 CSS 放在<head>的核心目的是让浏览器尽早加载和解析样式,避免无样式闪烁、优化渲染流程,从而提升用户体验和页面性能。这是网页开发中被广泛遵循的最佳实践。

二、window.onload 和DOMContentLoaded的区别?

  1. DOMContentLoaded:DOM 树构建完成后触发,无需等待样式表、图片等资源加载完毕。
  2. window.onload:页面所有资源(DOM、样式表、图片、JS 等)全部加载完成后才触发,晚于 DOMContentLoaded。

关键区别

  • DOMContentLoaded更快,适合初始化交互;onload更晚,确保所有资源可用。

三、性能优化?

性能优化原则:多使用内存、缓存或其他方法
减少 CPU 计算量,减少网络加载耗时
(适用于所有编程的性能优化 -- 空间换时间 )

1.让加载更快:

(1)减少资源体积,压缩代码;

(2)减少访问次数:合并代码,SSR服务器端渲染,缓存

      缓存:静态资源加 hash 后缀,根据文件内容计算 hash;
文件内容不变,则 hash 不变,则 url不变;
url 和文件不变,则会自动触发 http 缓存机制,返回 304;

      SSR:服务器端渲染:将网页和数据一起加载,一起渲染;
非 SSR(前后端分离):先加载网页,再加载数据,再渲染数据;
早先的 JSPASP PHP,现在的 vue React SSR;

 (3)使用更快的网络:CDN

 2.让渲染更快:

  (1)css放在head,JS放在body下面

  (2)尽早开始执行JS,用DOMContentLoaded触发

  (3)懒加载(图片懒加载,上滑加载更多)

        

  (4)对DOM查询进行缓存

  (5)频繁DOM操作,合并到一起插入DOM结构

  (6)节流throttle防抖debounce

       防抖:监听一个输入框的,文字变化后触发 change 事件
直接用 keyup 事件,则会频发触发 change 事件
防抖:用户输入结束或暂停时,才会触发 change 事件

节流:拖拽一个元素时,要随时拿到该元素被拖拽的位置
直接用 drag 事件,则会频发触发,很容易导致卡顿
节流:无论拖拽速度多快,都会每隔 100ms 触发一次

http://www.lryc.cn/news/611712.html

相关文章:

  • Shader开发(八)创建第一个三角形
  • 微信小程序多媒体功能实现
  • 微信小程序初次运行项目失败
  • 深入理解SpringMVC DispatcherServlet源码及全流程原理
  • 开发教育全链路管理系统 + 微信小程序,为各类教育主体注入数字化动力!
  • [LVGL] 配置lv_conf.h | 条件编译 | 显示屏lv_display
  • 微信小程序中使用TensorFlowJS从环境搭建到模型训练及推理模型得到预测结果
  • Python驱动的无人机多光谱-点云融合技术在生态三维建模与碳储量/生物量/LULC估算中的全流程实战
  • 无人机航拍数据集|第5期 无人机高压输电线铁塔鸟巢目标检测YOLO数据集601张yolov11/yolov8/yolov5可训练
  • 大疆无人机连接Jetson主板
  • 【CUDA】C2 矩阵计算
  • conda 环境配置国内镜像加速(2025)
  • Conda虚拟环境安装包
  • DNS 服务器
  • 服务器巡检项目
  • Dart语言“跨界”指南:从JavaScript到Kotlin,如何用多语言思维快速上手
  • C++ - 仿 RabbitMQ 实现消息队列--服务器模块实现
  • Linux网络编程基础-简易TCP服务器框架
  • 服务器——“查询不到显卡驱动,且输入nvidia-smi报错”的解决办法
  • Docker的安装,服务器与客户端之间的通信
  • copy_file_range系统调用及示例
  • 【网络运维】Linux:简单DHCP服务器的部署
  • Profinet转Ethernet IP网关接入五轴车床上下料机械手控制系统的配置实例
  • 03-mysql/redis/apache安装记录
  • 开疆智能ModbusTCP转Profinet网关连接安川YRC1000机器人配置案例
  • PHP官方及第三方下载地址全指南(2025最新版)
  • apache-superset config.py、superset_config.py完整配置项解读
  • SQL的条件查询
  • SQL120 贷款情况
  • CSS高频属性速查指南