Summary
I recently had a Round 1 interview for a Frontend Engineer position at Arista, where I was primarily assessed on my JavaScript fundamentals and problem-solving skills. Although I demonstrated proficiency in some areas, I was ultimately not selected for the role.
Full Experience
I participated in the first round of interviews for a Frontend Engineer role at Arista. The interview largely focused on core JavaScript concepts, including the understanding of this context in different scenarios, function manipulation methods like call and bind, and prototypal inheritance. I also faced a practical coding challenge to implement a custom reduce function. While I managed to answer most of the questions, I struggled a bit with one of the prototypal inheritance questions, which I couldn't fully solve on my own during the interview. Despite my efforts, the final outcome was that I was not selected.
Interview Questions (4)
I was asked to determine the output of the following JavaScript code snippets, specifically how the this keyword behaves in both a regular function call and a strict mode function call:
function test1() { console.log(this); } test1();
"use strict"; function test2() { console.log(this); } test2();
The interviewer presented a scenario with a function and an object, and asked how to invoke the function such that its this context refers to the provided object, while also passing specific arguments:
function introduce(city, country) { console.log(${this.name} is ${this.age} years old from ${city}, ${country}); }
const person = { name: "ABC", age: 20 };
I was given a Person constructor and a standalone sayHello function. The challenge was to enable calling sayHello as a method of an object created by Person, such as p1.sayHello(), given the following initial code:
function Person(name) { this.name = name; }const sayHello = function() { console.log(
Hello, I am ${this.name}); };
const p1 = new Person("Arjun"); p1.sayHello(); // calling sayHello from object
I was tasked with implementing my own version of the Array.prototype.reduce function, named customReduce, which should replicate its standard behavior.