下面列出了最常见的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的以下目的:
- 实时网络应用
- 网络应用
- 分布式系统
- 通用应用
以下是Node.js的主要优点:
- Node.js是异步的并且是事件驱动的。 Node.js库的所有API都是非阻塞的, 它的服务器不等待API返回数据。调用后它将移至下一个API, Node.js的事件通知机制将从上一个API调用响应服务器。
- Node.js速度非常快, 因为它基于Google Chrome的V8 JavaScript引擎构建。它的库在代码执行方面非常快。
- Node.js是单线程的, 但具有高度可扩展性。
- Node.js提供了无缓冲的功能。它的应用程序从不缓冲任何数据。它分块输出数据。
Web应用程序分为4层:
- 客户端层:客户端层包含Web浏览器, 移动浏览器或可以向Web服务器发出HTTP请求的应用程序。
- 服务器层:服务器层包含Web服务器, 该Web服务器可以拦截客户端发出的请求并将响应传递给他们。
- 业务层:业务层包含应用服务器, Web服务器利用该应用服务器执行所需的处理。该层通过数据库或某些外部程序与数据层进行交互。
- 数据层:数据层包含数据库或任何数据源。
文章图片
7)你对I / O一词有什么了解?
I / O代表输入和输出。它访问应用程序之外的任何内容。一旦应用程序启动, 它将加载到机器内存中以运行程序。
8)Node.js中可以使用几种类型的API函数?
Node.js中有两种API函数:
- 异步, 非阻塞功能
- 同步, 阻止功能
错误优先回调用于传递错误和数据。如果出现问题, 程序员必须检查第一个参数, 因为它始终是错误参数。其他参数用于传递数据。
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)如何避免回调?
为避免回调, 可以使用以下任一选项:
- 你可以使用模块化。它将回调分为独立的函数。
- 你可以使用诺言。
- 你可以将yield与Generators和Promises一起使用。
是的, Node.js提供了一个简单的基于TCP的协议和内置的调试客户端。要调试JavaScript文件, 可以使用debug参数, 后跟要调试的js文件名。
语法
node debug [script.js | -e "script" | <
host>
:<
port>
]
13)什么是控制流功能?
控制流功能是一段通用代码, 可在多个异步函数调用之间运行。
14)” 控制流” 如何控制函数调用?
控制流执行以下任务:
- 控制执行顺序
- 收集数据
- 限制并发
- 调用程序中的下一步
否, 无法在Node中访问DOM。
16)使用事件循环可以异步完成哪些类型的任务?
- I / O操作
- 繁重的计算
- 任何需要阻止的东西
REPL代表读取评估打印循环。它指定了一个计算机环境, 例如窗口控制台或Unix / Linux shell, 你可以在其中输入命令, 然后计算机以输出作为响应。
REPL环境与Node.js合并。
18)解释节点REPL中使用的术语的任务。
以下是REPL中定义的任务中使用的术语:
读取:读取用户的输入;将输入解析为JavaScript数据结构并存储在内存中。
评估:获取并评估数据结构。
打印:用于打印结果。
循环:循环上述命令, 直到用户两次按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 srcmini')
.digest('hex');
console.log(hash);
22)什么是npm? npm的主要功能是什么?
npm代表节点软件包管理器。以下是npm的两个主要功能:
- 可在search.nodejs.org上搜索的node.js软件包/模块的在线存储库
- 命令行实用程序, 用于安装软件包, 执行Node.js软件包的版本管理和依赖关系管理。
以下列出了可用于在团队中开发代码, 实施给定的样式指南并使用静态分析捕获常见错误的工具。
- 杰林特
- JSHint
- ESLint
- JSCS
操作错误不是错误, 而是给系统造成了诸如请求超时或硬件故障之类的问题。另一方面, 程序员错误是实际的错误。
25)全局安装依赖项和本地安装依赖项有什么区别?
- 全局安装的依赖项存储在
/ npm目录。而本地安装的依赖项以本地模式存储。这里, 本地模式是指位于Node应用程序所在文件夹中的node_modules目录中的软件包安装。 - 无法使用Node应用程序中的require()直接导入全局部署的程序包。另一方面, 可以通过require()访问本地部署的程序包。
- 要全局安装Node项目, 请使用-g标志。
- 要在本地安装Node项目, 语法为:
Node.js提供Buffer类来存储类似于整数数组的原始数据, 但对应于V8堆外部的原始内存分配。它是一个全局类, 可以在应用程序中访问而无需导入缓冲区模块。使用缓冲区类是因为纯JavaScript与二进制数据不兼容。因此, 在处理TCP流或文件系统时, 必须处理八位位组流。
27)在Node.js中assert的作用是什么?
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中有四种类型的流:
- 可读:此流用于读取操作。
- 可写:此流用于写操作。
- 双工:此流可用于读取和写入操作。
- 转换:这是一种双工流, 其中输出根据输入进行计算。
在Node.js中, 事件驱动的编程意味着Node一旦启动其服务器, 便会初始化其变量, 声明函数, 然后等待事件发生。这是Node.js与其他类似技术相比非常快的原因之一。
文章图片
30)Node.js中的事件和回调之间有什么区别?
尽管事件和回调看起来相似, 但不同之处在于以下事实:当异步函数返回其结果时, 将调用回调函数, 而事件处理则基于观察者模式。每当触发事件时, 其侦听器功能就会开始执行。 Node.js通过事件模块和EventEmitter类提供了多个内置事件, 这些事件用于绑定事件和事件侦听器。
31)Node.js中的Punycode是什么?
Punycode是一种编码语法, 用于将Unicode(UTF-8)字符串转换为ASCII字符串。它与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');
Java OOP面试问题 |
Java字符串和异常问题 |
JDBC面试问题 |
JSP面试问题 |
休眠面试问题 |
SQL面试题 |
Android面试题 |
MySQL面试问题 |
Java多线程问题
Java Collection面试题
Servlet面试问题
春季面试问题
PL / SQL面试问题
Oracle面试问题
SQL Server面试问题
推荐阅读
- 不容错过的Backbone.js面试题大合集
- 必备!最新AJAX面试题汇总
- 别错过哦!Angular面试题和答案汇总
- 史上最全!Angular 7面试题及其最佳答案
- 史上最全RPA面试题和答案整理
- 总结常见jQuery面试题和答案推荐合集
- 史上最全JavaScript面试题和答案大合集
- 推荐哦!Talend面试题和答案汇总详解
- 使用moneykey对APP进行健壮性测试