Data Engineer || MoEngage || 2 YOE

moengage logo
moengage
Data Engineer2 yearsRejected
September 18, 20259 reads

Summary

I recently interviewed for a Data Engineer position at MoEngage, which included a DSA round where I was asked to implement the 'Shuffle an Array' problem. Despite discussing several approaches for the solution, my candidacy was ultimately rejected.

Full Experience

I received a call from MoEngage HR regarding a Data Engineer opening. The interview process was described as having one DSA round, one System Design round, and one HR round. My first round was the DSA round. The interviewer provided a link to the LeetCode problem 'Shuffle an Array' and asked me to explain my approach and write code while discussing it. Initially, I proposed a brute-force idea of generating all permutations, but after discussing its time complexity, we agreed it wouldn't be an optimal solution. I then proceeded to explain multiple other approaches:

  1. Approach 1: Generate two random indices (using a random function) in the range [1, n], swap the elements at those indices, and then return the array.
  2. Approach 2: Iterate through the array. For each current index i, generate a random index j (typically within the range of elements not yet processed, e.g., [i, n-1]) and swap the elements at nums[i] and nums[j].
  3. Approach 3: Insert all elements into a HashSet (as in Java) and then randomly remove elements one by one to form the shuffled array. I did mention that this approach might not guarantee equal likelihood of all permutations.
Despite our discussions on these different methods, I was informed that my application was not successful and I was rejected.

Interview Questions (1)

Q1
Shuffle an Array
Data Structures & AlgorithmsMedium

The interviewer shared a link to the LeetCode problem 'Shuffle an Array'. The task was to design an algorithm to randomly shuffle an integer array, ensuring that all permutations of the array are equally likely. I needed to implement the Solution class with the following methods:

  • Solution(int[] nums): Initializes the object with the integer array nums.
  • int[] reset(): Resets the array to its original configuration and returns it.
  • int[] shuffle(): Returns a random shuffling of the array.

Discussion (0)

Share your thoughts and ask questions

Join the Discussion

Sign in with Google to share your thoughts and ask questions

No comments yet

Be the first to share your thoughts and start the discussion!