一些Node.js面试问题及解决方案

准备工作面试总是一项艰巨的任务。最有可能的是,你不知道你会被问到什么,神经很容易就会取代你,甚至连你自己的名字都会让你忘记。我为求职面试编写了21个Node.js问题,从非常简单的内容到一些技术更先进的主题,以便在这个过程中帮助您。

不是只在后端使用Node.js。我们还使用它来创建前端应用程序,这已经成为Web开发生态系统的一个非常重要的部分。这意味着Node.js开发人员熟悉该技术在不同JavaScript环境中所扮演的角色非常有用。因此,我包含了一些问题和答案。

指导方针

在阅读答案之前,我建议你自己回答这些问题。如果你没有全部拿到,明天再试一次,看看你保留了多少。

你也有机会在这里为你的候选人寻找面试问题的例子。我认为这些应该有足够的多样性,作为一个起点,以帮助你评估他们的水平。

不仅仅是正确地回答一个问题,我认为这是一个人知道多少的细节。一个好的答案可能会引发一次谈话,这可能会让一次压力很大的经历变成和同事闲聊。这对双方来说都是一个理想的结果。

Node.js问题

什么是Node.js?

Js是一个基于V8引擎的JavaScript运行时环境。它允许我们在浏览器之外运行JavaScript--通常是在Web服务器中。

Node.js有什么好处?

Js擅长处理多个具有低圈复杂度的连接,因为它的单线程特性要求我们尽快释放事件循环。这使得Node.js成为微服务和实时应用程序的理想选择。

什么是NPM?

NPM表示Node.js包管理器。它由一个命令行接口组成,我们可以使用它访问公共和私有包的在线注册表。

如何从头创建Node.js应用程序?

我们可以从创建一个项目文件夹开始。然后,我们导航到命令行中的那个文件夹并运行npm init。最后,我们按照步骤填写应用程序信息。

“NPM安装”是做什么的?

控件中找到的依赖项。package.json档案。

如何在Node.js中安装库?

npm install name-of-the-library将安装我们的库并将其作为dependency。如果我们添加--save-dev参数,它将作为devDependency .

如何创建自定义脚本?

我们需要进入package.json并将我们的自定义脚本添加到scripts场。然后,我们可以通过到达终端并运行脚本来运行我们的脚本。npm run name-of-script .

是否可以使用Node.js创建前端应用程序?

浏览器无法运行Node.js应用程序,但您可以使用webpack或Packcel之类的工具来捆绑代码并将其转换为浏览器可以运行的代码。现在,使用Node.js环境构建前端应用程序非常普遍。前端的Node.js的一个很好的例子是电子框架,它使用Node.js和Cr来构建“本地”应用程序,例如,VS码 .

您能提到三个流行的Node.js框架吗?

Express.js可能是迄今为止最流行的框架。Koajs可能是最快的Sails.js对于使用Socket.IO的实时双边通信应用程序来说,效果很好。

Express.js有什么好处?

Js使为我们的Web应用程序设置路由变得非常容易,这使得创建REST API成为一个显而易见的选择。它非常灵活和易于使用,它的中间件架构有助于保持一个简单和可伸缩的系统。

什么是Crypto?

Crypto是一个Node.js内部库,它提供密码功能,例如加密和解密密码。

我们如何处理Node.js中的本地和全局范围?

与客户端JavaScript不同,在Node.js中使用var在最高的范围内,它们不是全局的;它们是它们所在的模块的本地。在浏览器上,我们可以访问window对象,而Node.js有一个名为global .

是否有访问文件系统的权限?

是。我们可以利用FS模块来读取、写入、复制和删除文件和文件夹。

非阻塞是什么意思?

这意味着一段代码(例如,异步函数)将在事件循环的下一次迭代中运行,从而解除对其余代码的阻塞并允许其继续运行。

事件循环是什么?它是如何工作的?

事件循环使Node.js具有异步特性。它在一个循环中调度一组五个阶段的执行。第一阶段运行计划。SETTimeout和SET Interval回调。第二个运行IO回调,计划在当前迭代中运行。第三个轮询将在下一个迭代中执行的事件。第四个运行SetImmediate()回调。最后,第五个运行所有的“关闭”回调。

异步函数是否并行运行?

没有。异步函数将在下一个事件循环迭代中执行,而并行进程在自己的进程或线程中运行。

Node.js是多线程的吗?

一个Node.js进程在一个线程中运行,但是我们可以使用child_process模块以并行方式运行多个进程或Workers运行多个线程。

子进程模块是什么?

这个子过程模块允许我们生成和分叉子进程。这些是独立的进程,它们在自己的CPU中运行,并允许我们访问系统命令。

网络工作者和工作线程之间有什么区别?

网络工作者在浏览器中实现,并且工螺纹在Node.js中实现。它们都解决了相同的问题,即提供并行处理。实际上,Worker Thread API是基于WebWorker实现的。

使用工作线程与子进程的优点是什么?

当子进程使用自己的内存空间运行自己的进程时,工作线程是进程中的一个线程,可以与主线程共享内存。这有助于避免昂贵的数据序列化。

您将使用什么来通过HTTP打开与客户端的双向实时连接?

我们可以使用WebSocket或长轮询。有些库,如soket.io和SignalR为我们简化了这一点。如果浏览器中没有WebSocket,它们甚至还提供了返回到长轮询的客户端。

想系统学习前端web的朋友,欢迎私信奕辰获取免费学习教程。

1.评论文章,没字数限制,一个字都行! 2.关注奕辰,成为的粉丝! 3.私信奕辰:“web”,“1”获取前端学习面试资料。

大家一起学习(群主会不定时更新学习资料,以及面试题文档)

或者可以添加我的个人微信号:wdnmd__xxx

小助理微信:lyf___1201

你可能感兴趣的:(一些Node.js面试问题及解决方案)