Round 1 - LP + High Level System Design
Questions on LP for almost 20 minutes.
Design a Photo Sharing Service something similar to Instagram.
Overall this round went well, i could talk about the LP questions. But like I said it went for almost 20-25 minutes and that left just 40 mins for the system design question. I was able to list out all the core components. The core services that should be responsible. Data Sharding & strategies, caching. It overall went good. Then, he was more keen on how would I manage it in a distributed environment and he wasn't convinced with that I suppose.
Round 2 - LP + Low Level System design
Questions on LP for almost 15 minutes.
Design a parking lot.
I was able to implement all the major requirements - park, unpark, billing details.
Then was asked to implement dynamic pricing defining strategies for each vehicle type. For which I had to revisit and make changes in my design and I think the interviewer wasn't convinced with that.
Round 3 - LP + Problem Solving
Questions on LP for almost 15 minutes.
Two problem solving questions.
Design a randomized data structure with insert, delete, search, getRandom - https://leetcode.com/problems/insert-delete-getrandom-o1/ - I came up with the approach pretty quickly in under 10-15 mins as I had solved this question already.
String based problem - a key on keyboard was inserting # instead of backspace in the strings. Given two such erroneous strings check if they are equal or not.
Example : str1 - a#bc##dd str2 - b#dd. Both strings are equal as, the str1 -> dd as output after deleting every character that occurs before # similarly str2 -> dd.
Came up with extra space solution using Stacks initially. Then just discussed the optimised solution by traversing the strings from the end instead.
PS : Had to write the working code for both the problem solving questions.
I was sort of positive as I thought overall it went good but got upset 4 days later when I got a rejection mail from the recruiter.
Hope this helps someone.