Node.js面试题及答案 - [ Web技术面试题及答案 ]

Node.js是服务器端脚本,用于构建可伸缩程序。 它是基于Google Chrome的JavaScript引擎构建的Web应用程序框架。 通过阅读下面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的以下使用目的:

  • 构建实时Web应用程序
  • 网络应用
  • 分布式系统
  • 通用应用程序
详细答案>>

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服务器发出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. 怎么能避免回调?

要避免回调,可以使用以下任一选项: 可以使用modularization。 它将回调分解为独立的函数。可以使用promises。可以将yield与Generators和Promises一起使用。详细答案>>

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

是的,Node.js提供了一个简单的基于TCP的协议和内置的调试客户端。 要调试JavaScript文件,可以使用debug参数,后跟要调试的js文件名。 语法: node debug [script.js | -e "script" | <host>:<port>] 详细答案>>

13. 什么是控制流函数?

控制流函数是在几个异步函数调用之间运行的通用代码。

详细答案>>

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

控制流程执行以下工作:

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

15. 是否可以访问Node中的DOM?

不可以,无法访问Node中的DOM。

详细答案>>

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

使用事件循环可以异步完成以下类型的任务:

  • I/O操作
  • 繁重的计算
  • 任何需要阻止的东西
详细答案>>

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

REPL代表Read Eval Print Loop。 它指定了一个计算机环境,如窗口控制台或Unix / Linux shell,可以在其中输入命令,计算机将使用输出进行响应。

REPL环境与Node.js合并。

详细答案>>

18. 解释Node REPL中使用的术语的任务。

