node.js面试笔记
1、为什么用Nodejs,它有哪些缺点?
事件驱动,通过闭包很容易实现客户端的生命活期。 不用担心多线程,锁,并行计算的问题 V8引擎速度非常快 对于游戏来说,写一遍游戏逻辑代码,前端后端通用 当然Nodejs也有一些缺点: nodejs更新很快,可能会出现版本兼容 nodejs还不算成熟,还没有大制作 nodejs不像其他的服务器,对于不同的链接,不支持进程和线程操作
2、什么是错误优先的回调函数?
错误优先(Error-first)的回调函数(Error-First Callback)用于同时返回错误和数据。第一个参数返回错误,并且验证它是否出错;其他参数返回数据。 fs.readFile(filePath, function(err, data){ if (err){ // 处理错误 return console.log(err); } console.log(data); });
3、如何避免回调地狱?
模块化:将回调函数转换为独立的函数 使用流程控制库,例如[aync] 使用Promise 使用aync/await
4、什么是Promise?
Promise可以帮助我们更好地处理异步操作。下面的实例中,100ms后会打印result字符串。catch用于错误处理。多个Promise可以链接起来。 new Promise((resolve, reject) =>{ setTimeout(() =>{ resolve('result'); }, 100) }) .then(console.log) .catch(console.error);
5、用什么工具保证一致的代码风格?为什么要这样?
团队协作时,保证一致的代码风格是非常重要的,这样团队成员才可以更快地修改代码,而不需要每次去适应新的风格。这些工具可以帮助我们: [ESLint] (http://eslint.org/) [Standard] (https://standardjs.com/) JSLint JSHint ESLint JSCS推荐
6、什么是stub?举例说明
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();
7、什么是测试金字塔?举例说明
测试金字塔反应了需要写的单元测试,集成测试以及端到端测试的比例: 测试HTTP接口时应该是这样的: 很多单元测试,分别测试各个模块(依赖需要stub) 较少的集成测试,测试各个模块之间的交互(依赖不能stub) 少量端到端测试,去调用真正地接口(依赖不能stub)
相关推荐
lipin 2020-11-03
88254251 2020-11-01
VitaLemon 2020-10-15
PinkBean 2020-08-19
sfkong 2020-08-02
yanchuncheng 2020-07-30
doupoo 2020-07-28
bowean 2020-07-08
88520191 2020-07-05
Magicsoftware 2020-06-11
ChinaGuanq 2020-06-08
angqiuli 2020-06-06
whynotgonow 2020-06-06
whynotgonow 2020-06-03
陈旭阳 2020-06-02
airfling 2020-05-31
88520191 2020-05-20
RainyX 2020-05-19
89500297 2020-05-16