面试篇:(十二)Node.js 与后端基础 - 2024 年全栈面试指南
1. 什么是 Node.js?它有什么特点?
回答:Node.js 是一个基于 Chrome V8 引擎构建的 JavaScript 运行时,它让你可以用 JavaScript 编写服务器端的应用程序。Node.js 的主要特点包括:
- 异步和事件驱动:Node.js 使用非阻塞的 I/O 操作,意味着当执行某个操作时,不需要等待它完成就可以进行其他操作。
- 高性能:由于使用了 V8 引擎,Node.js 的性能非常高,适合处理大量并发请求。
- 单线程:Node.js 是单线程的,但通过事件循环机制可以处理多个连接,适合 I/O 密集型的应用。
2. 如何安装 Node.js?
回答:安装 Node.js 非常简单。可以去 Node.js 的官方网站 nodejs.org 下载对应操作系统的安装包,按照提示安装即可。安装完成后,可以在命令行中使用以下命令检查版本:
node -v
npm -v
这里 node
是 Node.js 的命令行工具,npm
是 Node.js 的包管理器。
3. 什么是 npm?它的作用是什么?
回答:npm(Node Package Manager)是 Node.js 的包管理工具,用于管理 JavaScript 的库和工具。使用 npm,你可以方便地安装、更新和删除项目依赖包。
示例:
要安装一个库,比如 express
,只需在命令行中运行:
npm install express
安装后,express
库会被添加到项目的 node_modules
文件夹中,并在 package.json
文件中记录依赖。
4. 如何创建一个简单的 Node.js 服务器?
回答:创建一个简单的 Node.js 服务器很容易。以下是一个基本的示例:
const http = require('http');
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello, World!\n');
});
server.listen(3000, () => {
console.log('Server running at http://localhost:3000/');
});
在上述代码中,http.createServer
创建了一个新的 HTTP 服务器,当访问时返回 “Hello, World!” 的响应。服务器在 3000 端口监听请求。
5. 什么是 Express.js?它有什么优势?
回答:Express.js 是一个基于 Node.js 的轻量级 web 应用框架,用于快速构建 web 应用和 API。它的优势包括:
- 简洁的 API:Express 提供了简单易用的路由和中间件系统,使得开发变得更加方便。
- 丰富的插件:Express 有很多社区支持的中间件,可以快速集成各种功能,如用户认证、数据处理等。
- 高性能:Express 是构建在 Node.js 之上的,保持了高性能的特点。
6. 中间件在 Express.js 中是什么?
回答:中间件是 Express.js 的核心概念之一,它是一个函数,可以访问请求对象(req)、响应对象(res)和下一个中间件函数(next)。中间件可以执行以下操作:
- 执行代码
- 修改请求和响应对象
- 结束请求-响应循环
- 调用下一个中间件
示例:
app.use((req, res, next) => {
console.log('Request received!');
next(); // 调用下一个中间件
});
7. 如何处理 Node.js 中的错误?
回答:在 Node.js 中,错误处理非常重要。可以通过以下几种方式处理错误:
- try-catch:在异步函数中使用
try-catch
处理同步代码中的错误。 - Promise.catch:在 Promise 中使用
.catch()
来处理错误。 - 错误中间件:在 Express 中,定义一个错误处理中间件函数来处理应用中的错误。
示例:
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).send('Something broke!');
});
8. 什么是 RESTful API?
回答:RESTful API 是一种基于 REST(Representational State Transfer)架构风格的 API。它通过 HTTP 协议提供了一种简单且标准化的方式来访问和操作资源。RESTful API 通常使用以下 HTTP 方法:
- GET:获取资源
- POST:创建资源
- PUT:更新资源
- DELETE:删除资源
9. 如何连接到 MongoDB 数据库?
回答:可以使用 mongoose
库来连接和操作 MongoDB。以下是一个基本示例:
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/mydatabase', {
useNewUrlParser: true, useUnifiedTopology: true })
.then(() => console.log('MongoDB connected!'))
.catch(err => console.