interview
frontend-classic
Node.js 有哪些全局对象它们分别有什么作用

前端经典面试题合集, Node.js 有哪些全局对象?它们分别有什么作用?

前端经典面试题合集, Node.js 有哪些全局对象?它们分别有什么作用?

QA

Step 1

Q:: Node.js 有哪些全局对象?它们分别有什么作用?

A:: Node.js 提供了多个全局对象,其中一些主要的全局对象包括:

1. global:相当于浏览器中的 window 对象,可以用来定义全局变量。 2. process:提供与当前 Node.js 进程相关的信息和控制,包括环境变量、标准输入输出等。 3. Buffer:用来处理二进制数据。 4. __dirname__filename:分别表示当前模块的目录名和文件名。 5. moduleexports:用于模块系统,帮助模块间进行引用。 6. require:用来引入外部模块。

Step 2

Q:: 在 Node.js 中,如何处理未捕获的异常?

A:: 在 Node.js 中,可以通过监听 process 对象的 uncaughtException 事件来处理未捕获的异常,例如:

 
process.on('uncaughtException', (err) => {
  console.error('There was an uncaught error', err);
  process.exit(1); // 强制退出进程
});
 

不过建议尽量避免使用这种方式,最好在代码中捕获并处理可能的异常。

Step 3

Q:: Node.js 的事件循环是什么?它是如何工作的?

A:: Node.js 的事件循环是一个基于事件驱动的非阻塞 I/O 模型。它允许 Node.js 处理大量并发连接,而无需为每个连接创建一个新的线程。事件循环主要分为以下几个阶段:

1. timers:执行 setTimeoutsetInterval 的回调。 2. I/O callbacks:执行一些系统操作的回调。 3. idle, prepare:仅在内部使用。 4. poll:检索新的 I/O 事件,执行与 I/O 相关的回调。 5. check:执行 setImmediate 的回调。 6. close callbacks:执行一些关闭回调,比如 socket.on('close', ...)

Step 4

Q:: 如何在 Node.js 中实现文件的读写?

A:: 可以使用 Node.js 提供的 fs 模块来实现文件的读写操作。例如,读取文件:

 
const fs = require('fs');
fs.readFile('path/to/file', 'utf8', (err, data) => {
  if (err) throw err;
  console.log(data);
});
 

写入文件:

 
const fs = require('fs');
fs.writeFile('path/to/file', 'Hello, World!', (err) => {
  if (err) throw err;
  console.log('File has been saved!');
});
 

Step 5

Q:: 在 Node.js 中如何使用流(Streams)?

A:: Node.js 中的流可以处理大文件或大量数据时非常有用。流有四种类型:ReadableWritableDuplexTransform。示例:

读取流:

 
const fs = require('fs');
const readStream = fs.createReadStream('path/to/file');
readStream.on('data', (chunk) => {
  console.log('New chunk received:', chunk);
});
 

写入流:

 
const writeStream = fs.createWriteStream('path/to/file');
writeStream.write('Hello, World!');
writeStream.end();
 

用途

Node`.js 的全局对象、事件循环、异常处理、文件读写和流等是日常开发中经常遇到的核心概念和操作。了解这些内容能够帮助开发者编写更高效、更稳定的代码,尤其是在处理高并发、I/`O 密集型任务时。例如,服务器处理用户请求、文件系统操作、大数据处理等场景都会用到这些知识。\n

相关问题

🦆
如何在 Node.js 中使用模块系统?

Node.js 使用 CommonJS 模块系统,通过 require 函数引入模块,通过 module.exportsexports 对象导出模块。

🦆
什么是 Node.js 的单线程?它如何实现并发?

虽然 Node.js 是单线程的,但它通过事件循环和非阻塞 I/O 操作来实现并发处理,使其能够高效地处理大量并发请求。

🦆
解释 Node.js 的中间件是什么?如何使用中间件?

中间件是指在处理请求的过程中介于请求和响应之间的一系列函数。Express 框架中广泛使用中间件来处理请求、响应和应用程序逻辑。

🦆
如何在 Node.js 中实现异步编程?

Node.js 提供了多种异步编程方式,包括回调函数、Promise、async/awaitasync/await 是目前比较流行和易于使用的异步编程方式。

🦆
Node.js 中的事件发射器EventEmitter是什么?

事件发射器是 Node.js 中处理事件的核心机制。它提供了一种发布-订阅模式,通过 events 模块可以创建、监听和触发事件。