Microsoft Interview Experience | 3+ Years Experience | System Design, OOD & DSA | Rejected
Sharing my Microsoft interview experience for a position requiring 3+ years of experience. The loop consisted of three interviews covering my background, system design, object-oriented design, and coding.
Round 1: HR + Hiring Manager + System Design
The interview started with approximately 40 minutes of discussion about my CV, previous projects, responsibilities, and technical experience.
We then moved into a 25-minute system design exercise. I began with a simple single-client design and expanded it by discussing load balancing, horizontal scaling, and sharding.
The feedback was that I had a solid theoretical understanding, but they wanted more practical system design depth for the target level.
Round 2: Object-Oriented Design
This interview had two main parts.
Part 1: Class design
I was asked to model an attack-path system. My design included:
Node: ID, name, and criticality.VirtualMachine: a node with an internet-connectivity property.Database: a node indicating whether it contains sensitive data.Edge: a connection between source and target nodes, with its own criticality.AttackPath: a collection of nodes and edges, plus severity.
The interviewer explained that there was no single correct solution and considered my design good.
Part 2: Path validation / construction
The follow-up involved implementing a function to validate or construct an attack path from the provided nodes and edges.
I explained my algorithm using an example and implemented part of the logic, but I did not finish the function within the available time.
LeetCode match: I haven’t identified an exact equivalent; this appeared to be a custom OOD exercise.
Round 3: Data Structures & Algorithms
This was a one-hour session with three coding problems.
1. Maximum consecutive ones with up to K flips
Given a binary array, find the maximum number of consecutive ones when at most K zeros can be flipped.
LeetCode match: 1004. Max Consecutive Ones III — Medium. This is an exact match.
My approach: Sliding window with two pointers, tracking the number of zeros in the window.
Complexity: O(n) time and O(1) extra space.
2. Minimum time to burn a binary tree
Given a target node, calculate the time needed for fire to spread to the entire tree through adjacent nodes.
LeetCode match: 2385. Amount of Time for Binary Tree to Be Infected — Medium. Same underlying problem, with infection instead of fire.
My approach: Find the target node, then run BFS using left, right, and parent pointers while tracking visited nodes. Each BFS layer represents one time unit.
In my interview, the node structure included parent pointers. In the LeetCode version, you need to build those relationships yourself.
Complexity: O(n) time and O(n) extra space.
I completed the solution, and the interviewer confirmed it was correct without requesting changes.
3. Message filtering within a K-second window
Given timestamps, messages, and a window K, return a boolean vector indicating whether each message should be accepted or suppressed.
Closest LeetCode match: 359. Logger Rate Limiter — Premium. The standard problem uses a fixed 10-second window; my interview version used K and returned a boolean vector.
My approach: Use a hash map to store the last accepted timestamp for each message.
A detail worth clarifying is whether suppressed messages should update the timestamp. My implementation updated it only when a message was accepted. Tracking whether a message appeared within the previous K seconds would require updating it on every occurrence.
Complexity: O(n) expected time and O(m) extra space, where m is the number of distinct messages.
I completed all three coding questions comfortably within the allotted time.
Outcome and Feedback
Result: Rejected.
The positive feedback highlighted strong theoretical knowledge, clear reasoning, and solid DSA skills.
The main concern was that my demonstrated practical experience—especially in system design for larger systems—was not deep enough for their expectations at the target level. They felt I had the foundation and potential but needed more real-world system design exposure.
My biggest takeaway is to prepare detailed examples of design decisions from past projects: the constraints, alternatives, trade-offs, production challenges, and lessons learned.
For anyone who has received similar feedback: how did you build practical system design depth and demonstrate it in later interviews?


