前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >大厂node.js高阶面试题和答案,重点难点攻克!

大厂node.js高阶面试题和答案,重点难点攻克!

原创
作者头像
艾编程
发布于 2022-04-02 13:24:05
发布于 2022-04-02 13:24:05
5.8K0
举报
文章被收录于专栏:艾编程艾编程

不论是前端开发还是后端开发,Node.js 这些内容都早已经是我们的必备技能,消化理解了整个人就变得通透了,几乎我们所有的程序开发人员日常开发中都会遇到这些难题了 !不过也不担心,是问题就总能解决的哈

目录

1、什么是线程池,Node.js 中哪个库处理它 ? 2、如何通过集群提高 Node.js 的性能 ? 3、worker 工作线程与集群有何不同 ? 4、Node.js 中的事件发射器是什么 ? 5、如何测量异步操作的持续时间 ? 6、如何衡量异步操作的性能 ? 7、对于 Node.js,为什么 Google 使用 V8 引擎 ? 8、为什么要把 Express 应用和服务器分开 ? 9、 解释 Node.js 中的Reactor反应器模式是什么 ? 10、什么是中间件 ? 11、什么是 node.js 缓冲区 ? 12、什么是node.js流 ? 13、我们如何在node.js中使用async await ? 14、如何在 Node.js 中创建一个返回 Hello World 的简单服务器?

1、什么是线程池,Node.js 中哪个库处理它 ?

 线程池由 libuv 库处理。libuv 是一个多平台 C 库,它支持基于异步 I/O 的操作,例如文件系统、网络和并发。

2、如何通过集群提高 Node.js 的性能 ?

Node.js 应用程序在单个处理器上运行,这意味着默认情况下它们不会利用多核系统。

集群模式用于启动多个 node.js 进程,从而拥有多个事件循环实例。

当我们开始在后台的 nodejs 应用程序中使用集群时,会创建多个 node.js 进程,但还有一个称为集群管理器的父进程,它负责监控我们应用程序各个实例的健康状况。

 3、工作线程与集群有何不同 ?

Cluster簇:

  • 每个 CPU 上都有一个进程与 IPC 进行通信。
  • 如果我们想让多个服务器通过单个端口接受 HTTP 请求,集群会很有帮助。
  • 这些进程在每个 CPU 中产生,因此将具有单独的内存和节点实例,这将进一步导致内存问题。

 工作线程:

  • 总共只有一个进程有多个线程。
  • 每个线程都有一个 Node 实例(一个事件循环,一个 JS 引擎),大多数 API 都可以访问。
  • 与其他线程共享内存(例如 SharedArrayBuffer)
  • 这可用于处理数据或访问文件系统等 CPU 密集型任务,因为 NodeJS 是单线程的,同步任务可以更有效地利用工作线程。

4、Node.js 中的事件发射器是什么 ?

EventEmitter是一个 Node.js 类,它包含所有基本上能够发出事件的对象。这可以通过使用 eventEmitter.on()函数附加由对象发出的命名事件来完成。因此,每当这个对象抛出一个甚至附加的函数时,都会同步调用。

 5、如何测量异步操作的持续时间 ?

 Performance API 为我们提供了找出必要性能指标的工具一个简单的例子是使用 async_hooks 和 perf_hooks

6、如何衡量异步操作的性能 ?

Performance API 为我们提供了找出必要性能指标的工具。

一个简单的例子

7、对于 Node.js,为什么 Google 使用 V8 引擎 ?

那么,还有其他选择吗? 是的,当然,我们有来自 Firefox 的Spidermonkey,来自 Edge 的 Chakra,但 Google 的 v8 是发展最快的(因为它是开源的,所以有一个巨大的社区帮助开发功能和修复错误)和最快的(因为它是用 c++ 编写的) 作为一个 JavaScript 和 WebAssembly 引擎。它可以移植到几乎所有已知的机器上。

8、为什么要把 Express 应用和服务器分开 ?

服务器负责初始化路由、中间件和其他应用程序逻辑,而应用程序具有所有业务逻辑,这些业务逻辑将由服务器启动的路由提供服务。 这确保了业务逻辑被封装并与应用程序逻辑解耦,从而使项目更具可读性和可维护性。

