加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营 > 正文

nodejs面试题

发布时间:2020-12-31 12:16:46 所属栏目:运营 来源:网络整理
导读:h3 id="为什么用nodejs它有哪些弱点"1、为什么用Nodejs,它有哪些弱点? 变乱驱动,通过闭包很轻易实现客户端的生命活期。 不消担忧多线程,锁,并行计较的题目 V8引擎速率很是快 对付游戏来说,写一遍游戏逻辑代码,前端后端通用 nodejs更新很快,也许会呈现

<h3 id="为什么用nodejs它有哪些弱点">1、为什么用Nodejs,它有哪些弱点?

  • 变乱驱动,通过闭包很轻易实现客户端的生命活期。
  • 不消担忧多线程,锁,并行计较的题目
  • V8引擎速率很是快
  • 对付游戏来说,写一遍游戏逻辑代码,前端后端通用

  • nodejs更新很快,也许会呈现版本兼容
  • nodejs还不算成熟,还没有大建造
  • nodejs不像其他的处事器,对付差异的链接,不支持历程和线程操纵

  • 错误优先(Error-first)的回调函数(Error-First Callback)用于同时返回错误和数据。第一个参数返回错误,而且验证它是否堕落;其他参数返回数据。

      fs.readFile(filePath,function(err,data)
    

    {

      if (err)
    
      {
    
          // 处理赏罚错误
    
          return console.log(err);
    
      }
    
      console.log(data);

    });

  • 模块化:将回调函数转换为独立的函数
  • 行使流程节制库,譬喻[aync]
  • 行使Promise
  • 行使aync/await

  • Promise可以辅佐我们更好地处理赏罚异步操纵。下面的实例中,100ms后会打印result字符串。catch用于错误处理赏罚。多个Promise可以链接起来。

      new Promise((resolve,reject) =>
    
      {
    
          setTimeout(() =>
    
          {
    
              resolve('result');
    
          },100)
    
      })
    
      .then(console.log)
    
      .catch(console.error);</code></pre>

  • 团队协作时,担保同等的代码气魄威风凛凛长短常重要的,这样团队成员才可以更快地修改代码,而不必要每次去顺应新的气魄威风凛凛。这些器材可以辅佐我们:
  • [ESLint] ()
  • [Standard] ()
  • JSLint
  • JSHint
  • ESLint
  • JSCS保举

  • stub用于模块的举动。测试时,stub可觉得函数挪用返回模仿的功效。好比说,我们写文件时,现实上并不必要真正去写。

          var fs = require('fs');
          var writeFileStub = sinon.stub(fs,'writeFile',function(path,data,cb)
    
      {
    
          return cb(null);
    
      });
    
      expect(writeFileStub).to.be.called;
    
      writeFileStub.restore();</code></pre>

  • 测试金字塔回响了必要写的单位测试,集成测试以及端到端测试的比例:

    nodejs口试题

  • 测试HTTP接口时应该是这样的:
  • 许多单位测试,别离测试各个模块(依靠必要stub)
  • 较少的集成测试,测试各个模块之间的交互(依靠不能stub)
  • 少量端到端测试,去挪用真正地接口(依靠不能stub)

  • 这题有陷阱!在类Unix体系中你不该该去监听80端口,由于这必要超等用户权限。因此不保举让你的应用直接监听这个端口。
  • 今朝,假如你必然要让你的应用80端口的话,你可以有通过在Node应用的前线再添加一层反向署理(譬喻nginx)来实现,如下图。不然,提议你直接监听大于1024的端口

    nodejs口试题

  • 偏向署理指的是以署理处事器来吸取Internet上的毗连哀求,然后将哀求转发给内部收集上的处事器, 而且将处事器返回的功效发送给客户端。

  • Node回收的是单线程的处理赏罚机制(全部的I/O哀求都回收非阻塞的事变方法),至少从Node.js开拓者的角度是这样的。而在底层,Node.js借助libuv来作为抽象封装层,从而屏障差异操纵体系的差别,Node可以借助livuv来实现线程。下图暗示Node和libuv的相关

    nodejs口试题

  • Libuv库认真Node API的执行。它将差异的使命分派给差异的线程,形成一个变乱轮回,以异步的方法将使命的执行功效返回给V8引擎。可以简朴用下面这张图来暗示

    nodejs口试题

  • 每一个I/O都必要一个回调函数————一旦执行完便堆到变乱轮回上用于执行

  • 运算错误并不是bug,这是和体系相干的题目,譬喻哀求超时可能硬件妨碍。而措施员错误就是所谓的bug

  • 通过NPM,你可以安装和打点项目标依靠,而且可以或许指明依靠项的详细版本号。对付Node应用开拓而言,你可以通过package.json文件来打点项目信息,设置剧本,以及指明依靠的详细版本

  • stub是用于模仿一个组件或模块的函数或措施。在测试用例中,简朴的说,你可以用stub去模仿一个要领,从而停止挪用真实的要领,行使stub你还可以返回虚拟的功效。你可以共同断言行使stub。
  • (编辑:湖南网)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读