📜  前32个Node.js面试问题

📅  最后修改于: 2020-12-24 10:16:27             🧑  作者: Mango

Node.js面试问题

下面列出了最常见的Node.js面试问题和答案。

1)什么是Node.js?

Node.js是服务器端脚本,用于构建可伸缩程序。它是基于Google Chrome浏览器的JavaScript引擎构建的Web应用程序框架。它在Mac OS,Windows和Linux上的Node.js运行时中运行,没有任何更改。此运行时可帮助您在浏览器之外的任何计算机上执行JavaScript代码。

2)Node.js是否可以免费使用?

是。它是根据MIT许可发布的,可以免费使用。

3)Node是单线程应用程序吗?

是。 Node是具有事件循环的单线程应用程序。

4)Node.js的目的是什么?

这些是Node.js的以下目的:

  • 实时网络应用
  • 网络应用
  • 分布式系统
  • 通用应用

5)Node.js有什么优势?

以下是Node.js的主要优点:

  • Node.js是异步的并且是事件驱动的。 Node.js库的所有API都是非阻塞的,并且它的服务器不等待API返回数据。调用后它将移至下一个API,Node.js的事件通知机制将从上一个API调用响应服务器。
  • Node.js速度非常快,因为它基于Google Chrome的V8 JavaScript引擎构建。它的库在代码执行方面非常快。
  • Node.js是单线程的,但具有高度可扩展性。
  • Node.js提供了无缓冲的功能。它的应用程序从不缓冲任何数据。它分块输出数据。

6)解释Node.js Web应用程序体系结构?

Web应用程序分为4层:

  • 客户端层:客户端层包含Web浏览器,移动浏览器或可以向Web服务器发出HTTP请求的应用程序。
  • 服务器层:服务器层包含Web服务器,该Web服务器可以拦截客户端发出的请求并将响应传递给他们。
  • 业务层:业务层包含应用服务器,Web服务器使用该应用服务器来执行所需的处理。该层通过数据库或某些外部程序与数据层交互。
  • 数据层:数据层包含数据库或任何数据源。

7)您对I / O一词有什么了解?

I / O代表输入和输出。它访问应用程序之外的任何内容。一旦应用程序启动,它将加载到机器内存中以运行程序。

8)Node.js中有多少种API函数可用?

Node.js中有两种API函数:

  • 异步,非阻塞功能
  • 同步,阻止功能

9)什么是错误优先回调?

错误优先回调用于传递错误和数据。如果出现问题,程序员必须检查第一个参数,因为它始终是错误参数。其他参数用于传递数据。

fs.readFile(filePath, function(err, data) {  
  if (err) {
    //handle the error
  }
  // use the data object
});

10)什么是异步API?

Node.js库的所有API都是异步的,意味着无阻塞。基于Node.js的服务器从不等待API返回数据。 Node.js服务器在调用后移至下一个API,Node.js事件的通知机制将响应服务器对上一个API的调用。

11)如何避免回调?

为避免回调,可以使用以下任一选项:

  • 您可以使用模块化。它将回调分为独立的函数。
  • 您可以使用promises
  • 您可以将yield与Generators和Promises一起使用。

12)Node.js是否提供调试器?

是的,Node.js提供了一个简单的基于TCP的协议和内置的调试客户端。要调试JavaScript文件,可以使用debug参数,后跟要调试的js文件名。

句法:

    node debug [script.js | -e "script" | :]

13)什么是控制流函数?

控制流函数是一段通用代码,可在多个异步函数调用之间运行。

14)“控制流”如何控制函数调用?

控制流执行以下任务:

  • 控制执行顺序
  • 收集数据
  • 限制并发
  • 调用程序中的下一步

15)是否可以在Node中访问DOM?

否,无法在Node中访问DOM。

16)使用事件循环可以异步完成哪些类型的任务?

  • I / O操作
  • 繁重的计算
  • 任何需要阻止的东西

17)Node.js中的REPL是什么?

REPL代表读取评估打印循环。它指定了一个计算机环境,例如窗口控制台或Unix / Linux shell,您可以在其中输入命令,然后计算机以输出作为响应。

REPL环境与Node.js合并在一起。

18)解释节点REPL中使用的术语的任务。

以下是REPL中用于定义任务的术语:

读取:读取用户的输入;将输入解析为JavaScript数据结构并存储在内存中。

评估:获取并评估数据结构。

打印:用于print结果。

循环:循环执行上述命令,直到用户两次按ctrl-c终止。

19)是否可以使用Node REPL评估简单表达式?

是。您可以使用Node REPL计算简单表达式。