9、 解释 Node.js 中的Reactor反应器模式是什么 ?

Reactor 模式又是一种用于非阻塞 I/O 操作的模式,但总的来说,这用于任何事件驱动的架构。 这里面有两个组件: 1. Reactor 2. Handler。 Reactor:它的工作是将 I/O 事件分派给适当的处理程序 Handler:它的工作是实际处理这些事件

10、什么是中间件 ?

中间件介于您的请求和业务逻辑之间。 它主要用于捕获日志并启用速率限制、路由、身份验证,基本上是任何不属于业务逻辑的部分。 当然,还有第三方中间件,例如 body-parser,您可以为特定用例编写自己的中间件。

11、什么是 node.js 缓冲区?

通常,缓冲区是一个临时内存,主要由流使用以保留一些数据直到被消耗。 缓冲区是在 JavaScript 的 Unit8Array 以外的其他用例中引入的,主要用于表示固定长度的字节序列。 这也支持传统编码,如 ASCII、utf-8 等。它是 v8 之外的固定(不可调整大小)分配的内存。

12、什么是node.js流 ?

Streams 是 EventEmitter 的实例,可用于处理 Node.js 中的流数据。 它们可用于处理和操作网络上的流式大文件(视频、mp3 等)。他们使用缓冲区作为临时存储。 流主要有四种类型:

  • Writable:可以写入数据的流(例如,fs.createWriteStream())。
  • Readable:可以从中读取数据的流(例如,fs.createReadStream())。
  • Duplex:既可读又可写的流(例如,net.Socket)。
  • Transform:可以在写入和读取数据时修改或转换数据的双工流(例如,zlib.createDeflate())。

13、我们如何在node.js中使用async await ?

以下是使用 async-await 模式的示例

14、如何在 Node.js 中创建一个返回 Hello World 的简单服务器?

