后端开发人员(Node)的热门面试问题
介绍
作为一名全栈开发人员,我也曾应聘过后端开发人员的职位。在这篇文章中,我将分享除 DSA 部分之外,所有面试中我遇到的最常见的后端开发问题。
Q1. 使用 Async/Await 创建一个睡眠函数。
在下面的例子中,sleep 函数返回一个承诺,该承诺在给定的毫秒后使用 setTimeout API 解决。
Javascript 引擎如何工作?
当 js 文件运行时,
-
创建全局执行上下文。
-
所有变量(带有 var 关键字)和函数(箭头函数除外)声明的地方都会创建一个内存堆。
下图中我们可以看到,变量a的声明甚至在执行尚未开始的情况下就完成了。 -
当调用堆栈获得一个函数调用时,它会创建一个功能上下文,并在功能上下文中重复该过程。
-
当调用栈遇到setTimeout/Interval/Immediate等WEB API时,这些API会被发送到回调队列,待调用栈为空后再进行处理。
-
当调用栈遇到Promise时,它会被发送到微任务队列(优先级高于回调队列)以便在调用栈为空后进行处理。
-
一旦调用堆栈为空,事件循环就会将函数从队列移动到调用堆栈进行执行。
单线程和异步之间的区别。
我的观点:
单线程 -> 意味着每次只能执行一个函数。
异步 -> 意味着函数执行的非阻塞。
下图中,我们可以轻松理解其中的区别。感谢Baeldung
如何调试缓慢的 API?
我的观点:
Console.log 方法
- 通过从不同的网络发送请求来检查问题是否出在网络上。
- 记录后端收到请求的时间。
- 记录数据库查询之前的时间。
- 记录数据库查询后的时间。
- 记录一些繁重操作之前/之后的时间。
- 发送响应之前记录时间。
- 分析一下时间,你就会找到罪魁祸首。
剖析器方法
使用任何分析工具来检查执行滞后的地方。
NodeJS 中的 EventEmitter 是什么?
我的观点:EventEmitter 用于在 JS 中创建事件监听器。
阅读更多:
通过Linkedin、Github、Twitter、Youtube联系我😇
文章来源:https://dev.to/abhishekraj272/top-interview-questions-for-backend-developers-node-2133