Node.js

雇用 Top 3%自由Node.js开发人员

托塔尔是顶级Node.js开发人员,工程师,程序员,编码人员,架构师和顾问的市场。顶级公司和初创企业选择Toptal Node.js自由职业者来执行其关键任务软件项目。

无风险试用,仅在满意时付款。

客户评价 托塔尔 Node.js 开发者4.4 / 5.0截至2021年2月6日,平均共有966条评论

受到领先品牌和初创企业的信任

雇用Freelance Node.js开发人员和工程师

杰米·阿金(Jamie Arkin)

Freelance Node.js开发人员

美国Freelance Node.js开发人员 at 托塔尔 Since March 2, 2017

杰米(Jamie)是致力于开发清洁和美丽体验的前端开发人员。她对色彩协调性和细致笔记本的热爱表明了她的编程风格和对细节的关注。她的大部分精力都放在协作,效率和学习上。 Jamie是最小像素的完美主义者,并且热衷于构建自定义WordPress主题和React应用程序。

展示更多

大卫·米哈尔(David Mihal)

Freelance Node.js开发人员

美国Freelance Node.js开发人员 at 托塔尔 Since April 16, 2016

大卫一生都在开发网站和Web应用程序。作为软件工程师,他'曾为许多不同的软件公司服务,从早期的初创公司到Google。 David拥有许多Web框架和环境的经验,但是他特别喜欢使用Meteor.js进行开发。他赞赏质量代码的重要性以及满足调度需求的需求。

展示更多

罗伯·布朗

Freelance Node.js开发人员

美国Freelance Node.js开发人员 at 托塔尔 Since October 4, 2017

罗伯特(Robert)是一位积极进取的专业人员,具有企业级经验。凭借出色的沟通能力和类似激光的专注力,Robert能够将大创意从设计阶段转移到实施阶段。作为全栈开发人员,Robert运用广泛的技能和知识来解决当前的特定问题。

展示更多

乔什·加南(Josh Gachnang)

Freelance Node.js开发人员

美国Freelance Node.js开发人员 at 托塔尔 Since June 13, 2018

乔希(Josh)是Triggr Health(一家致力于为人们解决成瘾恢复和心理健康问题的人)提供服务的第一家工程公司。凭借在Triggr和Rackspace的专业经验,他已经完成了后端,前端,移动和DevOps的开发。 Josh学习很快,专注于提供有影响力的功能。

展示更多

贾斯汀·米歇拉(Justin Michela)

Freelance Node.js开发人员

美国Freelance Node.js开发人员 at 托塔尔 Since March 28, 2018

贾斯汀(Justin)是一名技术专家,对学习充满热情,并拥有超过15年的领导团队经验,致力于构建解决实际问题的企业级分布式应用程序。他坚定地相信,从开发到市场营销再到销售,企业各个方面的协作都必须取得成功。

展示更多

本杰明·库克(Benjamin Kuker)

Freelance Node.js开发人员

加拿大Freelance Node.js开发人员 at 托塔尔 Since October 15, 2019

Benjamin是一位扎实的开发人员,其职业生涯亮点是担任大数据分析初创公司,支付处理器和用户测试服务的高级全栈开发人员。他'负责整个开发生命周期,并专注于前端。本杰明在执行细节上一丝不苟,同时始终考虑和平衡更广泛的利益相关者的关注。在沟通方面,他是及时,相关和专业的。

展示更多

达沃·巴德罗夫(Davor Badrov)

Freelance Node.js开发人员

克罗地亚Freelance Node.js开发人员 at 托塔尔 Since December 12, 2017

Davor是一名全职工程师,在企业和启动项目方面拥有六年的专业经验。他'他热衷于学习,扩展知识,构建高质量软件和自动化。

展示更多

阿卜杜勒哈米德·阿塔比

Freelance Node.js开发人员

埃及Freelance Node.js开发人员 at 托塔尔 Since November 8, 2019

Abdelhamid是一位具有10多年经验的专业软件工程师。 Coligo Technologies的前团队负责人兼首席技术官。他拥有理学硕士学位和博士学位。计算机科学与工程专业。他的专长包括JavaScript,Node.js,Python,REST API,Express,Redis,MongoDB,PostgreSQL,React,Redux,CI / CD和云服务。

