iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > VUE >常见的Node.js面试问题有哪些
  • 496
分享到

常见的Node.js面试问题有哪些

2024-04-02 19:04:59 496人浏览 独家记忆
摘要

这篇文章主要介绍“常见的node.js面试问题有哪些”,在日常操作中,相信很多人在常见的node.js面试问题有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”常见的Nod

这篇文章主要介绍“常见的node.js面试问题有哪些”,在日常操作中,相信很多人在常见的node.js面试问题有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”常见的Node.js面试问题有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1. Node.js 与 JavaScript 有什么不同?

常见的Node.js面试问题有哪些

2. 什么时候用 Node.js?

Node.js  是异步的、事件驱动的、非阻塞的和单线程的,使得它成为开发下面应用程序的完美候选:

  • 实时应用程序,如聊天和提供实时更新的应用程序

  • 将视频或其他多媒体内容流式传输给大量观众的流式应用程序

  • 其他 I/O 密集型应用程序,如协作平台

  • 遵循微服务架构网络后端

然而,Node.js 的特性使得它对于其他类型的应用程序来说不是一个理想的选择。执行 CPU 密集型任务的应用程序(如复杂的数学计算)在使用 CPU  时表现不佳,因为 Node.js 是单线程的。

如果你想了解更多这方面的信息,请查看我们的文章 Node.js 架构以及何时在项目中使用。

3. EventEmitter 做了什么?

Node.js 中任何对象发出的事件都是 EventEmitter 类的实例,就像 Http 模块。

所有 EventEmitter 类都可以使用 eventEmitter.on()  函数将事件侦听器附加到事件。然后一旦捕捉到这样的事件,就会同步地逐个调用它的侦听器。

const events = require("events"); const eventEmitter = new events.EventEmitter(); const eventListener = function(){   console.log("event triggered"); } eventEmitter.on("emitted", eventListener); eventEmitter.emit("emitted");

4. 事件循环是什么?

单线程的 Node.js  必须是非阻塞的,以防止线程阻塞在需要很长时间才能完成的任务上,事件循环负责实现这种非阻塞行为,它使用应用程序线程调度挂起的任务。

Node.js 在任务完成时通过回调来处理异步函数返回的响应。与创建任务的事件类似,任务完成后也会发出一个事件。Node.js  将需要处理的事件添加到事件队列。

事件循环对事件队列中的事件进行迭代,并安排何时执行其关联的回调函数。

5. 流是什么?

Stream 流是从源读取或写入数据并将其传输到连续流目标的管道。有四种类型:

  • 可读

  • 可写的

  • 可读写

  • 先写入,再读出来

每个流也是一个 EventEmitter。这意味着流对象可以在流上没有数据、流上有可用数据或流中的数据在程序刷新时发出事件。

const fs = require("fs"); const readableStream = fs.createReadStream("test.txt"); let content = ""; readableStream.on("data", (chunk) => {   content += chunk; }); readableStream.on("end", () => {   console.log(content); });

6. readFile 和 createReadStream 函数有什么区别?

readFile 函数异步读取文件的全部内容,并存储在内存中,然后再传递给用户。

createReadStream 使用一个可读的流,逐块读取文件,而不是全部存储在内存中。

与 readFile 相比,createReadStream  使用更少的内存和更快的速度来优化文件读取操作。如果文件相当大,用户不必等待很长时间直到读取整个内容,因为读取时会先向用户发送小块内容。

const fs = require("fs"); fs.readFile("test.txt", (err, content) => {   console.log(content); });

7. 如何处理 Node.js 中未捕获的异常?

我们可以在进程级别捕获应用程序中未捕获的异常。为此将侦听器附加到 process 全局对象:

process.on("uncaughtException", (err) => {   console.log("exception caught: ", err); });

8. Node.js 能否充分利用多核处理器?

(默认的)Node.js 应用程序总是单线程的,即使在多核处理器上运行,应用程序也能只使用一个处理器。

但是 Node.js 的核心模块之一 Cluster 支持 Node.js  应用程序开启多核,允许我们创建多个工作进程,这些进程可以在多个内核上并行运行,并共享一个端口来侦听事件。

每个进程使用 IPC  与主线程通信,并根据需要将服务器句柄传递给其他进程。主进程可以侦听端口本身并以循环方式将每个新连接传递给子进程,也可以将端口分配给子进程以便子进程侦听请求。

9. 反应堆设计模式是什么?

