A recruiter reached out to me, and here’s how the interviews went:
Bar Raiser Rounds:
Coin Change Problem: A dynamic programming problem.
Design E-commerce LLD: I was asked to design a low-level architecture for an e-commerce system.
The interviews were conducted in a random order:
LLD Discussion:
Design an Online Survey System: Interestingly, despite the HR informing me that it was supposed to be a pure coding round, I was asked to design a system for an online survey.
Coding Round:
I was given an arrays-related question, which I solved with an optimized solution in 20 minutes. Out of nowhere, the interviewer shifted the discussion and asked me to design a system similar to Google Drive. The scenario involved uploading a 100 GB file over a network with 10 Mbps speed, which was unstable. I fumbled a bit here as I didn’t have much experience in breaking files into chunks and handling such uploads. I admitted that I was unfamiliar with this area, but the interviewer kept pressing for more details, which added to the pressure.
The first two rounds went well, but the third round didn’t go as expected. The HR mentioned that they would conduct another round, but now they’re not responding.
4th round:
Design cricBuzz HLD : Discussion went very well.
Verdict: Rejection, still I don't understand why they rejected me.
Takeaways: Don’t rush to an optimized solution too quickly. Start with a brute-force approach and walk through the problem gradually, even if it seems inefficient at first. This helps use up time and avoids leaving too much time for the interviewer to shift focus to irrelevant or unexpected questions that might not be directly related to your expertise.