Interview Round 4 - Frontend Developer Role @ Invictus Data AI

In my previous article, I have written my round 3 interview experience at Invictus Data AI. I got a call from HR informing me that I was selected for round 4 (last round), which took place today.

In this article, I will share the questions I have been asked and my experience. Let’s gooo!

Interview Duration: Around 48 minutes

NOTE : Please note that while the terminology and phrasing used in this article may not exactly align with the interviewer's original wording, I will try my best to maintain the context and intent/meaning of the question.


Interviewer has joined late by 15 minutes, and he has apologized for that, which felt nice/cute ;)

Question 1 : Can you tell a bit about yourself?

I gave my introduction covering my skills, experience, and my future goals


Question 2 : Can you tell about the projects you have worked on, and the technologies used?

I told about the projects I have worked on, and what they are built with, and their purpose.


Question 3 : How is the browser able to display a React application? Because the browser only understands HTML, right? How does the React code get transpiled into what the browser can understand?

I have explained how bundlers/tools like Vite, create-react-app (deprecated) are used to create a React application, how JSX is used, the role of Babel, and about transpiling. I also gave an example of how an h1 element gets converted into React.element()


Question 4 : What is virtual DOM and what is its role?

I have explained the use of virtual DOM, how it helps in efficiently rendering the React application, and how it is different from the browser DOM.


Question 5 : How does React compare changes in the virtual DOM? How does React know what changes to make on the browser?

I have explained about the diffing algorithm, and how React compares changes between the (n-1)th virtual DOM and the nth virtual DOM in the memory using this algorithm.


Output Based Questions

Task 1 : The Interviewer gave me a link to a codefile and asked me to write the outputs for each task in the file

Tasks are :

// 1
console.log(0 == "0");
console.log(0 === "0");
console.log(false == []);
console.log(false === []);

// 2
console.log("Start");
setTimeout(() => console.log("Timeout"), 0);
Promise.resolve().then(() => console.log("Promise"));
console.log("End"); 

// 3
const arr = [1, 2, 3];
arr.push(4);
arr = [5, 6, 7]; 
console.log(arr);

// 4
const obj = {
    name: "Hello world!",
    greet: () => { 
        return this.name;
    },
};

const greet = obj.greet;
console.log(greet()); 
console.log(obj.greet());

// 5
async function test() {
    console.log("A"); 
    await Promise.resolve();
    console.log("B");
}
console.log("C");
test();
console.log("D");

I wrote right answers for the first 3 tasks, but wasn’t able to get them right for the 4th and 5th ones :/
(I have evaluated after the interview)


Task 2 : Let’s say there is a footer and header as below, how will they be rendered on the page, which one will be displayed first? Will they be displayed in the same order as written in the code?


<body>
<footer></footer>
<header></header>
</body>

I fumbled a lot while answering and justifying my answer for this question, since I did not know the right answer :/

While I did say that HTML will render the elements on the web page in the same order as written, so the footer will be displayed first and then the header (which is the right answer). The mistake I made was, when the interviewer asked if HTML cares about the order of the elements on the web page, I said YES, HTML maintains the order by having header at the top and footer at the bottom (which I think is the wrong answer)


Scenario Based Questions

Question 1 : Let’s suppose a page has external API calls or something else, because of which the page is taking time to load. What do you do to load the page quickly?

I told that I will limit the API calls using useEffect, useCallback, and useMemo efficiently, and how I will use the dependency array.


(Follow up question)

Question 2 : That is for APIs, what about things other than APIs, which are affecting page load time?

I gave an example of images, videos and how they can be rendered efficiently using lazy loading, and I also said that we need to render only those things that are required to be shown on the web page at any given point, and rendering the components as and when required, like when user scrolls, etc.


Question 3 : How would you perform the page load testing?

I said I will do multiple rounds of testing and note down what are the things that are delaying the page load time, for example, like API calls, images, third party libraries, etc. and will take necessary steps to reduce the load time.


Question 4 : How do you approach security aspect while building an application?

I said I will ensure authentication is implemented, to restrict access only to limited people, and will make sure cross site scripting attacks cannot be performed and also implement rate limiting to make sure denial of service (DDOS) attacks cannot be made, and while deploying application on the cloud, I will create virtual networks and firewalls to protect the application from any external people or attackers.


Question 5 : Let’s say you are given a ticket with a LOE (Level of Estimate), how would you calculate the time it would take to finish and close the ticket?

(I cross-questioned the interviewer, asking if I should assume it as a bug or a development task, and he told me to assume it as a bug)

I said it depends on what all are involved in causing the bug, if one component is involved, it takes less time to complete, and if an external API is involved, and the JSON structure of it has been updated, it would take a bit more time, and if the bug needs optimization, it would take more time since it needs a round of testing as well, and if bug is on security level, and if we can do something on devops side of things to resolve it, it would take more time since it’s not just about promoting to production, but ensuring that it is not a security concern anymore.


Question 6 : Let’s say you are given a task which the client has asked to complete in 50 hours, but it needs more time than that. How would you approach this, and fulfill the client’s requirements?

I said I will approach it in an MVP way and prioritize providing the maximum functionality, and will de-prioritize the design part and optimizations, and will take it up once the functionality has been achieved.


My Questions to Interviewer

Question 1 : Since you have a huge amount of experience in building scalable web applications, what are the things that have helped you in technical growth and growth in the organization, to reach this level where you are? If you can share those, it will be really helpful for my growth as well.

Interviewer told that, w.r.t the technical growth, the foundations should be solid, for example in JavaScript or Java. Frameworks are not important, they should be learnt definitely, but the foundations are much more important than learning frameworks. It is important to understand how things work behind the scenes. You should understand the strengths and capabilities of your teammates. You should know who is good at what. For growth in an organization, you should have basic instincts. You should know what needs to be done at any point in time, and what benefits the organization. You should focus on providing effective value to the organization, like delivering the product as soon as possible, I am not saying optimizations are not important, etc., but, the output is important to the organization. So, you should know what the organization cares about and what it needs, and you should be able to provide it.


Question 2 : What is the relationship that we should have with anyone we are managing and with the one who is managing us?

Interviewer : That’s a very good question. In your team, you should build a rapport with people below you and above you. You should know how to deal with anyone. You should not feel like you are superior to someone, and someone above you should not feel like that about you. You should know what a junior developer is good at, and what a senior developer is not good at as well. Sometimes, your senior developer might not be available, then you should know how to take help from junior developers. Also, when someone makes any mistake, you should not blame them for it. You should communicate and help them understand their mistake, and tell them not to make the mistake again in a smoother way. You should take responsibility for the mistakes in the team.


Conclusion

This round is definitely the toughest one out of all four rounds. With this interview round, I came to know the importance of JavaScript foundations, and that I have to get better at them, and output-based questions. I also understood the importance of scenario-based questions and I will need to learn how I can answer them better. Overall, I need more practice, focus, curiosity, and dedication.

Like, share and follow me for more such content. All the best for your interviews!

0
Subscribe to my newsletter

Read articles from Prabhu Kalyan Korivi directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Prabhu Kalyan Korivi
Prabhu Kalyan Korivi

I am a Software Engineer, focused towards building scalable and reliable systems which contribute to the growth of the company I work in.