反应堆设计模式是,Node.js 将回调函数(处理程序)附加到每个 I/O  操作,然后创建请求时将处理程序提交给解复用器。

解复用器收集应用程序中发出的每个 I/O  请求,并将它们作为队列中的事件进行排队。这个队列就是我们所说的事件队列。将事件排队后,解复用器返回应用程序线程的控制。

同时,事件循环遍历事件队列中的每个事件,并调用附加的回调来处理事件响应。

这就是 Node.js 中所使用的反应堆模式。

10. 单线程与多线程网络后端相比有哪些好处?

尽管 Node.js 是单线程的,但是大多数用于后端开发的编程语言都提供多线程来处理应用程序操作。

为什么单线程有利于后端开发?

  • 开发人员更容易实现应用程序。我们的应用程序在生产过程中不会突然遇到意外的竞争条件。

  • 单线程应用程序易于扩展。

  • 它们可以毫不延迟地在一个时刻收到的大量用户请求提供服务。相比之下,当流量较大时,多线程后端必须等待线程池中的线程释放,才能为用户请求提供服务。利用  Node.js 的非阻塞特性,用户请求不会在单个线程上挂起太长时间(只有在操作不是 CPU 密集型时)。

11. REPL 是什么?

REPL 代表 Read Eval Print Loop,是一个虚拟环境,可以在其中轻松地运行编程语言。Node.js  带有一个内置的 REPL 来运行 javascript 代码,类似于我们在浏览器中用来运行 JavaScript 代码的控制台。

要启动 Node.js REPL,只需在命令行上运行 node,然后写一行 JavaScript 代码,就可以在下一行看到它的输出。

12. process.nextTick 和 setImmediate 有什么区别?

传递给 setImmediate  函数的回调将在事件队列上的下一次迭代中执行。

另一方面,回调传递给 process.nextTick  在下一次迭代之前以及程序中当前运行的操作完成之后执行。在应用程序启动时,开始遍历事件队列之前调用它的回调。

因此,回调 process.nextTick 总是在 setImmediate 之前调用。

下面代码段:

setImmediate(() => {   console.log("first"); }) process.nextTick(() => {   console.log("second"); }) console.log("third");

将按顺序输出:

third second first

13. stub 是什么?

测试应用程序时使用 stub,模拟给定组件或模块的行为,你可以将精力集中在要测试的代码部分。通过使用 stub  代替与测试无关的组件,不必担心外部组件会影响结果。

例如,如果正在测试的组件在预期测试的部分之前有一个文件读取操作,则可以使用 stub 来模拟该行为并返回模拟内容,而不用实际读取文件。