20)REPL中下划线变量的用途是什么?

在REPL中,下划线变量用于获取最后的结果。

C:\Nodejs_WorkSpace>node
> var x = 10
undefined
> var y = 20
undefined
> x + y
30
> var sum = _
undefined
> console.log(sum)
30
undefined
>

21)Node.js是否支持加密?

是的,Node.js加密模块支持加密。它提供了加密功能,其中包括用于开放SSL的哈希HMAC,加密,解密,签名和验证功能的一组包装器。例如:

    const crypto = require('crypto');  
    const secret = 'abcdefg';  
    const hash = crypto.createHmac('sha256', secret)  
                       .update('Welcome to JavaTpoint')  
                       .digest('hex');  
    console.log(hash);  

22)什么是npm? npm的主要功能是什么?

npm代表节点软件包管理器。以下是npm的两个主要功能:

  • 可在search.nodejs.org上搜索的node.js软件包/模块的在线存储库
  • 命令行实用程序,用于安装软件包,执行Node.js软件包的版本管理和依赖性管理。

23)可以使用哪些工具来确保Node.js中的样式一致?

以下列出了可用于在团队中开发代码,实施给定的样式指南并使用静态分析捕获常见错误的工具。

  • 杰林特
  • 捷迅
  • ESLint
  • JSCS

24)操作错误和编程错误之间有什么区别?

操作错误不是错误,而是给系统造成了诸如请求超时或硬件故障之类的问题。另一方面,程序员错误是实际的错误。

25)全局安装依赖项和本地安装依赖项有什么区别?

  • 全局安装的依赖项存储在/ npm目录。而本地安装的依赖项以本地模式存储。这里,本地模式是指位于Node应用程序所在文件夹中的node_modules目录中的软件包安装。
  • 无法使用Node应用程序中的require()直接导入全局部署的程序包。另一方面,可以通过require()访问本地部署的程序包。
  • 要全局安装Node项目,请使用-g标志。
    1. C:\ Nodejs_WorkSpace > npm install express?g

  • 要在本地安装Node项目,语法为:
    1. C:\ Nodejs_WorkSpace > npm安装Express

26)Node.js中的缓冲区类有什么用?

Node.js提供Buffer类来存储类似于整数数组的原始数据,但对应于V8堆外部的原始内存分配。它是一个全局类,可以在应用程序中访问而无需导入缓冲区模块。使用缓冲区类是因为纯JavaScript与二进制数据不兼容。因此,在处理TCP流或文件系统时,必须处理八位位组流。

27)assert在Node.js中的作用是什么?

Node.js声明是一种编写测试的方法。除非测试失败,否则在运行测试时不会提供任何反馈。断言模块提供了一组简单的断言测试,可用于测试不变式。该模块供Node.js内部使用,但可以通过require('assert')在应用程序代码中使用。例如:

    var assert = require('assert');  
    function add (a, b) {  
      return a + b;  
    }  
    var expected = add(1,2);  
    assert( expected === 3, 'one plus two is three');   

28)Node.js中的流是什么?

流是可帮助您从源读取数据并将数据写入目标的对象。 Node.js中有四种类型的流:

  • 可读:此流用于读取操作。
  • 可写:此流用于写操作。
  • 双工:此流可用于读取和写入操作。
  • 转换:这是一种双工流,其中输出根据输入进行计算。

29)Node.js中的事件驱动编程是什么?

在Node.js中,事件驱动的编程意味着Node一旦启动其服务器,便会初始化其变量,声明函数,然后等待事件发生。这是Node.js与其他类似技术相比非常快的原因之一。

30)Node.js中的事件和回调之间有什么区别?

尽管事件和回调看起来相似,但不同之处在于以下事实:当异步函数返回其结果时将调用回调函数,而事件处理则以观察者模式进行。每当触发事件时,其侦听器函数开始执行。 Node.js通过事件模块和EventEmitter类提供了多个内置事件,这些事件用于绑定事件和事件侦听器。

31)Node.js中的Punycode是什么?

所述的Punycode是其用于Unicode字符的字符的ASCII字符串的(UTF-8)字符串转换的编码的语法。它与Node.js v0.6.2和更高版本捆绑在一起。如果要与其他Node.js版本一起使用,请先使用npm安装Punycode模块。您必须使用require(“ Punycode”)进行访问。

句法:

    punycode = require('punycode');

32)Node.js TTY模块包含什么?

Node.js TTY模块包含tty.ReadStream和tty.WriteStream类。在大多数情况下,无需直接使用此模块。您必须使用require('tty')来访问此模块。

句法:

var tty = require('tty');