Top Interview Questions for Backend Developers(Node)
Tags: javascript, career, webdev, node
Published: 2021-08-07 17:18:29

## Introduction

Being a Full Stack Developer, I had appeared for Backend Developer position as well. In this post, I will be sharing most common Backend Dev question asked to me in all those interviews except the DSA part.

## Q1. Create a sleep function using Async/Await.

In the below example, the sleep function returns a promise which is resolved after given millisecond using setTimeout API.

{% codepen https://codepen.io/abhishekraj272/pen/MWmzKPZ default-tab=js,result %}

## Q2. How Javascript Engine works?

When a js file is ran,
1. A global execution context is created.

2. A memory heap is created where all variables (with var keyword) and functions (except arrow func) are declared.  
In the below image we can see, variable **a** is declared w/o even execution has started.
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9hhm6xi44nd77wt0w2sc.png)
 
3.  A Call Stack is created which stores the line which is going to be executed.
![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9l92hu7kh951mk9w6flg.png)
 
4. When *call stack* gets a function call, it creates a *functional context* and the process is repeated in the functional context.

5. When *call stack* encounters WEB APIs like setTimeout/Interval/Immediate, these are sent to callback queue to process after call stack is empty.

6. When *call stack* encounters a Promise it is sent to micro task queue (higher priority than callback queue) to process after call stack is empty.

7. Once call stack is empty, event loop moves functions from queues to call stack for execution.

## Q3. Difference between Single Threaded & Asynchronous.

My View:
Single Threaded -> It means only once function can be executed at a time.
Async -> It is about non-blocking of execution of functions.

In this below image, we can easily understand the difference. Thanks to [Baeldung](https://www.baeldung.com/)

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0mjmugbgn2w6cucwvirp.png)

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bepu91vawolbj365xtcm.png)

[Read More](https://www.baeldung.com/cs/async-vs-multi-threading)

## Q4. How to debug a slow API?
My View:
### The Console.log approach
1. Check if the issue is with network by sending request from different network.
2. Log time when *req* is received by the backend.
3. Log time before a DB query.
4. Log time after a DB query.
5. Log time before/after some heavy operation.
6. Log time before sending response.
7. Analyse the time, you will get your culprit.

### Profiler Approach
Use any profiling tool to check where the execution is lagging.

## What is EventEmitter in NodeJS?
My View: EventEmitter is used to create event listeners in JS.

Read More:

{% post abhishekraj272/top-interview-questions-for-frontend-developers-3d5j %}

{% post abhishekraj272/if-you-don-t-know-this-you-don-t-know-javascript-2355 %}

Connect Me @ [Linkedin](https://www.linkedin.com/in/abhishekraj272/), [Github](https://github.com/abhishekraj272), [Twitter](https://twitter.com/abhishekraj272), [Youtube](https://www.youtube.com/channel/UCvHn2T8DSJzEWzYDdK3Dt8A) 😇