展示更多

尼古拉斯·马扎(Nicolas Mazza)

Freelance Node.js开发人员

阿根廷Freelance Node.js开发人员 at 托塔尔 Since July 25, 2019

Nicolas是一位高级UI / UX设计师和Web开发人员,在整个开发和部署周期中拥有超过16年的经验。他在Image Campus学习过Web,桌面和视频游戏开发,在Belgrano大学学习了建筑与设计。作为经验丰富的开发人员,Nicolas对项目并不挑剔。他重视的是与客户建立并保持良好的关系。

展示更多

阿维纳什·卡贝拉(Avenash Kabeera)

Freelance Node.js开发人员

新加坡Freelance Node.js开发人员 at 托塔尔 Since July 6, 2019

在过去的十年中,Avenash致力于整个软件开发生命周期,同时构建和管理从开始到客户端发布的应用程序。他领导并监督了多个工程团队,但他自认为是开发人员。他在后端开发(C ++)和前端在React / Redux方面具有丰富的经验。 Avenash经常喜欢在有时间时解决问题或在一边测试新想法。

展示更多

谢尔盖·库尔巴诺夫(Sergej Kurbanov)

Freelance Node.js开发人员

捷克共和国Freelance Node.js开发人员 at 托塔尔 Since September 6, 2019

有学士学位'Sergej拥有计算机科学的学位,因此知道提出复杂问题的解决方案然后有效地解决问题所需要的工作。作为一个熟练的,具有沟通能力的Web开发人员,他在启动和公司环境中都拥有超过四年的经验,他相信,热情的产物可以带来巨大的成就。谢尔盖'积极进取的态度,积极的态度和积极主动的态度帮助他以非常自然的方式实现了这些目标。

展示更多

立即注册以查看更多个人资料。

开始招聘

招聘指南

雇用优秀Node.js开发人员的指南

自1995年发明以来,JavaScript语言一直在定期更改。"vanilla"将JavaScript分为几个不同的平台,运行时,库和框架。特别是,Node.js现在已成为后端开发领域中的一项重要技术,它拥有自己的生态系统。

阅读招聘指南

Node.js招聘资源

信任飞行员
托塔尔 in the press

...使公司能够快速组建对特定项目具有适当技能的团队。

Despite accelerating demand for coders, 托塔尔 prides itself on almost Ivy League-level vetting.

我们的客户
构建一个跨平台的应用程序以供全球使用
蒂埃里·雅基切维奇(Thierry Jakicevic)
构建一个跨平台的应用程序以供全球使用
1
2
3
为游戏创建一个应用
科纳·肯尼
为游戏创建一个应用
1
2
3
引领数字化转型
埃尔玛·普拉泽(Elmar Platzer)
引领数字化转型
1
2
3
感言

Tripcents会'没有Toptal就存在。 托塔尔 Projects使我们能够与产品经理,首席开发人员和高级设计师一起快速发展我们的基础。在短短60天内,我们从概念发展到了Alpha。速度,知识,专业知识和灵活性是首屈一指的。 托塔尔团队是Tripcents的任何内部团队成员,也是Tripcents的一部分。他们像其他所有人一样做出了贡献并获得了开发的所有权。我们将继续使用Toptal。首先,它们是我们的秘密武器。

布兰特利·佩斯(Brantley Pace),首席执行官& Co-Founder

Tripcents

我们对Toptal的经验感到非常满意。与我一起工作的专业人员在几个小时内就与我通了电话。与他讨论我的项目后,我知道他是我想要的候选人。我立即雇用了他,他不花时间去参加我的项目,甚至通过添加一些很棒的设计元素来增强我们的整体外观而付出了更多努力。

董事Paul Fenley

邓恩& Associates

与我配对的开发人员令人难以置信-聪明,有驱动力和反应灵敏。过去很难找到质量工程师和顾问。现在不是't.

瑞安·洛克菲勒(Ryan Rockefeller),首席执行官

拉迪厄斯