以下是REPL中使用的术语及其定义的任务: Read:它读取用户的输入; 将输入解析为JavaScript数据结构并存储在内存中。Eval:它采用并评估数据结构。Pring:用于打印结果。Loop:它循环上面的命令,直到用户按两次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 Crypto模块支持加密。 它提供加密功能,包括一组用于打开SSL哈希HMAC,密码,解密,签名和验证功能的包装器。 例如: const crypto = require('crypto'); const secret = 'abcdefg'; const hash = crypto.createHmac('sha256', secret) .update('Wel...详细答案>>

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

npm代表节点包管理器。 以下是npm的两个主要功能: 可在search.nodejs.org上搜索的node.js包/模块的联机存储库用于安装软件包的命令行实用程序,对Node.js软件包进行版本管理和依赖关系管理。详细答案>>

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

以下是可用于开发团队代码,强制执行给定样式指南以及使用静态分析捕获常见错误的工具列表。

  • JSLint
  • JSHint
  • ESLint
  • JSCS
详细答案>>

24. 操作错误和程序员错误有什么区别?

操作错误不是错误,但会导致系统出现问题,例如请求超时或硬件故障。 另一方面,程序员错误是实际的错误。

详细答案>>

25. 依赖关系的全局安装和依赖关系的本地安装之间有什么区别?

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

26. Node.js中缓冲类的用途是什么?

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

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

Node.js Assert是一种编写测试的方法。 除非有人失败,否则在运行测试时不提供任何反馈。 assert模块提供了一组简单的断言测试,可用于测试不变量。 该模块供Node.js内部使用,但可以通过require('assert')在应用程序代码中使用。 例如: var assert = require('assert'); function add (a, b) { return a + b; } var expected = ...详细答案>>

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

Streams是便于您从源读取数据并将数据写入目标的对象。 Node.js中有四种类型的流: 可读:此流用于读取操作。可写:此流用于写入操作。双工:此流可用于读取和写入操作。变换:它是一种双工流,输出根据输入进行计算。详细答案>>

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

在Node.js中,事件驱动编程意味着一旦Node启动其服务器,它就会启动其变量,声明函数然后等待事件发生。 与其他类似技术相比,这是Node.js相当快的原因之一。详细答案>>

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

虽然,事件和回调看起来很相似,但差异在于,当异步函数返回其结果时调用回调函数,而事件处理对观察者模式起作用。 每当事件被触发时,其侦听器函数就会开始执行。 Node.js通过events模块和EventEmitter类提供了多个内置事件,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'); 详细答案>>

33. Node Js中的模块是什么?

模块是可重用的代码块,其存在不会以任何方式影响其他代码。 Javascript不支持它。 模块在ES6中引入。 模块对于代码的可维护性,可重用性和命名空间非常重要。

详细答案>>

34. Node Js是单线程的还是多线程的?

Node Js是单线程的。Node Js是单线程来执行异步处理。 与典型的基于线程的实现相比,在单个线程上执行异步处理可以在典型的Web负载下提供更高的性能和可伸缩性。

详细答案>>

35. Node Js中使用require()的作用是什么?

require()用于包含Node Js中外部文件的模块。 这是在Node中包含模块的最简单方法。 基本上require是一个函数,它接受一个字符串参数,该参数包含您要包含的文件的位置。 它读取整个javascript文件,执行该文件,然后继续返回exports对象。语法: require('path'); 详细答案>>

36. Nodejs是使用哪个语言编写的?

Node js是用C,C++,JavaScript编写的。它使用Google的开源V8 Javascript引擎将Javascript代码转换为C++。

详细答案>>

37. 使用NodeJs可以构建什么样类型的应用程序?

使用Node Js可以构建以下应用程序:

  • 物联网
  • 实时聊天应用程序
  • 复杂的单页应用程序
  • 实时协作工具
  • 流媒体应用
  • 微服务/API
详细答案>>

38. NodeJs中的libuv是什么?

libuv是跨平台I/O抽象库,支持基于事件循环的异步I/O。它是用C语言编写的,在MIT License下发布。 libuv支持Windows IOCP,epoll(4),kqueue(2)和Solaris事件端口。 最初,它是为Node.js设计的,但后来它也被其他软件项目使用。详细答案>>

39. 为什么在Nodejs中使用Zlib?

Zlib是跨平台数据压缩库。 它由Jean-loup Gailly和Mark Adler撰写。 在Node js中,您可以使用Zlib进行Threadpool,HTTP请求以及响应压缩和内存使用调整。 要在节点js中使用zlib,需要安装node-zlib包。 下面安装后是使用Zlib的示例代码。 var Buffer = require('buffer').Buffer; var zlib = require('zlib'); var input = new Buff...详细答案>>

40. Nodejs如何读取文件的内容?

通常,NodeJ以非阻塞,异步方式读取文件的内容。 NodeJs使用其fs核心API来处理文件。 读取nodeJs中文件的整个内容的最简单方法是使用fs.readFile方法。 下面是异步和同步读取NodeJ中文件的示例代码。 以异步/非阻塞方式读取节点中的文件 - var fs = require('fs'); fs.readFile('DATA', 'utf8', function(err, contents) { console.log(...详细答案>>

41. 什么是Streams?NodeJs中可用的流类型有哪些?

流是Node中特殊类型的对象,允许我们从源读取数据或连续将数据写入目标。 NodeJs中有4种类型的流,它们是 - 可读 - 用于读取操作。可写 - 用于写入操作。双工 - 用于读写操作。变换 - 一种双工流,其输出基于输入计算。 进一步阅读:http://www.yiibai.com/nodejs/nodejs_streams.html详细答案>>

42. 传递给NodeJs回调处理程序的第一个参数是什么?

在Node Js中,所有核心模块以及大多数社区发布的模块都遵循一种模式,其中任何回调处理程序的第一个参数是错误对象。此对象是可选的,如果没有错误,则在这种情况下将null或undefined传递给回调。 回调函数的示例 - function callback(err, results) { // usually we'll check for the error before handling results if(err) { // handle error ...详细答案>>

43. Nodejs中readFile和createReadStream的区别是什么?

readFile加载标记为要读取的整个文件,而createReadStream读取声明的大小部分中的完整文件。与readFile相比,客户端将在createReadStream的情况下更快地接收数据。在readFile中,文件将首先由内存完全读取,然后传输到客户端,但在后面的选项中,文件将由内存读取到发送给客户端的部分,并且该过程将继续,直到所有部分完成。详细答案>>

44. 什么是JIT?它与Node JS有什么关系?

JIT代表Just-in-time。 JIT编译器是一个程序,用于通过将字节码转换为指令将字节码(它由可以解释的指令组成)发送到处理器。 完成编写程序后,编译器将源语言语句编译为字节码,而不是将其编译为携带类似于特定硬件平台处理器的信息的代码。 JIT与Node的关系:Nodejs的虚拟机具有JIT编译,提高了代码的执行速度。 虚拟机获取源代码并在运行时转换为机器代码。 通过这种方式,经常调用的热函数被编译为机器代码,从而提高了速度。详细答案>>

45. 如何在Nodejs中创建一个简单的服务器来返回”Hello World”字符串?

通过编写以下代码行,可以在NodeJs中创建一个简单的服务器来返回”Hello World”字符串 - var http =require('http'); http.createServer(function(req,res){ res.writeHead(200,{'Content-Type':'text/plain'}); res.end('Hello World\n'); }).listen(6666,'127.0.0....详细答案>>

46. put和patch有什么区别?

put和patch之间的主要区别是 - put patch 嵌入式实体被认为是存储在原始服务器上的资源的修改版本。它要求客户端替换存储的替换。 找到关于修改具有产生新版本的资源的原始服务器的方式的信息。 在更新资源时,需要转发完整的有效负载作为请求。 在更新资源时,只需要发送要更新的资源的参数。 详细答案>>

47. Http请求的类型/方法有哪些?

Http定义了一组请求方法来执行所需的操作。这些请求方法是: GET:GET方法要求指定资源的表示。此请求用于检索数据。POST:POST技术用于向预定资源提供元素,通常导致服务器上的状态或反应发生变化。HEAD:HEAD方法类似于GET方法,但要求没有响应主体的响应。PUT:此方法用于用有效负载替换所有当前表示。DELETE:用于删除预定资源。CONNECT:此请求用于解决目标资源到服务器的TCP / IP隧道OPTION:此方法用于返回HTTP策略以与目标资源进行通信。TRACE:此方法回应消息,...详细答案>>

48. 暴露模块模式是什么?

暴露模块模式类似于模块模式,它仅通过返回的对象公开所需的属性和方法。 示例 var greeting = 'Hello world' function greet() { console.log(greeting) } module.exports = { greet: greet } 详细答案>>

49. CommonJs模块是什么?

CommonJS Modules是标准如何编码模块的结构。 它为服务器外部的JavaScript或本机桌面应用程序指定了一个生态系统。

详细答案>>

50. 如何在Express JS中定义模型?

Express JS中没有任何数据库的概念。 因此,模型的概念留给第三方节点模块,允许用户与几乎任何类型的数据库进行交互。

详细答案>>

51. 如何在Express JS中配置属性?

在Express JS中,有两种配置属性的方法: 使用process.ENV:将在项目文件夹中创建名为“.env”的文件。所有属性都将添加到“.env”文件中。任何属性都可以在server.js中使用。使用require JS:将在项目文件夹内的config文件夹中创建名为“config.json”的文件。配置属性将添加到config.json文件中。现在,应该使用require来访问config.json文件。详细答案>>

52. 如何在express JS中验证用户?

由于认证是一个不受express JS涉足的视图区域,因此任何认证方案都可以在express JS中用于用户认证。

详细答案>>

53. ExpressJS路由处理程序可用的参数是什么函数?

可用于ExpressJS路由处理函数的参数是 - Req - 请求对象Res - 响应对象Next(可选) - 一个用于将控制传递给后续路由处理程序之一的函数。 第三个参数是可选的,可以省略,但在某些情况下,如果有一系列处理程序并且控制权可以传递给跳过当前路径处理程序的后续路径处理程序,则它很有用。详细答案>>

54. Express JS支持哪种模板引擎?

Express JS支持符合(路径,本地,回调)签名的任何模板引擎。

详细答案>>

55. 请列出可以使用Express JS构建的Web应用程序的类型。

可以使用Express JS构建单页,多页和混合Web应用程序。

详细答案>>

56. 如何在express JS中呈现纯HTML?

不需要使用res.render()函数呈现HTML。 如果有特定文件,则应使用res.sendFile()函数。 如果从字典中提供任何资产,则需要使用express.static()中间件函数。

详细答案>>

57. ExpressJS有什么用?

Express.js是一个轻量级的Web应用程序,它有助于将Web应用程序组织到服务器端的MVC架构中。

详细答案>>

58. 为什么要使用Express.js?

以下是使用Express与Node.js的几个原因 - Express js构建在Node.js之上。 它是超快速输入/输出的完美框架。跨平台支持MVC设计模式支持NoSQL数据库开箱即用。多个模板引擎支持,即Jade或EJS,可减少编写的HTML页面代码量。支持中间件,基本的Web服务器创建和简单的路由工具。详细答案>>

59. 设置Express JS应用程序的步骤是什么?

以下是用于设置ExpressJS应用程序的步骤: 将创建与项目名称同名的文件夹。在创建的文件夹中创建名为package.json的文件。在命令提示符下运行npm install命令。 它安装package.json中存在的所有库。创建名为server.js的文件。“Router”文件在包内创建,该文件包由名为index.js的文件夹组成。“App”是在包含index.html文件的包内创建的。 这样,就建立了一个快速的JS应用程序。详细答案>>

60. 请列出Express JS的一些功能。

Express JS的一些主要功能如下: 它用于设置中间件,以便提供对HTTP或RESTful请求的响应。在express JS的帮助下,可以定义路由表以执行各种HTTP操作。它还用于动态呈现基于将参数传递给模板的HTML页面。它提供了核心Node JS提供的每个功能。由于Express JS准备了薄层,因此Express JS的性能已经足够。它用于将Web应用程序组织到MVC体系结构中。从路由到渲染视图和执行HTTP请求的所有内容都可以由Express JS管理。详细答案>>

61. 请列出ES6中引入的一些新功能?

以下是ES6中引入的一些新功能 - const和let关键字数组助手函数,如map,forEach,filter,find,every,some,reduce箭头函数类和增强的对象文字模板字符串默认函数参数Rest和spread 运算符Promises模块多行字符串解构分配详细答案>>

62. 编写一个简单的代码来启用Node js中的CORS?

CORS代表跨源资源共享。 它是一种机制,它使用额外的HTTP标头告诉浏览器让在一个源(域)上运行的Web应用程序有权从不同来源的服务器访问所选资源。 下面的代码是用于在NodeJS上启用CORS - app.use(function(req, res, next) { res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers...详细答案>>

63. 如何在Node Js中生成唯一的UUID/guid?

使用node-uuid包在Node Js中生成唯一的UUID/guid。 下面的代码演示了如何生成它。 var uuid = require('node-uuid'); // Generate a v1 (time-based) id uuid.v1(); // Generate a v4 (random) id uuid.v4(); 详细答案>>

64. Express JS是什么?

Express JS是一个应用程序框架,它是轻量级NodeJS。 此JavaScript框架提供了许多灵活,有用和重要的功能,用于在NodeJS的帮助下开发移动和Web应用程序。

详细答案>>

65. 如何使用nvm设置默认node版本?

在终端上运行以下命令,以沿多个已安装的node版本设置默认node版本。 可以通过运行nvm ls来列出node的所有安装版本。

nvm alias default v7.3.0
详细答案>>

66. Node Js中的事件循环是什么?

在Node Js中,进程是单线程的,为了支持并发,它使用事件和回调。 事件循环是一种允许Node.js执行非阻塞I/O操作的机制。

详细答案>>

67. CLI是什么?

CLI代表命令行界面。 它是计算机上的实用程序或程序,用户键入命令以执行某些操作或运行某些脚本而不是单击屏幕。根据使用的操作系统,有不同类型的命令行界面。下面列出了其中一些。 Bash on Linux。Mac的终端。Windows上的命令提示符或PowershellUnix/Linux上的Shell/命令行/终端详细答案>>

68. Javascript引擎是什么?

Javascript引擎是一个将用Javascript编写的代码转换为计算机处理器可以理解的代码的程序。

详细答案>>

69. V8引擎是什么?

V8是谷歌的开源高性能JavaScript引擎,用C++编写,用于谷歌Chrome,Google的开源浏览器和Node.js等。它实现了ECMA-262中指定的ECMAScript,并在Windows 7或更高版本,macOS 10.5+以及使用IA-32,ARM或MIPS处理器的Linux系统上运行。 V8可以独立运行,也可以嵌入到任何C++应用程序中。 资料来源:https://developers.google.com/v8/详细答案>>

70. 如何查看已安装的Node Js版本?

使用node -v命令来查看已安装的Node Js版本。

详细答案>>

71. NPM是什么?

NPM代表节点包管理器(Node Package Manager)。它是JavaScript编程语言的默认包管理器。 NPM用于安装/更新Javascript的包和模块。

详细答案>>

72. 在Node Js中的module.exports是什么?

模块中定义的方法或变量不能由外部世界直接访问,这意味着无法从外部文件调用模块成员。 为了访问模块成员,我们需要使用module.exports方法导出模块的函数或变量。 示例: // greet.js var greet=function(){ console.log("hello World"); } module.exports=greet; //In app.js var greet=require('./greet.js'); greet(); Exp...详细答案>>
注: 此试题仅作为相关知识水平测试,不能作为权威试题和答案。非商业转载注明原文链接即可;商业转载需本站授权同意。