📅  最后修改于: 2020-12-24 10:16:27             🧑  作者: Mango
下面列出了最常见的Node.js面试问题和答案。
Node.js是服务器端脚本,用于构建可伸缩程序。它是基于Google Chrome浏览器的JavaScript引擎构建的Web应用程序框架。它在Mac OS,Windows和Linux上的Node.js运行时中运行,没有任何更改。此运行时可帮助您在浏览器之外的任何计算机上执行JavaScript代码。
是。它是根据MIT许可发布的,可以免费使用。
是。 Node是具有事件循环的单线程应用程序。
这些是Node.js的以下目的:
以下是Node.js的主要优点:
Web应用程序分为4层:
I / O代表输入和输出。它访问应用程序之外的任何内容。一旦应用程序启动,它将加载到机器内存中以运行程序。
Node.js中有两种API函数:
错误优先回调用于传递错误和数据。如果出现问题,程序员必须检查第一个参数,因为它始终是错误参数。其他参数用于传递数据。
fs.readFile(filePath, function(err, data) {
if (err) {
//handle the error
}
// use the data object
});
Node.js库的所有API都是异步的,意味着无阻塞。基于Node.js的服务器从不等待API返回数据。 Node.js服务器在调用后移至下一个API,Node.js事件的通知机制将响应服务器对上一个API的调用。
为避免回调,可以使用以下任一选项:
是的,Node.js提供了一个简单的基于TCP的协议和内置的调试客户端。要调试JavaScript文件,可以使用debug参数,后跟要调试的js文件名。
node debug [script.js | -e "script" | :]
控制流函数是一段通用代码,可在多个异步函数调用之间运行。
控制流执行以下任务:
否,无法在Node中访问DOM。
REPL代表读取评估打印循环。它指定了一个计算机环境,例如窗口控制台或Unix / Linux shell,您可以在其中输入命令,然后计算机以输出作为响应。
REPL环境与Node.js合并在一起。
以下是REPL中用于定义任务的术语:
读取:读取用户的输入;将输入解析为JavaScript数据结构并存储在内存中。
评估:获取并评估数据结构。
打印:用于print结果。
循环:循环执行上述命令,直到用户两次按ctrl-c终止。
是。您可以使用Node 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
>
是的,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);
npm代表节点软件包管理器。以下是npm的两个主要功能:
以下列出了可用于在团队中开发代码,实施给定的样式指南并使用静态分析捕获常见错误的工具。
操作错误不是错误,而是给系统造成了诸如请求超时或硬件故障之类的问题。另一方面,程序员错误是实际的错误。
Node.js提供Buffer类来存储类似于整数数组的原始数据,但对应于V8堆外部的原始内存分配。它是一个全局类,可以在应用程序中访问而无需导入缓冲区模块。使用缓冲区类是因为纯JavaScript与二进制数据不兼容。因此,在处理TCP流或文件系统时,必须处理八位位组流。
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');
流是可帮助您从源读取数据并将数据写入目标的对象。 Node.js中有四种类型的流:
在Node.js中,事件驱动的编程意味着Node一旦启动其服务器,便会初始化其变量,声明函数,然后等待事件发生。这是Node.js与其他类似技术相比非常快的原因之一。
尽管事件和回调看起来相似,但不同之处在于以下事实:当异步函数返回其结果时将调用回调函数,而事件处理则以观察者模式进行。每当触发事件时,其侦听器函数开始执行。 Node.js通过事件模块和EventEmitter类提供了多个内置事件,这些事件用于绑定事件和事件侦听器。
所述的Punycode是其用于Unicode字符的字符的ASCII字符串的(UTF-8)字符串转换的编码的语法。它与Node.js v0.6.2和更高版本捆绑在一起。如果要与其他Node.js版本一起使用,请先使用npm安装Punycode模块。您必须使用require(“ Punycode”)进行访问。
punycode = require('punycode');
Node.js TTY模块包含tty.ReadStream和tty.WriteStream类。在大多数情况下,无需直接使用此模块。您必须使用require('tty')来访问此模块。
var tty = require('tty');