托塔尔立即了解我们的项目需求。从第一天起,我们就与一位来自阿根廷的杰出自由职业者相匹配,这位自由职业者专注于我们的行业,与我们的团队无缝融合,了解我们的愿景,并取得了一流的成绩。 托塔尔使与高级开发人员和程序员的联系变得非常容易。

联合创始人Jason Kulik

ProHatch

作为一家资源有限的小公司,我们可以'不能承担昂贵的错误。 托塔尔为我们提供了一个经验丰富的程序员,他能够扎实地工作并立即开始做出贡献。这是一次很棒的经历,我们'd再次心跳重复。

校长Stuart Pocknee

特定于站点的软件解决方案

我们使用Toptal聘请了具有丰富Amazon Web Services经验的开发人员。我们采访了四名候选人,其中一位最适合我们的要求。该过程快速有效。

AbnerGuzmánRivera,首席技术官兼首席科学家

照片Kharma

Sergio是一位很棒的开发人员。一流,响应迅速,高效地完成了工作。

丹尼斯·鲍德温(Dennis Baldwin),首席技术专家兼联合创始人

PriceBlink

与Marcin合作是一件乐事。他胜任,专业,灵活并且非常快速地了解需要什么以及如何实施。

首席技术官AndréFischer

开机自检

我们需要一个可以立即开始我们项目的专家工程师。 Simanas的工作超出了我们的期望。无需采访和追逐专家开发人员,这可以节省大量时间,并且使每个人都对我们选择平台以使用更强大的语言感到满意。 托塔尔使该过程变得轻松便捷。现在,Toptal是我们寻求专家级帮助的第一位。

Web开发高级副总裁Derek Minor

网络世界媒体集团

托塔尔's developers and architects have been both very professional and easy to work with. The solution they produced was fairly priced and top quality, reducing our time to launch. Thanks again, 托塔尔.

杰里米·韦塞尔斯(Jeremy Wessels),首席执行官

科尼西

我们在Toptal方面拥有丰富的经验。他们将我们与适合我们应用程序的完美开发人员配对,使过程非常容易。超出初始时间范围也很容易,而且我们能够在整个项目中保留相同的承包商。我们绝对推荐Toptal来快速,无缝地找到高质量的人才。

首席技术官Ryan Morrissey

应用商业技术有限公司

I'm incredibly impressed with 托塔尔. Our developer communicates with me every day, and is a very powerful coder. He's a true professional and his work is just excellent. 5 stars for 托塔尔.

Pietro Casoar,首席执行官

罗宁游乐有限公司

与Toptal的合作经验非常丰富。在使用它们之前,我花了很多时间采访其他自由职业者,'找不到我需要的东西。与Toptal接触后,他们在短短几天内就将我与完美的开发人员配对。开发者我'与他合作不仅提供了高质量的代码,而且还就我以前没有的东西提出了建议't thought 的. It'对我来说很清楚,阿毛里知道他在做什么。强烈推荐!

首席执行官郑

Bulavard,Inc.

作为Toptal合格的前端开发人员,我还经营自己的咨询业务。当客户来找我帮助填补他们团队中的关键角色时,Toptal是我唯一推荐的地方。托塔尔'整个候选人池就是最好的。最高是我最物有所值'我们发现了将近五年的专业在线工作。

首席技术官Ethan Brooks

朗格茨专利&商标工程有限公司

在Higgle中 's early days, we needed the best-in-class developers, at affordable rates, in a timely fashion. 托塔尔 delivered!

首席执行官Lara Aldag

闲聊

托塔尔使寻找候选人变得异常容易,使您放心,他们具备应聘技巧。我绝对会向任何寻求高技能开发人员的人推荐他们的服务。

数据经理Michael Gluckman

退出

托塔尔能够迅速将我们的项目与最优秀的开发人员进行匹配的能力真是太棒了。开发人员已成为我们团队的一员,他们每个人所表现出的专业承诺水平令我感到惊讶。对于那些希望与最好的工程师进行远程合作的人,Toptal就是您的最佳选择。

创始人Laurent Alis

Livepress

