手机版

总结几个关于Node.js的面试问题

时间:2021-09-06 来源:互联网 编辑:宝哥软件园 浏览:

什么是错误优先的回调方法

错误优先回调用于同时传递错误和数据。以误差为第一个参数,首先要检查是否有误差。附加参数用于传递数据。

fs.readfile (filepath,函数(err,data){ if(err){//处理错误,这里的返回非常重要。如果发生错误,它将在这里停止。返回console . log(err);}//传递数据console.log(数据);})如何避免回到地狱?

模块化将回调函数分成独立的函数,并使用控制流库。例如,什么是异步生成器与承诺异步/等待承诺相结合?

我不需要谈论这个概念。简单地说,它是帮助您更好地处理异步操作的东西。

新承诺((解决,拒绝)={ setTimeout(()={解决('结果'));}, 100)}).然后(console.log)。catch (console.error)什么是存根?比如?

Stub用于模拟组件/模块的行为,它在测试阶段为函数调用提供内部响应。

这个例子是写一个文件,但实际上并没有完成

var fs=require(' fs ');var writeFileStub=sinon.stub(fs,‘Writefile’,function(path,data,CB){ return CB(null)})expect(Writefilestub). to . be . calledWritefilestub . restore();如何保护您的HTTP cookies免受XSS攻击

将这些消息添加到set-cookieHTTP头:

HttpOnly-该属性用于防止跨站点脚本攻击,它不允许通过JavaScript代码获取cookie。Secure-此属性告诉浏览器仅当HTTPS连接时发送cookie,如下所示:set-cookit : sid=cookit-value;HttpOnly

以下代码有什么问题

新承诺((解决,拒绝)={抛出新错误('错误')})。然后(控制台。log)则跟不上catch,因此如果错误的代码仍在静默运行,它不会告诉您哪里出错了。

修改后:

新承诺((解决,拒绝)={抛出新错误('错误')})。然后(console.log)。catch (console.error)如果您正在调试一个大型项目,您不知道哪个承诺可能有问题,所以您可以使用unhandledRejection。它打印出所有未处理的承诺异常

process.on('未处理的拒绝',(err)={console.log (err)})下面的代码有什么问题?

函数checkapikey (apikeyfromdb,apikey received){ if(apikey fromdb==apikey received){ return true } return false }说实话,第一次看到的时候,看起来很迷惑。有什么问题?这不是正常的if else代码吗?

然而,这不是一个普通的if else代码。它是用于比较安全证书的代码。这个时候,你不能透露一点信息,所以一定要在一定的时间内进行比较。否则,您的应用程序可能会受到时间攻击。

什么是定时攻击?Node.js使用的V8引擎试图从表示级别优化代码。它逐个字符进行比较,一旦发现不一致,就停止比较。

你可以通过使用加密来解决这个问题,一个npm模块

函数checkapikey (apikeyfromdb,apikey received){如何返回加密。fixedtimecimipype(apikeyfromdb,apikeyreceived)}用通俗的方式解释定时攻击?

定时攻击属于边通道攻击/旁路攻击。侧信道攻击是指利用信道外的信息进行攻击的方式,如加解密的速度/加解密时芯片管脚的电压/密文传输的流程和方式。一个字是“拐弯抹角”。

举一个最简单的定时攻击的例子,某个函数负责比较用户输入的密码和系统中存储的密码是否相同。如果函数从第一个地方开始比较,发现差异就立即返回,通过计算返回速度就可以知道哪一个开始不一样了,从而实现电影中经常出现的一点一点破解密码的场景。密码破解的复杂度降低了几千倍甚至上百万倍。

最简单的防御方法是:“当发现错误时,不会立即返回,而是设置一个标志位,直到两个字符串完全比较后再返回”。

计时攻击不是理论上的攻击方法。OpenSSL、OpenSSH等应用都存在定时攻击漏洞。让我们举一个实际的例子:

下面的代码将输出什么

Promise.reso(1)。然后((x)=x ^ 1)。然后((x)={抛出新错误('我的错误')})。catch(()=1)。然后((x)=x ^ 1)。然后((x)=console.log(x))。catch(console.error)创建了一个新的Promise,它解析参数1,并将1添加到解析值(现在是2)中,并立即返回解析值2进行丢弃,抛出一个要丢弃的异常,在新值1返回catch后操作不会停止。在异常处理之前,它继续运行,并返回一个添加了1的新值2,并将返回值打印出来。

以上是关于Node.js的几个面试问题,希望本文的内容对大家有所帮助。有问题可以留言交流。谢谢你的支持。

版权声明:总结几个关于Node.js的面试问题是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。