🚀 My UiPath Frontend Interview Experience | 45 LPA | SDE-2 UI
Overview
This case study outlines a candidate's interview journey for a Senior Frontend Engineer (SDE-2 UI) role at UiPath. The process involved assessments of JavaScript proficiency, problem-solving abilities, and system design knowledge. The candidate shares specific questions encountered, code solutions presented, and reflections on the interview structure.
Interview Rounds
Round 1: DSA (Coding Round)
This round evaluated the candidate's data structures and algorithms skills, with a focus on JavaScript fundamentals.
Question 1: Maximum Robbery Amount
The candidate was asked to determine the maximum amount a thief could steal from houses along a street, with the constraint that no two adjacent houses could be robbed.
function getMaximumRobberyAmount(listOfHouses = []) {
let totalOddSum = 0;
let totalEvenSum = 0;
for(let i = 0; i < listOfHouses.length; i++) {
let currentHouseAmount = listOfHouses[i];
if(i % 2 == 0) {
totalEvenSum += currentHouseAmount
} else {
totalOddSum += currentHouseAmount
}
}
return Math.max(totalOddSum, totalEvenSum);
}
console.log(getMaximumRobberyAmount([1,2,3,1])); // Output: 4
console.log(getMaximumRobberyAmount([2,7,9,3,1])); // Output: 12
Question 2: Reverse Words in a String
The challenge involved reversing the order of words in a given sentence while maintaining the original position of each word.
function reverseWords(sentence) {
return (
sentence.split(' ')
.map(word => word.split('')
.reverse().join('')).join(' ')
)
}
console.log(reverseWords("Welcome to UiPath"));
// Output: "emocleW ot htaPiU"
Round 2: Machine Coding Challenge
In this round, the candidate was tasked with building a Notes Application using Vanilla JavaScript. The application should allow users to add, edit, and delete notes.
Additional questions included:
- Why is JavaScript faster than other languages?
- Explain Hoisting in JavaScript.
- What is the Event Loop in JavaScript?
Round 3: Low-Level Design (LLD)
The candidate was presented with the following problem: Given an array of numbers, return a frequency count of each number in a structured format.
let SAMPLE_DATA = [
[1, 2, 3, 2],
[2, 5, 1, 7, 1],
[3, 4, 2, 5, 2, 8]
];
function getNumberFrequency(inputData = []) {
let frequency = {};
let finalList = inputData.flat();
finalList.forEach(num => {
frequency[num] = (frequency[num] || 0) + 1;
});
return frequency;
}
console.log(getNumberFrequency(SAMPLE_DATA));
Follow-up questions included:
- How would you design a Chat Application?
- How would you implement a Pub-Sub (Publish-Subscribe) model for real-time messaging?
Key Takeaways
The candidate emphasized the importance of a strong grasp of JavaScript fundamentals, including closures, hoisting, the event loop, map vs. object, and spread operators. The candidate also highlighted the need to practice problem-solving with DSA and LLD questions, as well as improving system design thinking, especially in the context of real-world applications like chat applications. The candidate learned the importance of seeking feedback even after rejection.
Original Source
This experience was originally published on medium. Support the author by visiting the original post.
Read on medium