托塔尔使寻找合格的工程师变得轻而易举。我们需要一个经验丰富的ASP.NET MVC架构师来指导我们的启动应用程序的开发,Toptal在不到一周的时间内为我们提供了三个不错的候选人。做出选择后,工程师立即上线并开始运作。这比必须自己发现和审查候选人要容易得多。

联合创始人Jeff Kelly

协调解决方案

We needed some short-term work in Scala, and 托塔尔 found us a 大 developer within 24 hours. This simply would not have been possible via any other platform.

弗兰科·阿尔达(Franco Arda),联合创始人

WhatAdsWork.com

托普塔尔(Toptal)为正在快速发展和规模化的企业提供不妥协的解决方案。我们每个工程师'通过Toptal签约的ve已迅速融入我们的团队,并以最高的质量标准保持他们的工作,同时保持了飞速的发展速度。

格雷格·金博尔(Greg Kimball),联合创始人

nifti.com

如何通过Toptal雇用Node.js开发人员

1

与我们的一位行业专家交谈

A 托塔尔 director 的 engineering will work with you to understand your goals, technical needs, and team dynamics.
2

与手工挑选的人才一起工作

在几天之内,我们'将向您介绍适合您的项目的Node.js开发人员。平均比赛时间不超过24小时。
3

合适的,有保证的

与新的Node.js开发人员一起试用(仅在满意时付款),以确保他们'在开始参与之前重新选择合适的衣服。

常见问题

  • How are 托塔尔 Node.js developers different?

    在Toptal,我们彻底筛选了我们的Node.js开发人员,以确保我们只与具有最高才能的人才相匹配。每年申请加入Toptal网络的100,000多人中,晋级的比例不到3%。您将与工程专家(从不聘请一般招聘人员或人力资源代表)合作,以了解您的目标,技术需求和团队动力。最终结果:专家审核了我们网络中的人才,并根据您的业务需求进行了定制匹配。 现在开始。

  • Can I hire Node.js developers in less than 48 hours through 托塔尔?

    根据可用性和进度的快慢,您可以在注册后48小时内开始与Node.js开发人员合作。 现在开始。

  • What is the no-risk trial period for 托塔尔 Node.js developers?

    我们确保您和您的Node.js开发人员之间的每次互动都以不超过两周的试用期开始。这意味着您有时间确认参与将成功。如果您对结果完全满意,我们将为您收取时间费用,并继续为您服务。如果您不完全满意,则无需付费。从那里,我们可以分开,也可以为您提供另一位更合适的专家,我们将与他一起开始第二次无风险的试验。 现在开始。

分享
Node.js

如何聘请出色的Node.js开发人员

自1995年发明以来,JavaScript语言一直在定期更改。“vanilla” 的JavaScript into several different platforms, runtimes, libraries, and frameworks.

十年前,如果有人说他们是JavaScript开发人员,则很可能会将他们视为前端开发人员。但是在2009年5月,Ryan Dahl引入了Node.js,这是一个JavaScript运行时环境,可以在浏览器之外执行代码。在最初的五年中,招聘人员会问: 我们如何聘请Node.js开发人员?

从那时起,Node.js成为后端开发领域中的主要JavaScript工具。鉴于开发人员数量的大幅增长,现在比以往任何时候都更重要的问题是招聘人员, 我们如何找到一个 Node.js开发人员?

因此,让我们进入招聘流程并找出详细信息。

雇用Node.js开发人员进行Web开发的步骤

招聘流程因公司和项目而异,但从总体上讲,我们可以概述一些常见的部分。

开发人员的招聘过程通常由两个通用部分组成: 软技能复习,通常由招聘人员执行,并且 技术技能评论,由技术面试官完成。

软技能复习

此步骤的目标是了解候选人的个性,并检查其沟通技巧,批判性思维,解决问题的能力和团队合作习惯。这也是了解其他一些与职位相关的特征的机会。在此步骤中,面试官通常会:

  1. 检查候选人和公司的价值观是否一致:它们是否符合项目要求和目标,是否是一个良好的团队合作者,以目标为导向等。这是最基本的步骤,但在软技能审核中非常重要。
  2. 询问候选人的薪水期望,并描述公司的优势和好处。
  3. 如果职位需要领导才能或更高一些的技能,招聘人员也要对其进行验证。