在 Node.js 中,我们使用像 Sinon 这样的库来实现(译者注,Sinon 在测试中替换某部分代码,减少测试项编写的复杂度  https://sinonjs.org)。

14. 为什么在 express 中分离“应用程序”和“服务器”是一种好的做法?

通过在 Express 中分离应用程序和服务器,可以将 api  实现与网络相关配置分开。在不执行网络调用的情况下执行 API 测试,保证了更快的测试执行和更好的代码覆盖度量。

要实现这种分离,应该在单独的文件中声明 API 和 server,对应 app.js 和 server.js:

// app.js const express = require("express"); const app = express(); app.use("/", index); app.use("/contact", contact); app.use("/user", user); module.exports = app; // server.js const http = require("http"); const app = require("/app"); app.set('port', process.env.PORT); const httphttp = http.createServer(app);

15. 什么是 yarn 和 npm?为什么要用 yarn 代替 npm 呢?

npm 是与 Node.js 自带的默认包管理器,它有一个大型的公共库和私有库,存储在 npm reGIStry 的数据库中(译者注,官方默认中心库  http://registry.npmjs.org/,国内淘宝镜像 http://registry.npm.taobao.org/),用户可以通过 npm  命令行访问该数据库。在 npm 的帮助下,用户可以轻松管理项目中的依赖项。

yarn 也是一个包管理器,为了解决 npm 的一些缺点。yarn 依赖 npm 注册中心为用户提供对包访问。yarn 底层结构基于 npm,如果从  npm 迁移到 yarn,项目结构和工作流不需要大改。

就像之前提到的,在某些情况下,yarn 提供了比 npm 更好的功能。与 npm 不同的是,它会缓存下载的每个包,不必重新下载。

通过校验和验证包的完整性来提供更好的安全性,保证在某个系统上运行的包在任何其他系统中的工作方式完全相同,这就是为什么选择 yarn 而不是 npm  来进行包管理。

到此,关于“常见的Node.js面试问题有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: 常见的Node.js面试问题有哪些

本文链接: https://www.lsjlt.com/news/83666.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 常见的Node.js面试问题有哪些
    这篇文章主要介绍“常见的Node.js面试问题有哪些”,在日常操作中,相信很多人在常见的Node.js面试问题有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”常见的Nod...
    99+
    2024-04-02
  • Node.js有哪些常见面试题
    这篇文章主要介绍“Node.js有哪些常见面试题”,在日常操作中,相信很多人在Node.js有哪些常见面试题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Node.js有哪些...
    99+
    2024-04-02
  • Zookeeper面试常见的问题有哪些
    本篇内容介绍了“Zookeeper面试常见的问题有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!NO1...
    99+
    2024-04-02
  • Redis面试常见问题有哪些
    本篇内容主要讲解“Redis面试常见问题有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Redis面试常见问题有哪些”吧!1. 什么是缓存雪崩?怎么解决?通...
    99+
    2024-04-02
  • Python常见面试问题有哪些
    这篇文章主要介绍“Python常见面试问题有哪些”,在日常操作中,相信很多人在Python常见面试问题有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python常见面试问题有哪些”的疑惑有所帮助!接下来...
    99+
    2023-06-04
  • Java面试题中常见的问题有哪些
    本篇内容主要讲解“Java面试题中常见的问题有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java面试题中常见的问题有哪些”吧!  1、java 中会存在内存泄漏吗,请简单描述。  答:会...
    99+
    2023-06-02
  • PHP常见面试问答题有哪些
    这篇文章主要讲解了“PHP常见面试问答题有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP常见面试问答题有哪些”吧!PHP常见面试题1.详述一次完整的HTTP请求过程这个问题的核心是...
    99+
    2023-06-29
  • 有哪些Node.js面试问题
    这篇文章主要讲解了“有哪些Node.js面试问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“有哪些Node.js面试问题”吧!指导方针我建议你在阅读答案之...
    99+
    2024-04-02
  • JS常见面试试题有哪些
    这篇文章主要介绍了JS常见面试试题有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体如下:JavaScript面试题总结1,首先是数组...
    99+
    2024-04-02
  • 常见的Linux基础面试问题有哪些
    小编给大家分享一下常见的Linux基础面试问题有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Q.1: Linux 操作系统的核心是什么?ShellKerne...
    99+
    2023-06-16
  • Node.js面试问答题有哪些
    这篇文章主要介绍“Node.js面试问答题有哪些”,在日常操作中,相信很多人在Node.js面试问答题有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Node.js面试问答题有哪些”的疑惑有所帮助!接下来...
    99+
    2023-07-04
  • Node.js的面试问答题有哪些
    本篇内容主要讲解“Node.js的面试问答题有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Node.js的面试问答题有哪些”吧!问题什么是错误优先的回调函数?如何避免回调地狱?什么是Pro...
    99+
    2023-06-17
  • 有哪些常见的SQL面试题
    本篇内容介绍了“有哪些常见的SQL面试题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.连续活跃问题这个...
    99+
    2024-04-02
  • jQuery常见的面试题有哪些
    这篇“jQuery常见的面试题有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“jQue...
    99+
    2024-04-02
  • 常见的PHP面试题有哪些
    本文小编为大家详细介绍“常见的PHP面试题有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“常见的PHP面试题有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。100 个常见的 PHP 面试题1) PHP是...
    99+
    2023-06-30
  • AJAX常见面试题有哪些
    这篇文章主要介绍了AJAX常见面试题有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。什么是AJAX,为什么要使用AjaxAJAX是“Asynchronous JavaSc...
    99+
    2023-06-04
  • Bootstrap常见面试题有哪些
    这篇“Bootstrap常见面试题有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Bootstrap常见面试题有哪些”文...
    99+
    2023-06-27
  • 有哪些常见的JavaScript面试题
    今天就跟大家聊聊有关有哪些常见的JavaScript面试题,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1.this指向1.谁调用指向谁例:  function&...
    99+
    2023-06-15
  • 常见的HTML5面试题有哪些
    这篇文章将为大家详细讲解有关常见的HTML5面试题有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。问题1、新的 HTML5 文档类型和字符集是? 答:HTML5 文档...
    99+
    2024-04-02
  • Python常见的面试题有哪些
    本篇内容介绍了“Python常见的面试题有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、一行代码实现1--100之和利用sum()函...
    99+
    2023-06-16
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作