如果在学习前端方面遇见什么问题,可以主页找到我们,与我们私聊哦!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
前端Node.js面试题
Node.js 是一个开源与跨平台的 JavaScript 运行时环境。在浏览器外运行 V8 JavaScript 引擎(Google Chrome 的内核),利用事件驱动、非阻塞和异步输入输出模型等技术提高性能。我们可以理解为:Node.js 就是一个服务器端的、非阻塞式I/O的、事件驱动的JavaScript运行环境。
xiangzhihong
2021/12/30
1.5K0
前端Node.js面试题
为什么要用 Node.js
这是一个移动端工程师涉足前端和后端开发的学习笔记,如有错误或理解不到位的地方,万望指正。 Node.js 是什么 传统意义上的 JavaScript 运行在浏览器上,这是因为浏览器内核实际上分为两个部分:渲染引擎和 JavaScript 引擎。前者负责渲染 HTML + CSS,后者则负责运行 JavaScript。Chrome 使用的 JavaScript 引擎是 V8,它的速度非常快。 Node.js 是一个运行在服务端的框架,它的底层就使用了 V8 引擎。我们知道 Apache + PHP 以及 J
前朝楚水
2018/04/03
2.4K0
Event Loop(node.js)
常见的并发模型是并行工作者模型,任务分配给多个工作者,每个工作者完成整个任务,常说的 C 语言的多线程就是这种模型,它的工作模式如下图。
conanma
2022/01/04
8710
为什么要用 Node.js
传统意义上的 JavaScript 运行在浏览器上,这是因为浏览器内核实际上分为两个部分:渲染引擎和 JavaScript 引擎。前者负责渲染 HTML + CSS,后者则负责运行 JavaScript。Chrome 使用的 JavaScript 引擎是 V8,它的速度非常快。
哲洛不闹
2018/09/18
1.9K0
为什么要用 Node.js
Node.js实战
1.DIRT(data-intensive real-time)表示数据密集型实时程序。因为Node自身在I/O上非常轻量,它善于将数据从一个管道混排或代理到另一个管道上,这能在处理大量请求时持有很多开放的链接,并且只占用一小部分内存。它的设计目标是保证响应能力。
硬核项目经理
2019/08/06
4.9K0
【前端面试题】—53道常见NodeJS基础面试题(附答案)
说到前端就不得不提到后端,我们给用户展示页面所需的数据正是从后端获取的,所以了解后端的运行原理和技术的实现很有必要。
winty
2023/10/21
8510
【前端面试题】—53道常见NodeJS基础面试题(附答案)
深入解析Node.js:V8引擎、事件驱动和非阻塞式I/O
🎉欢迎来到架构设计专栏~探索Java中的静态变量与实例变量深入解析Node.js:V8引擎、事件驱动和非阻塞式I/O
IT_陈寒
2023/12/14
3100
深入解析Node.js:V8引擎、事件驱动和非阻塞式I/O
15 个常见的 Node.js 面试问题及答案
临阵磨枪,不快也光。对于成功的编程面试来说,准备和知识面一样重要。准备使你有信心参加面试,而不用担心莫名的紧张情绪。如果第一次参加编程面试,这一点尤其重要。
coder_koala
2021/03/09
1.9K0
15个node.js经典面试题和答案,核心基础
今天为大家输出Node.js相关面试题和相关答案,温故而知新可以为师矣,一起加油加油加油!
艾编程
2022/03/28
2.2K0
15个node.js经典面试题和答案,核心基础
Node.js 有难度的面试题,你能答对几个?
所有的模块都是 Module 的实例。可以看到,当前模块(module.js)也是 Module 的一个实例。
coder_koala
2019/09/27
1.4K0
Node.js 有难度的面试题,你能答对几个?
Node.js 基础入门
Node.js 是一个基于 Chrome V8 引擎 的 JavaScript 运行时环境
王秀龙
2021/08/23
1.5K0
Node.js 基础入门
一篇文章构建你的 Node.js 知识体系
最近读《重学前端》,开篇就是让你拥有自己的知识体系图谱,后续学的东西补充到相应的模块,既可以加深对原有知识的理解,又可以强化记忆,很不错的学习方案。
五月君
2020/08/28
1.9K0
一篇文章构建你的 Node.js 知识体系
Node.js 常见面试题速查
process 是一个全局变量,它提供当前 Node.js 进程的有关信息,而 process.argv 属性则返回一个数组,数组中的信息包括启动 Node.js 进程时的命令行参数
Cellinlab
2023/05/17
8490
Node.js快速入门
下载最新版源码:https://nodejs.org/dist/v6.9.5/node-v6.9.5.tar.gz
程裕强
2022/05/06
11.6K0
深入浅出Node.js
2.模块定义:提供exports对象用于导出当前模块的方法或者变量,并且是唯一导出的出口
硬核项目经理
2019/08/06
1.3K0
node.js基础入门
node.js是一个基于Google V8引擎的、跨平台的JavaScript运行环境,不是一个语言
黄啊码
2022/06/20
7980
Node.js 事件循环
Node.js 是单进程单线程应用程序,但是因为 V8 引擎提供的异步执行回调接口,通过这些接口可以处理大量的并发,所以性能非常高。
陈不成i
2021/07/09
3.6K0
译文:5个增强Node.js应用程序增强功能
原文链接:https://dev.to/chegerose/5-enhancements-that-will-boost-your-nodejs-app-3pj5
程序员法医
2022/12/20
1.9K0
译文:5个增强Node.js应用程序增强功能
什么是Node.js
Node.js 是一种建立在Google Chrome’s v8 engine上的 non-blocking (非阻塞), event-driven (基于事件的) I/O平台.
Qwe7
2022/04/20
2.2K0
Node.js 回调函数和事件循环
1. node.js 回调函数 node.js 的异步编程思想最直接的体现就是回调,在node中大量使用了回调函数,所有的API都支持回调函数,回调函数一般作为最后一个参数出现,正因为这样node在执行代码的时候就没有阻塞或者等待的操作,提高了node的性能,可以处理大量的并发请求。 function f1(name, age, callback){} function f2(name, callback, callback2){} 阻塞代码实例 创建一个文件input.txt内容如下: 这是一个阻
执行上下文
2022/07/26
3.2K0
Node.js 回调函数和事件循环
相关推荐
前端Node.js面试题
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档