在某些情况下,公司会通过过分基本的问题来预先筛选候选人的技术或领域知识。这样可以避免在候选人表现出明显的知识缺陷的情况下进行更详细的技术技能审查,从而有助于简化招聘流程。

根据软技能审查,招聘人员可以筛选出不符合项目要求的候选人,因此无需进一步验证技术技能。

技术技能复习

成功通过软技能部分后,候选人可以证明自己的专业Web开发知识和专业知识。此类采访通常由高级或更高级别的工程师(例如技术主管,解决方案架构师等)进行。

根据任务的复杂性和项目角色,招聘人员可能正在寻找从初级到高级Node.js开发人员甚至团队负责人的不同级别的专业知识。区分开发人员级别一直是一个挑战,因为关于如何做到这一点没有任何特定的规则。可以理解,它们在公司和团队中各不相同。而且,大多数前端工程师都知道Node.js的基本知识,因为语言是相同的,并且您不需要具有丰富的Node.js经验就可以从简单的HTTP服务器开始,实现简单的脚本,或在某些第三方库中使用Node.js。

然而,这些年来,已经形成了一些有关如何按级别对开发人员进行分类的标准。在下一部分中,我们将专注于高级工程师,并探讨雇用出色的Node.js开发人员的关键方面。

Node.js开发:经验丰富的Node.js开发人员应该知道什么

当公司正在寻找高级Node.js开发人员时(无论是兼职还是全职),通常意味着该项目具有复杂的结构,或者他们寻求专业知识来为新项目设计健壮且可扩展的体系结构—这两种情况都需要在该领域具有深入的知识和经验。对于任何此类开发人员而言,以下几点都可以被视为“必备”。

深入的Node.js平台

除了典型的Node.js Web服务器之外,经验丰富的Node.js开发人员还应该深入了解Node.js的工作原理,关键概念以及先进的内置工具。

首先,开发人员应该了解Google V8引擎,单线程方法和事件循环-该平台的主要内容。另外,工程师应该意识到,Node.js并不是一个框架-一个常见的错误-它是一个运行时,可以在浏览器之外执行JavaScript代码。

第二,成熟的Node.js开发人员应该具有内置模块的经验。无需全面了解所有内容,但他们需要能够描述其意图,用例以及何时适合使用各种内容。下表列出了最常用的模块。

模组 描述
HTTP / HTTPS 允许通过HTTP / HTTPS传输数据。提供协议的许多不同功能,这些功能通常用于将Node.js应用程序作为HTTP服务器启动。
路径 提供许多方便且有用的功能,有助于与文件系统进行交互。当需要操作目录/文件时很有帮助。
大事记 Node.js是事件驱动的,“事件”模块提供了一种处理事件的方法。它可以用于使用发出和订阅方法来处理异步操作。
帮助使用Node.js中的流数据。一种处理读/写操作,网络通信和其他信息交换的有用而有效的方法。
子进程 允许在Node.js中创建子进程。当任务需要在单独的线程中执行或需要能够利用Node.js的多核系统时,这将非常有用。

开发人员在工作期间会使用很多内置工具和API,并且具有使用其中许多工具的经验为开发人员能够为工作选择正确的工具奠定了良好的基础。

最后但并非最不重要的一点是,开发人员应始终注意Node.js发行版,因为可能存在可能影响其应用程序的重要更改,弃用和更新。另外,新的Node.js版本中可能会有新的工具或API,因此当开发人员在项目中保持其Node.js版本为最新时,这很好。

一个很好的信号是,开发人员在工作期间是否保持长期支持(LTS)版本,尤其是如果他们在生产中运行应用程序,并且了解Node.js本身的发布工作流程如何。每个主要的Node.js版本都具有三种状态:当前,活动和维护。

Node.js路线图。主分支被认为是不稳定的。 Node.js 10和12处于活动状态,然后进行维护。 Node.js 13是最新的,然后仅需维护几个月。 Node.js 14是最新的,随后处于活动状态,然后进行维护。

当前的发布状态持续六个月。此后,将删除奇数版本的支持,而偶数版本进入接下来18个月的有效LTS期限。 LTS期限结束后,偶数版本进入维护期限又12个月。

