RejectedSDE2 at Microsoft
- Difficulty
- Process took
- 2-3 Weeks
- Rounds
- 3
- Format
- Remote
- Applied via
- Referral
How it went
- Even if you prepare well, sometimes interviews go sideways, maybe the scenarios aren’t fully clarified, or maybe you interpret a requirement differently, try more hard.
What they would tell you
- Even if you prepare well, sometimes interviews go sideways, maybe the scenarios aren’t fully clarified, or maybe you interpret a requirement differently, try more hard.
How to prepare
- Don’t just focus on the usual data structure and algorithm questions, be ready to discuss different versions of problems, ways to make your solution better, and how you’d handle extra rules or limitations.
Their background
My Background Current Company: Service-based Experience : 4.5 year
Round by round
- 1
Data Structures & Algorithms60 min
The first round was a technical session DSA, conducted virtually and rated between medium and hard in terms of difficulty. The questions were: The first asked me to find the shortest path between two nodes in either a graph or a tree, so I made sure to explain my approach thoroughly, covering edge cases and discussing the efficiency of using BFS, DFS, or even Dijkstra’s algorithm. The second was the classic celebrity problem, where you have to quickly pinpoint the ‘celebrity’ in a group, using logical deduction and smart array manipulation. Overall, the questions were fair, but there was a clear expectation for optimized code and the ability to clearly explain my thought process.
- 2
Technical Round 160 min
In the second round, the focus was on Low-Level Design, and I was asked to design a Logger System. The main requirements were that it should handle different types of messages INFO, DEBUG, WARNING, and ERROR and provide users with control over which types of messages get displayed. Another key aspect was allowing the output to be easily switched between the console and a log file. I tackled the problem by suggesting a modular and extensible class design. I used interfaces for the logger components, enums to represent the various message types, and implemented the strategy pattern to handle dynamic switching between different output destinations. We also talked about the necessity for real-time toggling of verbosity levels and how to support runtime swapping of log appenders, similar to what you'd encounter in a robust, production-ready application. The discussion went deep into making the system configurable, ensuring thread safety, and keeping the design open for future enhancements, such as the addition of new log types. Overall, the round emphasized not just building a logger that works, but one that could evolve and scale with growing requirements and more complex use cases.
- 3
Low-Level Design60 min
In the third round, the difficulty level ramped up as I was tasked with designing and implementing a circular buffer, giving users the flexibility to define the buffer’s size. The buffer had to support both write operations like entering "HE" and then "LLO" to produce "HELLO" and read operations, where, for example, reading "HE" would return just the first two characters.
The real complexity emerged when handling edge cases, particularly around buffer overflows. If a write operation would exceed the available space and risk overwriting unread data, my solution was to block the write to preserve data integrity. However, the interviewer emphasized a nuance I hadn’t fully considered: writes should be atomic.
What came up
A candidate-reported account, lightly edited. Interview processes change by team and date.