总结几道关于Node.js的面试问题
什么是error-first的回调方式
Error-first回调方式用来同时传递error和data。将错误作为第一个参数,它就必须先检查看看有没有错误先。另外的参数就用来传递data了。
fs.readFile(filePath, function(err, data) { if(err) { //处理错误,这里的return很重要,如果发生错误,在此处就会停止了。 return console.log(err); } //传递data console.log(data); })
你是如何避免回调地狱的"nofollow" target="_blank" href="https://www.npmjs.com/package/async">async
Promise是什么"htmlcode">
stub是什么"htmlcode">
如何保证你的HTTP cookies安全不受XSS攻击 在set-cookieHTTP头部加上这几个信息: 像这样: 下面这段代码有什么问题 then后面没有跟上catch,这样的话如果出错的这段代码还是默默地运行,并不会告诉你哪里出错了。 修改后: 如果你正在调试一个大型项目,你不知道哪个Promise可能会有问题,可以使用unhandledRejection。它会打印出所有未经处理的Promise异常 下面的代码有什么问题"htmlcode">
说实话我刚看到的时候也是一脸懵逼,这有啥问题?不是很正常的一个if else代码吗。 不过这不是普通的if else代码,这是用来比较安全证书的代码,这个时候你不能泄露一丁点的信息,所以确保他们在一定的时间内进行比较。否则的你的应用就可能受到时序攻击了。 什么是时序攻击(timing attacks)?Node.js使用的V8引擎试图从表示层面上优化代码。它一个字符一个字符地比较,一旦找到不符合它就停止比较。 你可以使用cryptiles这个npm模块来解决这个问题 如何通俗地解释时序攻击(timing attack)"text-align: center"> 下面的代码会输出什么 总结 以上就是关于Node.js的几道面试题,希望本文的内容对大家能有所帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
new Promise((resolve, reject) => {
setTimeout(() => {
resolve('result');
}, 100)
})
.then(console.log)
.catch(console.error)
var fs = require('fs');
var writeFileStub = sinon.stub(fs, 'writeFile', function(path, data, cb) {
return cb(null)
})
expect(writeFileStub).to.be.called
writeFileStub.restore();
Set-Cookit: sid=<cookit-value>; HttpOnly
new Promise((resolve, reject) => {
throw new Error('error')
}).then(console.log)
new Promise((resolve, reject) => {
throw new Error('error')
}).then(console.log).catch(console.error)
process.on('unhandledRejection', (err) => {
console.log(err)
})
function checkApiKey(apiKeyFromDb, apiKeyReceived) {
if (apiKeyFromDb === apiKeyReceived) {
return true
}
return false
}
function checkApiKey(apiKeyFromDb, apiKeyReceived) {
return cryptiles.fixedTimeCimparison(apiKeyFromDb, apiKeyReceived)
}
Promise.reso(1)
.then((x) => x + 1)
.then((x) => {throw new Error('My Error')})
.catch(() => 1)
.then((x) => x + 1)
.then((x) => console.log(x))
.catch(console.error)
下一篇:微信端开发--登录小程序步骤