Interview questions for Javascript developers(Epam Systems)

Photo by Maranda Vandergriff on Unsplash

Quite a while ago I was invited to have an interview for the JS developer position at EPAM Systems. Below I am going to share questions I had and leave some comments on them. These are common questions for javascript developers, so this article should help you to understand how any javascript interview goes, and help you prepare for your interview.

Some questions might be different from what I had originally but I do my best to keep main context.

const a = [1];
const b = a;
b.push(2);
console.log(a, b);

There are two main things to consider, both related to object reference: a) After assigning a to b both constants contain a reference to the same object, thus changes made through either of them affect the same object, and logging them prints the same value; b) Although we declared b as a constant, you can still make changes on it, as it is just holding object reference value, and this something you can not change, meaning that you can not reassign another object to constant.

The question was about the difference between var, let, and const. This question might look simple, but answering it correctly and completely proves that you know the basic and fundamental concepts of javascript. When answering this question consider their scope, and explain how hoisting affects each of them. Also, you can provide additional information about how the function keyword behaves and how it is different from arrow functions.

This question was both a bit of theory and coding. Here you have to explain what is context and how it works. Also based on the below code you should tell what each properties value is

const obj = {
a: this,
b: function(){
return this;
},
c: ()=>{
return this;
},
d(){
return this;
},
e: function(){
return this.a;
}
}

This one was quite tricky. Pay attention how this keyword is used in different contexts. Sometimes it is pointing to the global context, and sometimes to object. Try to be as clear as possible explaining what is happening in each case.

I think most interviews have at least one question related to arrays. In my case, I had to explain the difference between Set and Array. I don’t think not knowing Set would affect your scores negatively, but I am pretty sure that knowing what Set is, how to use it, and its common methods would give you an advantage over others. Also, there were some basic questions related to map and forEach.

This set of questions was more about how Javascript works in background, how event loop works, what is stack, macro and micro tasks. Personally, I think very few people can answer these questions, and having knowledge of these concepts, really shows how serious you are about JS.

console.log(1);setTimeout(()=>console.log(2), 0);Promise.resolve().then(()=>console.log(3));setTimeout(()=>console.log(4), 1);console.log(5);

I was asked to tell in which order each number is logged into the console. Keep in mind that although these statements might seem to be equal, each one of them is handled differently by the compiler.

const obj = {
a: 1,
b: "hello",c: {
d: "world"
},
e: {
f: {
g: 100
}
}
};

The task here was making a function that takes an object and gives its exact copy by eliminating every object reference it contains. So I would suggest that you should mention that you can do it easily by JSON stringify, and parse methods, but also provide an in-depth logical solution using recursive functions.

  • Try to be as clear as possible, don’t make up answers if you have no idea about how to answer the question.
  • If questions are simple try to cover every aspect of it, include relevant information but don’t make it boring
  • If you have difficulty explaining some concept verbally, ask to show it in code. Keep in mind that you don’t have to be a good speaker, but prove that you know the concept

React dev.