Hi LC,
I recently gave interview for the Windows team in Microsoft. Sharing my interview experience with you guys.
R1: OA
Don't remember the exact question. One LC Med and one LC hard.
R2: DSA
I was asked this question:
https://www.baeldung.com/cs/node-rank-bst
Initially I discussed the approach using in-order traversal. The interviewer asked if it could be optimized further. He told me to add one more data member to TreeNode.
struct TreeNode{
int data;
int numberOfChildren; // this is what I suggested adding
TreeNode* left;
TreeNode* right;
}Wrote the code, explained the code to interviewers. Post that we wrapped up the round.
R3: LLD
Given existing document service, requirement was to add a comment service which reviewers could use to add comment to an existing document.
Initially discussion started with what functionalities comment service should have, HLD of the entire service, what APIs should be expose to end user and then little bit of LLD.
Post R2, no update from HR. After almost 20 days HR reached out to me asking my availability for R4. Irony is that same evening a different HR told me via mail I have been rejected.
R4: LLD
Implement a search service which allows users to search matching lines in a document.
For instance, document contains: Delhi is the capital of India and has good food.
If user searches: Delhi has good food, search result should display the line.
Initially discussion started with what APIs should we expose to end user. Then I explained my search approach and then some tradeoffs in my design.
Then interviewer added one follow-up:
After a search result is returned to user, user can delete some of the lines.
Discussed my approach and then we wrapped up.
R5: LLD
This an interesting round with multiple follow-ups:
Design a KV store, simple get,put,del operations.
Follow Up: Each key has an expiry time.
Follow Up: Need to take care of race condition and all during deletions when expiry time occurs. Told we can have separate cron job for this.
Follow Up: Now implement LRU-cache along with expiry time.
I was able to answer all the follow-ups and we closed the round by discussing on team's work and tech stack.
For this round interviewer told me I could use AI to write code but not logic.
R6: AA
This round was taken by a Group Engineering Manager. The round started with Intro and followed by some behavioural questions.
Then I was asked a LLD question:
Implement an N-stack using an array of fixed size.
I explained my approach and then interviewer finished the discussion by asking what kind of AI exp I have.
The whole interviewer process took 1.5 months and to be honest it was a bit frustrating.
Feel free to comment if you have any queries.
Thanks for Reading.