因此,开发人员可以肯定,在引入偶数Node.js版本后的30个月内,他们将获得稳定的支持。

了解Node.js的发布节奏可以极大地帮助开发人员确定使用哪个版本的Node.js以及何时进行更新。反过来,这会影响Node.js应用程序的安全性和可维护性。

资料库

如今,很少能找到服务器端开发,尤其是使用Node.js服务器的开发。 涉及将数据存储在数据库中。它可以是像Redis这样的键值存储,也可以是像Firebase这样的实时数据库,或者是一个更强大的数据库系统:也许是面向文档的MongoDB,或者是SQL家族的成员,例如Microsoft 的SQL Server,PostgreSQL或MySQL。

即使是初级的Node.js开发人员也将在工作中使用数据库,但是成熟的Node.js工程师应该对其中的几个有经验,并且应该能够区分不同类型的数据库。

此外,高级工程师应:

  1. 熟悉数据库的各种族,了解关系数据库和非关系数据库之间的差异。他们应该能够决定最适合项目目的的人。
  2. 能够建立数据库结构以及文档或表之间的关系。
  3. 能够使用数据库管理系统(DBMS)的高级功能。在SQL家族中,这将是视图,存储过程等。在像MongoDB这样的面向文档的工具中,高级功能包括聚合函数和数据分解。
  4. 在适当的情况下,可以使用npm中的对象关系映射(ORM)工具,例如Mongoose(对于MongoDB),Typeorm或Sequelize(对于SQL相关数据库)。

第三方模块

与任何其他平台/语言一样,开发人员可以在Node.js项目中使用各种库,工具,帮助程序和框架。 npm注册表提供了大量的开源依赖项,可以在应用程序开发期间提供帮助。有经验的Node.js开发人员应该能够在适当的情况下使用它们。

同时,他们需要合理安全地使用它们。因此,在将新的NPM包添加到其依赖项之前,开发人员应验证是否存在可用于同一目的的本机JavaScript或Node.js功能。如果需要包装,则开发人员应通过检查其漏洞来确定是否可以安全使用。

开发运维

高级Node.js程序员应该能够进行开发操作,因为这是每个项目的必备条件。即使您有DevOps专家,专门的Node.js开发人员也将能够与他们紧密合作,并在需要时为他们提供帮助。开发人员必须知道如何配置几种环境,例如开发,登台和生产以及CI / CD管道,以便能够连续交付新功能或错误修复。

此外,他们需要了解整体系统,容器,无服务器解决方案,并了解它们之间的差异,以便他们可以为特定项目选择适当的方法。

拥有Amazon Web Services,Google Cloud Platform,Microsoft Azure等云解决方案的丰富经验。如果Node.js开发人员可以从头开始一个项目并最终在云中构建一个可靠且可扩展的应用程序,那么它就特别有价值。


这些是主要的必需品-每个经验丰富的Node.js开发人员都应该对它们感到满意。让我们再上一层,为高级Node.js工程师解决面试问题。

面试问题

Node.js工程师的面试问题分为三类:

  1. 一般问题:在这里,面试官应核实 普通技术知识 对于高级工程师。
  2. 的JavaScript问题:Node.js是一个JavaScript运行时环境,因此开发人员应该对JavaScript编程语言本身有深刻的了解。我们保持社区主导 面试问题清单 可以在这里使用。
  3. Node.js问题:与平台本身相关的主题。

在这里,我们将针对高级开发人员着重于平台相关的问题,这些问题可以帮助确定候选人是否为 Node.js工程师。

问:在Node.js中处理异步操作的三种方法是什么?描述他们的优缺点。

共有三种主要的内置方法来处理异步操作:回调,承诺和异步/等待。

回调是最古老的方法。最好避免使用它们,因为它们有两种反模式,例如 回调地狱 (也称为“厄运金字塔”)。但是,它们已在旧项目和库中广泛使用。

承诺是ECMAScript 6(ES6,有时也称为ES2015)的本机功能,自Node.js 6.17开始得到全面支持, 和部分 最早可以追溯到Node.js 0.12。它们具有其他方法,使它们比回调更强大,更灵活。

