Education: Tier 1 college but non-CS branch
Current role: Senior SDE in good product based company
YOE: 8
Hi folks,
I gained a lot from leetcode community and I think it's now my turn to give back.
I started actively applying for oppurtunities and enabled open to work tag in LinkedIn while also applying on multiple company career websites/Instahyre/LinkedIn job postings. MS recruiter approached me over LinkedIn but I also recommend Instahyre for good success rate.
Round 0: Online assessment
Link was sent and took test 2 days after initial contact. 2 DSA questions on hacker rank like platform with 100 minutes time deadline. Expectation is to score above 80% score.
First question is arrays related medium level and second is DP medium-hard. Don't remember the exact questions but definitely leetcode style.
Got result 2 days after OA that they are proceeding to onsites. MS is conducting hiring drives a lot these days and I was asked for a full-day availability for a Saturday. Maximum 4 rounds expected where there will be elimination after 2nd round and 3 rd round and each round is 1 hour duration.
Round 1: Coding round
Typical leetcode style with two medium questions. Mid-senior interviewer with about 10 yoe. First question is related to prefix sum based array problem and second is maximum island area in 2D arrays. I struggled to identify the trick for first question (nervousness did impact performance) but interviewer was very friendly and we worked through my ideas while he was correcting my direction. I took almost 40 mins to complete first question with working code. It could have been done better since it is just medium level array question.
For second question, I have solved similar problems in leetcode before and it is a typical DFS/BFS based answer. Interviewer initially asked me to explain what is the difference b/w DFS and BFS approaches will be. Later we quickly moved to code and I kind of rushed through my explanation for this but was able to come up with working code. I took a recursive DFS approach in the interest of shorter implemention (as time is already running out) and interviewer was initially confused if my base case check will work. I was confident and said him let's try with test cases to validate it. All test cases passed.
Round 2: Low level design
Design LRU cache. Very senior interviewer with ~25 years of experience but very friendly in nature and was clear from start that he cares more about fundamentals rather than fancy problems and hence asking LRU type basic quesiton only. Though it is a well known easy quesiton, he kind of questioned my every step to understand if I really know the logical reasoning behind my decisions. I proposed strategy pattern to keep the design extendable for different eviction policies in future and was asked to implement full working class for it. Implementation took about 40+ minutes as has was asking for reasoning at every step of code (while also correcting if any wrong decisions). There are no test cases as such for this LLD round and it was just interviewer aggreeing that my code should functionally work (while following good code design).
I really enjoyed this round because of the nature of interviewer. I guess old school software engineers are much more friendly to work with than the hyper-competitive new generations :)
Since there is elimination in hiring drive, only 1st and 2nd rounds were pre scheduled and I was waiting eagerly for further information. In my opinion, second round went well but should not have taken so much time for first question in round-1. Luckily, I got a call after lunch that I was shortlisted and asked to be available in 15 minutes.
Round 3: Expected HLD round but it went into multiple dimensions
Interviewer was a manager with 12-15 years of experience and was kind of having pin point expectations from answers. It started with design a file manager. I clarified functional expectations and also mentioned non-functional requirements for such a system. He asked me to specifically talk about what will be the primary workflows to consider. I was expecting HLD style follow-up questionnaire but he did not take the discussion that side and switched gear to a coding problem after about 25 minutes.
It is median of two sorted arrays problem but told that he is only interested in approach and doesn't need full working code. I stared with simple linear time approaches like two pointers and later I only suggested that we should take advantage of sorted data here and there should be a logarithmic approach. Though I saw this question before in leetcode I don't remember the exact solution. So I was talking out loud that if we pick a divider in first array it should automatically fix the divider in second array and we should somehow use that. Interviewer was not believing in that approach to my surprise. He paused me there and asked to explaining binary search fundamentally first. Later we discussed how that invariant can be maintained with two sorted arrays in context. I somehow feel we did not really discuss a fully working solution but he kind of paused with that question after spending about 20 minutes.
Later he asked me a third question which is HLD related and specific scaling issue as I recall (don't remember exact). After spending 10-15 minutes on this, we ended the interview. This round went for about 1 hr 15 min total.
It was a mixed feeling overall as I felt this more like a stress interview while touching on multiple dimensions.
I got a call in 30 minutes that I was shortlisted for final round and asked to be available in 5 minutes.
Round 4: Hiring manager round but discussed completely on HLD
Interviewer was director level senior person. I was expecting more previous project related or behavior style questions but to my surprise he initially gave me few minutes to ask my side of questions and said we will move to one specific question soon. Since recruiter told me before that I am being considered for a full stack position, I asked him what are the expectations since I have a backend only experience till this point. He told me sarcastically that MS doesn't ship any backend-only products and UI is an expected charter from every team :)
But he also assured me that it should not be a problem and MS is used to considering backend-only profiles for these roles and made a statement that tech stack is a funny thing that keeps changing and we should focus on understanding fundamentals of computer science as an engineer.
After about 10 minutes we moved to actual question where he clearly told upfront that he want me to focus on specific usecase rather than the entire application he is going to describe. He actually took about 5 minutes to describe an application use case in detail and asked to me to focus on what considerations I will take in designing network layer for a mobile client that is going to send scheduled data (like telemetry) to remote server. Most of the discussion surrounded over designing a common platform like client which can be used by multiple mobile apps that is also considerate for metered mobile networks vs wifi enabled devices. He also touched deep on networking related concepts involved, maintainability of this common client across versions etc.
I think this round really tested my design experience rather than the typical HLD questions we see in Alex Xu/Edu_cative courses. I read this particular book High Performance browser networking by Ilya Grigorik in the past (about 4 years back) as I was just curious on the optimizations in that domain and I think it really helped me answer some of the specific design questions in this round. Note that I come from typical backend engineering application developer profile only but interviewer expected me to understand networking problems as he explains the use case and come up with good design ideas on how we can approach them. I was confident on my performance in this round.
Result: 2 days later I got email directly to submit my financial documents. Email did not use the exact words selected but understood from different experiences on this platform that we can consider it cleared.
My current compensation is on higher side with 8 years of experience and I was slightly concerned that if only L63 is offered, it will be tough to match for MS salary bands. They took a really long time (more than 2 weeks) to get back with offer numbers to add to the pressure. Later I learnt it was only processing/human delay involved rather than decision making. I was offered L64 with good numbers. Though it was not so great hike compared to my current compensation, I have fair reasons to accept the offer - https://leetcode.com/discuss/compensation/5618351/Microsoft-or-L64-or-Hyderabad-or-Offer
If you have taken time to read till here, I think I did not bore you with my elaborate post :)
Preparation strategy/learnings/personal story:
I took a really long and sparse preparation stint to reach here. I was doing leetcode on and off for multiple months (actually years :P) but never got time to complete everything I wanted to study before applying. It reached a point where I was regretting my commitment to prep and tried to push myself last few months. I am from non-CS backdrop to start with, and I have very basic knowledge of DSA. My design experience is good in current company but have never paticipated in CP before and leetcode style DSA rounds felt scary when I started interview preparation. All my 8 years of experience is in one company only and this was my first interview after college practically.
LC stats - About 200 questions submitted (mostly medium) but read through questions and answers of more than 600 questions I would say. I used Blind 75/Neet Code 150 lists extensively rather than solving random questions because I feel LC question set is an ocean. I do recommend participating in LC contests to have that time bound practice with newly phrased questions but I myself participated in only a couple of contests due to lack of time.
Books - Read through Cra_cking coding interview and ele_ments of programming interview (EPI) problems and solutions. I strongly recommend EPI because it not only captures solutions but also the way to think about it. Of course some of the leetcode discuss section posts are gold in explaining approaches.
System design -
Alex Xu books (both volume 1 and volume 2)
System design primer - https://github.com/donnemartin/system-design-primer
Narendra L, Gaurav Sen, Tushar Roy and some other youtube channels
Soumyajit Bhattacharya youtube channel , Edu_cative LLD specific course for Low level design
Web scalability for startup engineers by Arthur Ejsmont
High scalabilty website and lot of other random design posts on web
Others - William Fiset youtube channel is awesome to understand graphs. Referred his vidoes multiple times
Behavioural questions - Dan Croiter youtube channel and wrote down STAR answers to about 10 personal stories
Full disclosure: I posted these details once in Leetcode before joining MS but took it down in short period to avoid any risk - just personal fear probably :)
Reposting now again to give back to community.


