Background:
Bachelor’s from Tier 2/3 College (not sure some state govt. college). 6 years (Product based, mostly in MAANG)
Application process:
Applied through referral [However if you have strong resume for job requirement it will go through without referral as well (Applied for L4 in 2021 without referral)]
After Resume Selection:
Recruiter reachout for interviews date and explained the process. For L5, three round of DSA, one round of System design and one round of googlyness & leadership.
Recruiter told me System design and Leadership round will be conducted only if I clear DSA round ( at least 2 hire call in 3 rounds).
You will have options to have multiple round on same day or you can have it on different day as well I had all rounds on different day (DSA had ~2/3 days of gap between each round).
For System design and Leadership round I took another 3/4 weeks.
I took around 4 weeks to prepare. I would suggest, do not hurry and take your time to prepare
The Interview Process
Round 1: DSA
Problem Statement: Given a single string which has space separated sorted numbers, determine whether a specific target number is present in the string.E.g. Input: "1 23 34 123 453" Target: 123 Output: true.
Solution:I started with some straight forward brute force approach like, storing these into a list of interger and apply binary search. Apply linear search directly over the string. Final solution was applying binary search directly over the string. Constraint was that numbers would fit in numeric data type.
Round 2: DSA
Problem Statement: It was standard binary tree problem which required some calculation on it's leaf node.
Solution: I provided the DFS (inorder) solution, however interviewer asked on if BFS can be applied which was like level order traversal. Provided both the solution, fumbled a little bit in complexity analysis which I corrected when interviewer nudged me to think about different kind of trees.
Round 3: DSA
Problem Statement: Given an integer array and an integer k (1 ≤ k ≤ array length), calculate the maximum value of each contiguous subarray of length k in the array and output these maximum values.
The time complexity must be O(n), the space complexity must be O(k), and it is permissible to print the results directly without storing them.
Solution: Use a double-ended queue to maintain the candidates that may become the maximum value within the current window, ensuring that the values corresponding to the indices of the elements stored in the queue are monotonically decreasing. When a new element is encountered, first check if the head of the queue is still within the current window range; if it is outside, remove it. Compare the new element with the candidates at the tail of the queue, and remove all elements smaller than the new element to maintain the queue order. After adding the current element index to the queue, the head element becomes the maximum value of the current window.
This ensures that each element enters and exits the queue at most once. It achieves O(n) time complexity, while the queue length does not exceed k, satisfying the O(k) space requirement.
Round 4: System Design
Problem Statement: design small image/gifs/video hosting platform which does not require sign up.
Solution:
Drew high level component for the system. and explain underlying tech that can be used. e.g. storing metadata in DB (relation/non-relational) and image on file bases on storage system like S3 Had indepth discussion on relational vs non-relational. I went ahead with no-sql based db to store meta data. Provided strong points on why, I am using this Note : I did not provided loadbalancer, gateways, proxy at this point of time 4. Dig deeper into core component Discussed the bottleneck of HLD components. Then introduced, tech that can be used to solve those issues like loadbalanacer, proxies (forward, backward). Cache to store metadata. Having a background image processing system to ensure images can be stored in different format to serve all kind of user (like slow internet etc).
Interview Summary & Suggestions
Since I have already participated in several interviews, I am quite familiar with the basic concepts. While preparing for the Google interview, I tried to solve 4-5 medium/difficult level questions on Leetcode and GFG every day, and regularly participated in Leetcode competitions. I used the Needcode strategy map to ensure that I completed questions from different categories.
I learned different concepts through multiple channels on YouTube (these channels are quite popular on YouTube). After gaining a thorough understanding of the basic concepts, I began trying to solve the problems on the Needcode strategy map. This was my quick review before the interview.
There aren't many free structured resources for system design. I mainly learn through YouTube. Alex Xu's book, System Design Interview: An Insider's Guide, is very helpful for improving skills and preparing for interviews.
For senior positions, it is generally expected that the interviewee will lead the entire system design interview. The interviewer only needs to present the scenario, and the interviewee will explain how it is currently handled or how it will be handled in the future. During the interview, the interviewee should continuously share their thought process while maintaining an open attitude to accept feedback and adjust in that direction.
If you encounter any confusion while preparing for an interview, you can visit ProgramHelp to find solutions. It will assist you in overcoming technical challenges, and enhance your problem-solving skills.
Top comments (0)