异步/等待是处理异步操作的最新本地方法。从代码结构的角度来看,这是最好的,但没有承诺的那么广泛的内置功能。

开发人员一定应该理解并使用Promise和async / await。如果他们在处理异步操作的其他工具(例如蓝鸟和可观察对象)方面经验丰富,那就更好了;如果他们是为广泛使用这些功能的现有项目而聘用的,那么这可能不是一个很好的要求,而是更多的要求。

红旗: 开发人员仍然默认使用回调,并且不了解(或关心)promise和async / await。

问:Node.js开发人员应如何处理异步函数中的错误?

作为对上一个问题的回答的后续,每种异步代码方法都有其自己的错误处理方式。

使用处理错误 回叫,有一个众所周知的错误优先约定:

fetchUsers(url, (err, data) => {

  if (err) {

    // handle error 

  } else {

    // operate upon data

  }

});

这个想法是,错误总是作为回调函数的第一个参数传递,因此可以以一致的方式进行处理。

相反, 诺言 have a special catch handler to process errors:

fetchUsers(url)

  .then(data => {

    // operate upon data

  })

  .catch(err => {

    // handle error 

  });

使用时处理错误 异步/等待,开发人员可以使用一个简单的try-catch块:

async main() {

  try {

    const data = await fetchUsers(url);

    // operate upon data

  } catch (err) {

    // handle error 

  }

}

Node.js开发人员候选人应该能够描述上面的示例。

红旗: 开发人员对处理回调,promise和async / await中的错误几乎没有经验。 (也就是说,由于无论如何都不建议使用回调,因此对于未完成的项目,了解回调错误处理的重要性将降低。)

问:用于构建Web应用程序的一些Node.js框架是什么?描述他们的优缺点。

框架几乎始终是Node.js的必需品。工程师不太可能使用纯Node.js内置程序来构建Web服务器,因为有广泛且强大的解决方案,而这样做根本没有意义。 重新发明轮子.

Express.js 是Web应用程序中最受欢迎的Node.js框架之一。它的长期支持非常好,并且具有许多常用的路由和中间件功能,扩展了Node.js功能,使其更加灵活和强大。

Nest.js 本质上是对Express.js的升级,它使用TypeScript(一种现代语言,它是JavaScript的严格语法超集)进行升级。它为开发人员提供了编写更好,更结构化和更少错误的代码的能力。

Hapi.js, Koa.js, 流星Sails.js 是其他 Node.js的Web应用程序框架 候选人可能会提及。

在下表中,列出了它们各自的优缺点。

构架 优点 缺点
Express.js
  • 简单,灵活,可扩展
  • 广泛的功能
  • 简单易学
  • 易于定制
  • 广泛的受众使用
  • 有据可查
  • 表演者
  • 不使用TypeScript
  • 保养困难
Nest.js
  • 使用TypeScript
  • 建立在Express.js之上
  • 具有结构良好的架构,类似于Angular框架
  • 广泛的受众使用
  • 具有用于流行技术(例如GraphQL,微服务和WebSockets)的内置模块
  • 相对较新,因此Express.js的某些功能不可用
Hapi.js
  • 插件系统,易于维护
  • 对请求处理的深刻控制
  • 不使用TypeScript
  • 小观众
  • 缺乏表现
Koa.js
  • 良好的用户体验
  • 轻巧的
  • 干净且可读的异步代码
  • 不使用TypeScript
  • 小观众
  • 没有内置的中间件

红旗: 缺乏或缺乏Web应用程序框架知识的Node.js开发人员。 明确的例外 如果他们在一个特定的框架(尤其是Express.js)中拥有丰富的知识,则可能是这样,因为它们实际上是事实上的标准,甚至是某些其他框架的基础。

问:扩展应用程序的两种主要方法是什么? Node.js有什么专门的方法来处理它们?

这个问题有助于确定开发人员是否具有构建大型应用程序的经验。 Node.js应用程序可以水平和垂直缩放。

卧式:Node.js可以克隆并分布在多台服务器或一台服务器内的CPU节点上。诸如PM2之类的解决方案可以帮助在服务器内的各个节点之间分配负载,或者可以帮助进行多服务器扩展的AWS Load Balancer。

