Microsoft Interview Experience | 3 Years Experienced
Round-1(Online Coding Round):
- The recruiter sent me the link for the test on Monday and asked me to complete it by Tuesday if I wanted to get an invite for the drive on Friday.
- Codility Platform, 2 Coding Questions, 70 minutes
- It was just an eligibility round. Anyone who scored more than 50% was invited for the placement drive.
- The interviews started at 9AM on a Friday. Each round was an elimination round.
- After each round, I got a call from the Recruiter with the details of the next round.
- Each Interviewer will give some time in the end to ask questions. Try to be prepared with some questions.
Round-2(Technical Interview Round-1):
- Is given array a Mountain Array
- Coded a simple O(n) solution.
- The interviewer was satisfied and quickly moved ahead as he wanted to start with an easy question.
- Median of 2 sorted arrays of different sizes
- Told him both approaches of this question.
- He asked me code the first approach with time complexity O(m+n)
- He then gave me a few examples and asked me to dry run the code with those.
- After some optimizations during the dry run, he was satisfied with the code.
Round-3(Technical Interview Round-2):
- Discussed about the projects which I’ve worked on in my current company. Asked me to do a HLD of my current project, along with the requirements and the architectural diagram.
- Design an API for the Front End Service.
- Used Java and Spring JPA.
- Coded the Entity, Repository, Service, BusinessService and Controller Layer.
- Also, wrote a snippet for yml connection configuration and the dependencies required.
- She asked some follow on questions and was eventually satisfied with the entire code.
- There is a Windows Service running in Production. It polls the DB for the top 10 records (tasks) according to the priority and pushes those records in the queue for processing. The Priority values of the tasks can be P1, P2, and P3. Due to some reason, the queue is blocked. An adhoc request comes from the client to process a lower priority task(say, P2)
- What steps can be taken to handle such adhoc requests when no such mechanism is built in and the queue is also blocked?
- What other modifications can be made in this system for making it ready for any such further adhoc requests and dealing with the blocked queue?
- We had a long discussion on the approaches. She had counter questions for all my suggestions.
- From this question, she wanted to check my overall understanding of the design for failure and other system design concepts.
Round-4(Technical Interview Round-3)
- Find repeating element in a sorted array
- Coded a O(log n) approach using Binary Search
- He had some examples with which he wanted to dry run the code.
- He was satisfied with the approach and moved to second question quickly.
- Design a Special Logger System (LLD). This system receives a Log Message and a Timestamp. The requirement is to discard the message if the same message is received within the 10 second time frame. But every time a message is received, its timer should reset and that timer should remain valid for the next 10 seconds of the last request.
- For example, if a msg M1 was received at t=1. Now if same msg M1 is received at t = 9, it should be discarded, as it is within 10 sec. But now, this window should be valid upto t=19, as last M1 msg was received at t = 9.
- We had a lot of discussion on the data structures which we can use.
- He finally agreed for me to use a combination of MaxHeap(PriorityQueue) and HashMap.
- I finally coded the entire solution and we discussed all the edge cases.
- After a lot of discussion and modifications, he was finally satisfied with the final code.
Round-5(Hiring Manager Round):
- The first 3 technical interviews completed on Friday as part of the drive.
- This interview was scheduled on Tuesday evening.
- This is the person who will have a final word in deciding if they want to roll out an offer for you or not.
- He had a detailed feedback of all my previous rounds, including the questions which were asked and how I had performed.
- He was satisfied with my overall performance in the previous rounds and we had some discussion about the tech stack that I’m comfortable in.
Design Question (LLD):
- Design a Phonebook Application
- I listed all the features/requirement that I could think of.
- We went ahead and discussed each of these features and how we can achieve that.
- Finally, he asked me to focus on just 3 features – listContacts(), searchContacts(), displayFavourite()
- I suggested InMemory-DB (SQLite) for listContacts(), Trie for searchContacts() and MaxHeap for displayFavourite(), and then explained him the approach using each of these data structures.
- After a lot of discussion, he was finally satisfied with my approach.
He gave me the last few minutes to ask some questions. After he answered, he hinted that I’ll be hearing from HR for further process.
Next day, I got a call from the recruiter that I’ve been selected and the HR contacted me the same day for the documents.