分享前端面试中面试官提到的Node.js一些问题与解决方案,供大家参考下。
众所周知,准备工作面试始终是一项艰巨的任务。很可能您不完全知道要问您什么,神经很容易接管您,甚至使您忘记自己的名字。我已经为求职面试编写了21个Node.js问题,从非常简单的内容到一些技术上更高级的主题,可以在此过程中为您提供帮助。
Node.js并非专门用于后端。我们还使用它来创建前端应用程序,这已经成为Web开发生态系统中非常重要的部分。这意味着Node.js开发人员熟悉该技术在不同JavaScript环境中扮演的角色非常有用。出于这个原因,我沿着这些思路包括了一些问题和答案。
指导方针
在阅读答案之前,我建议尝试自己回答问题。如果您没有全部获得,明天再试一次,看看您保留了多少。
您也有可能在这里为候选人寻找面试问题示例。我认为这些应该以足够多的起点作为起点,以帮助您评估其水平。
我认为,不仅仅是正确地回答问题,还在于细节表明人们知道多少。好的答案可能会激发对话,从而有可能在与同事的闲聊中带来紧张的体验。这对双方来说都是理想的结果。
Node.js问题
什么是Node.js?
Node.js是基于V8引擎的JavaScript运行时环境。它使我们可以在浏览器外部(通常是在Web服务器中)运行JavaScript。
Node.js有什么用?
Node.js非常适合处理循环复杂度低的多个连接,因为它的单线程性质要求我们尽快释放事件循环。这使Node.js成为微服务和实时应用程序的理想选择。
什么是npm?
npm代表Node.js软件包管理器。它包含一个命令行界面,我们可以使用该界面访问公共和私有软件包的在线注册表。
如何从头开始创建Node.js应用程序?
我们可以从创建一个项目文件夹开始。然后,我们在命令行中导航到该文件夹并运行npm init
。最后,我们按照步骤填写我们的应用信息。
" npm install"有什么作用?
它安装在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或Parcel之类的代码来捆绑代码并将其转换为可以运行的浏览器。如今,使用Node.js环境构建前端应用程序非常普遍。前端Node.js的一个很好的例子是Electron框架,该框架同时使用Node.js和Chrome来构建"本地"应用程序,例如VS Code。
您能否提及三个流行的Node.js框架?
Express.js可能是迄今为止最受欢迎的框架。Koajs可能是最快的之一,并且Sails.js对于使用socket.io的实时双边通信应用程序非常有用。
Express.js有什么用?
Express.js使为我们的Web应用设置路由变得非常容易,这使其成为创建REST API的明显选择。它非常灵活且易于使用,其中间件体系结构有助于保持简单且可扩展的系统。
什么是加密货币?
加密是Node.js内部库,它提供加密功能来执行诸如加密和解密密码之类的操作。
我们如何在Node.js中处理本地和全局范围?
与客户端JavaScript不同,在Node.js中声明var
为最高作用域的变量不是全局变量。它们是所在模块的本地window
对象。在浏览器上,我们可以访问全局变量所在的对象,而Node.js为此有一个对象global
。
Node.js是否可以访问文件系统?
是。我们可以使用fs模块读取,写入,复制和删除文件和文件夹。非阻塞是什么意思?
这意味着计划将诸如异步功能之类的代码安排在事件循环的下一个迭代中运行,从而解除对其余代码的阻塞,并使其继续运行。
什么是事件循环,它如何工作?
事件循环使Node.js具有异步特性。它在一个循环中调度一组五个阶段的执行。第一阶段运行调度的setTimeout和setInterval回调。第二个运行计划在当前迭代上运行的IO回调。第三个轮询将在下一次迭代中执行的事件。第四个运行setImmediate()回调。最后,第五个运行所有"关闭"回调。
异步功能可以并行运行吗?
否。当并行进程在其自己的进程或线程中运行时,异步函数将在下一个事件循环迭代中执行。
Node.js是多线程的吗?
Node.js进程在单个线程中运行,但是我们可以使用该child_process
模块并行运行多个进程或Workers
运行多个线程。
什么是child_process模块?
该child_process模块让我们一起产卵和fork子进程。这些是在自己的CPU中运行的独立进程,使我们可以访问系统命令。
网络工作者和工作者线程之间有什么区别?
Web worker是在浏览器中实现的,worker线程是在Node.js中实现的。它们都解决了同一问题,即提供并行处理。实际上,Worker Thread API是基于Web Workers实现的。
使用辅助线程与子进程相比有什么优势?
子进程使用自己的内存空间运行自己的进程时,辅助线程是进程内的一个线程,可以与主线程共享内存。这有助于避免来回昂贵的数据序列化。
您将使用什么来通过HTTP与客户端建立双向实时连接?
我们可以使用WebSocket或长时间轮询。有像soket.io和SignalR这样的库可以为我们简化此过程。如果WebSockets在浏览器中不可用,它们甚至提供了可以长时间轮询的客户端。
结论
我们已经走到了尽头。我希望您发现这些问题有用。你可以让他们一切都好吗?如果您做不到,请不要担心。除非您以高级职位为目标,否则您不应该了解所有这些知识。只要确保您掌握了基础知识,并且在发现知识鸿沟的任何地方,都努力努力突破界限。我向您保证,它不会被忽视。
祝您面试顺利。保持冷静,相信自己所知道的并保持友善-后者可能是最重要的。大多数人宁愿填补一个谦虚谦虚的人的知识上的空白,而不是每天与一个傲慢自私的人上班,尽管他们是天才,但很难与他们合作。
如果您是一名面试官,请记住,有人可能会显示出自己的出色表现而使您感到紧张。让他们感觉尽可能舒适,并让他们知道您站在他们的身边,并且您希望他们钉住它!