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

前端面试准备-5

1.Node.js中的process.nectTick()有什么作用

将一个回调函数插入到当前执行栈的尾部,在下一次事件轮询之前调用这个回调函数

2.什么是Node.js中的事件发射器,作用是什么,如何使用

提供一种机制,可以创建、触发和监听自定义事件。他的作用是允许我们对异步事件进行订阅并在事件发生时执行回调函数

使用步骤:

①:创建一个事件发射器对象

②:使用on()方法为特定事件注册监听器

③:使用emit()方法触发事件

const EventEmitter = require('events');
const eventEmitter = new EventEmitter();// 注册一个事件和对应的监听器
eventEmitter.on('greet', (name) => {console.log(`Hello, ${name}!`);
});// 触发事件
eventEmitter.emit('greet', 'World');

3.Node.js中的事件循环

事件循环(Event Loop) 是其异步编程模型的核心机制,是一个永远允许的循环,它允许 Node.js 以非阻塞的方式执行代码,尽管 JavaScript 本身是单线程的。

阶段说明
timers处理 setTimeoutsetInterval
I/O callbacks执行延迟到下轮循环的 I/O 回调
idle, prepare内部使用
poll轮询新的 I/O 事件
check处理 setImmediate 回调
close callbackssocket.on('close')

 

4.什么是非阻塞I/O,Node.js如何实现非阻塞I/O

非阻塞 I/O(Non-blocking I/O) 是指发起 I/O 操作(如读取文件、访问数据库、网络请求)时,程序不需要等待该操作完成,而是可以继续执行后续代码。一旦 I/O 完成,通过回调函数、事件或 Promise 通知程序结果。

5.如何解决前端SPA应用首屏加载速度慢的问题

①: 代码分割

  • 动态导入:利用 ES6 的 import() 动态加载模块,按需加载代码。
  • 路由懒加载:结合路由框架(如 React Router、Vue Router),实现路由组件的懒加载。
  • webpack 配置:利用 webpack 的 splitChunks 插件来分割代码,确保只有当用户访问特定页面时才加载相应的代码块。

②: 开启 gzip 压缩。

  • 在服务器端配置 gzip 压缩,减少传输的数据量。

③:优化资源加载

  • 预加载与预渲染:使用 <link rel="preload"> 和 <link rel="prefetch"> 提前加载关键资源。
  • 使用 Service Worker:通过 Service Worker 缓存静态资源,减少网络请求。
  • 延迟加载:对于非关键资源(如图片和视频),使用懒加载技术延迟加载。

④:图片优化

⑤:Server-Side Rendering (SSR)

  • 对于首屏加载特别敏感的应用,可以考虑采用服务端渲染技术,预先生成 HTML 内容发送给客户端,减少首屏空白时间。

 

 

 

 

 

 

 

http://www.xdnf.cn/news/10504.html

相关文章:

  • Mask_RCNN 环境配置及训练
  • QT中子线程触发主线程弹窗并阻塞等待用户响应-传统信号槽实现
  • DRW - 加密市场预测
  • 考研系列—操作系统:第四章、文件管理(part.2)
  • 利用DeepSeek编写能在DuckDB中读PostgreSQL表的表函数
  • 多任务——进程
  • 基于机器学习的心脏病预测模型构建与可解释性分析
  • WIN11+VSCODE搭建的c/c++环境调试报错解决
  • vue+mitt的简便使用
  • API异常信息如何实时发送到钉钉
  • 重读《人件》Peopleware -(14)Ⅱ 办公环境 Ⅶ 把门带上
  • Windows商店中的免费扫雷游戏应用
  • 将手机网络经USB数据线和本地局域网共享给华为AP6050DN无线接入点
  • 任务22:创建示例Django项目,展示ECharts图形示例
  • 【渲染】拆解三国:谋定天下场景渲染技术
  • 3D Gaussian splatting 06: 代码阅读-训练参数
  • 《机器学习数学基础》补充资料:韩信点兵与拉格朗日插值法
  • [yolov11改进系列]基于yolov11引入多尺度空洞注意力MSDA的python源码+训练源码
  • “StPd” 陷阱 | 认知偏差?自我局限?还是清醒者的阵痛?
  • 如何排查Redis单个Key命中率骤降?
  • Java 面试中的数据库设计深度解析
  • 【GESP真题解析】第 4 集 GESP 三级 2023 年 6 月编程题 1:春游
  • 高效Excel数据净化工具:一键清除不可见字符与格式残留
  • 利用 Python 爬虫获取淘宝商品详情
  • SOC-ESP32S3部分:23-文件系统
  • 基于STM32的流水线机器人自动分拣系统设计与实现:技术、优化与应用
  • 力扣HOT100之动态规划:416. 分割等和子集
  • 复杂业务场景下 JSON 规范设计:Map<String,Object>快速开发 与 ResponseEntity精细化控制HTTP 的本质区别与应用场景解析
  • OS10.【Linux】yum命令
  • Tomcat 线程模型详解性能调优