25 个顶级 Node.js 面试问题和答案 (PDF)
Node.js 面试题及答案(初学者)
1) 什么是 Node.js?
Node.js 是一种用于构建可伸缩程序的服务器端脚本。与许多其他服务器端语言相比,其主要优点是无阻塞 I/O。
2) Node.js 是如何工作的?
Node.js 在 v8 环境中工作,这是一个利用 JavaScript 作为其脚本语言的虚拟机,并通过无阻塞 I/O 和单线程事件循环实现高吞吐量。
3) I/O 这个术语是什么意思?
I/O 是输入和输出的缩写,它会访问应用程序之外的任何内容。一旦应用程序启动,它将被加载到机器内存中以运行程序。
4) 事件驱动编程是什么意思?
在计算机编程中,事件驱动编程是一种编程范例,其中程序的流程由诸如来自其他程序或线程的消息之类的事件决定。它是一种应用程序架构技术,分为两个部分:1) 事件选择 2) 事件处理。
5) Node.js 在哪里可以使用?
Node.js 可用于以下目的。
- Web 应用程序(尤其是实时 Web 应用)
- 网络应用程序
- 分布式系统
- 通用应用程序
6) 使用 Node.js 有什么好处?
- 它提供了一种构建可伸缩网络程序的简单方法
- 通常速度很快
- 出色的并发性
- 一切异步
- 几乎从不阻塞
7) Node.js 中有两种 API 函数?
Node.js 中的 API 函数有两种:
- 异步、非阻塞函数
- 同步、阻塞函数
8) 什么是控制流函数?
在多个异步函数调用之间运行的通用代码段称为控制流函数。
9) 解释“控制流”如何控制函数调用的步骤?
- 控制执行顺序
- 收集数据
- 限制并发
- 调用程序中的下一步
10) Node.js 为什么是单线程的?
为了异步处理,Node.js 被明确地创建为一种实验。人们认为,在典型的 Web 负载下,通过在单线程上进行异步处理来获得比典型基于线程的实现更高的性能和可伸缩性。
Node.js 面试题及答案(有经验者)
11) Node.js 能在 Windows 上运行吗?
是的,可以。请从 https://node.org.cn/download/ 下载 MSI 安装程序。
12) 我可以在 Node.js 中访问 DOM 吗?
不行,你不能在 Node.js 中访问 DOM。
13) 使用事件循环,哪些任务应该异步执行?
- I/O 操作
- 重度计算
- 任何需要阻塞的操作
14) Node.js 为什么能迅速吸引 JAVA 程序员的注意?
Node.js 之所以能迅速吸引人们的注意,是因为它是一个基于循环的 JavaScript 服务器。Node.js 使用户能够编写服务器端的 JavaScript,该 JavaScript 可以访问 HTTP 堆栈、文件 I/O、TCP 和 数据库 等。
15) async.queue 接受的两个参数是什么?
async.queue 接受的两个参数是:
- 任务函数
- 并发值
16) Node.js 中的事件循环是什么?
事件循环用于处理外部事件,并将它们转换为回调调用。因此,在 I/O 调用时,Node.js 可以从一个请求切换到另一个请求。
17) 提及 Node.js 中异步执行的步骤?
可以通过以下步骤使 Node.js 异步:
- 一等函数
- 函数组合
- 回调计数器
- 事件循环
18) Node.js 的优缺点是什么?
优点
- 如果您的应用程序没有任何 CPU 密集型计算,那么您可以从头到尾用 JavaScript 构建它,如果您使用 MongoDB 等 JSON 存储对象数据库,甚至可以一直深入到数据库级别。
- 爬虫会收到一个完全渲染的 HTML 响应,这比基于 Node.js 的单页应用程序或 WebSockets 应用程序对 SEO 更友好。
缺点
- 任何密集的 CPU 计算都会阻塞 Node.js 的响应能力,因此基于线程的平台是更好的方法。
- 使用关系数据库与 Node.js 结合被认为不太理想。
19) Node.js 如何解决 I/O 操作阻塞问题?
Node.js 通过将事件驱动模型置于其核心,使用事件循环而不是线程来解决此问题。
20) Node.js 与 Ajax 有何区别?
Node.js 和 Ajax 的区别在于,Ajax(Asynchronous JavaScript and XML 的缩写)是一种客户端技术,通常用于在不刷新页面的情况下更新页面内容。而 Node.js 是服务器端 JavaScript,用于开发服务器软件。Node.js 不在浏览器中执行,而是在服务器上执行。
Node.js 面试题(5年以上经验)
21) Node.js 的挑战是什么?
从技术角度来看,Node.js 的一个挑战是如何在一个单进程单线程的服务器上扩展到多核服务器。
22) Node.js 中的“非阻塞”是什么意思?
在 Node.js 中,“非阻塞”意味着其 I/O 是非阻塞的。Node 使用“libuv”以平台无关的方式处理其 I/O。在 Windows 上,它使用完成端口;对于 Unix,它使用 epoll 或 kqueue 等。因此,它发出一个非阻塞请求,并在收到请求后,将其排队到事件循环中,事件循环会在主 JavaScript 线程上调用 JavaScript 的“回调”。
23) Node.js 中用于导入外部库的命令是什么?
“require”命令用于导入外部库,例如,“var http=require (“http”)”。这将加载 http 库并通过 http 变量导出单个对象。
24) Mention the framework most commonly used in node.js? (Node.js 中最常用的框架是什么?)
“Express”是 Node.js 中最常用的框架。
25) Node.js 中的“回调”是什么?
回调函数用于 Node.js 处理对服务器的多个请求。例如,如果您有一个大型文件需要服务器花费很长时间来读取,而您不希望服务器在处理其他请求时忙于读取该大型文件,就可以使用回调函数。回调函数允许服务器首先处理挂起的请求,并在完成后调用一个函数。
这些面试问题也将有助于您的口试