垂直:这意味着可以在同一节点/服务器上增加CPU和内存,而无需特定于Node.js。

红旗: 开发人员没有扩展知识或经验。

问:开发人员如何测试Node.js应用程序?

有三种主要的测试类型:单元测试,集成测试和端到端测试。

  • 单元测试 表示测试应用程序的各个单元/组件。这是最低的测试级别,目的是验证孤立的小代码是否正常工作。
  • 整合测试 是下一级别的测试,旨在确保单独的模块准确地协同工作。
  • 端到端测试 是测试层次结构的最高级别,它可以验证客户端和服务器是否可以正常工作。

开发人员经常需要使用存根和间谍来模拟第三方模块或API调用。它们在测试过程中至关重要,因为它们会阻止访问真实数据并简化测试本身。

有不同的Node.js软件包可以帮助测试,包括Mocha,Chai和Jest。开发人员应该至少熟悉其中一种,如果是现有项目,则最好熟悉(希望)已经使用过的一种。

至少,应试者应了解测试类型之间的差异。

红旗:开发人员没有单元,集成或端到端测试的经验。

问:Node.js开发人员如何确保项目依赖项是安全的?

由于使用了npm软件包,因此Node.js应用程序可能会变得不安全。开发人员应遵循一些规则以确保应用程序安全:

  1. 检查包裹本身。值得验证软件包的作者,其GitHub星级,已打开/关闭的问题比较,每周下载,发行数量等。
  2. 使用 npm审计命令. It allows getting a list 的 packages’ known vulnerabilities. Running npm audit fix would automatically install compatible updates to vulnerable dependencies. It also executes 通过 default during npm install.
  3. Use npm outdated to verify if any installed packages are obsolete.

专用的Node.js开发人员将在开发过程中不断关注此类问题,以解决漏洞。

红旗:开发人员完全忽略或不关心漏洞警告消息。

问:Node.js中的全局对象是什么?描述他们。

Node.js具有两种类型的全局对象:全局和伪全局。

全局对象是在全局范围内可用的对象。还有一些内置对象也可以在全局范围内访问-这些对象是JavaScript语言本身的一部分。

最常用的全局对象是:

  1. console, a Node.js module used to print to stdout and stderr
  2. global, a global namespace object. In browsers, the top-level scope is the global scope, but Node.js is different. A method/variable should be put in the global object to be accessible in every module.
  3. process,一个Node.js模块,允许与Node.js的运行过程进行交互
  4. Built-in functions, like setTimeout(), setImmediate()setInterval()

相反,伪全局对象存在于模块范围内。伪全局变量包括:

  1. __dirname,当前模块的目录名称
  2. __filename,当前模块的文件名
  3. module, exportsmodule.exports, which are part 的 Node.js module system
  4. require(),一个内置功能,允许导入其他模块

红旗:开发人员没有全局类型经验或不了解它们之间的差异。

如何最有效地雇用Node.js开发人员

聘用出色的Node.js开发人员的过程不仅仅涉及与平台相关的问题。它意味着同时验证技术和软技能。

在软技能审查涵盖的所有重要主题中,搜索之前的基本第一步是问自己:“我为什么首先要寻找熟练的Node.js开发人员?”是通过额外的开发人员力量激发现有的开发团队,还是指导同行 领导技术改造 和卓越流程,或启动MVP-回答此问题将极大地帮助定义理想候选人的价值观,特质和经验。

尽管软技能审查的目标是,技术部分始终发挥作用。 Node.js开发是一种专业知识,它具有一些标准的工具,模式和重复使用的部分。 Node.js开发人员使用它们解决各种问题并以不同方式组合它们的经验越丰富,这样的开发人员对开发团队的价值就越高。

遍历现代Node.js开发流程的基本主题(例如数据库,第三方工具,DevOps和Node.js平台本身)的简单过程中具有绝对的价值。听到一些关键的特定于开发,JavaScript和Node.js的问题的答案,可以揭示出开发人员是否确实具有将要实现的目标所需的经验和技能。

Featured 托塔尔 Node.js Publications

顶级Node.js开发人员需求很高。

开始招聘