Microsoft L61 || Interview Experience || 11 July drive

microsoft logo
microsoft
Offer
August 26, 20250 reads

Summary

I successfully navigated multiple interview rounds for a Microsoft L61 position, which included Data Structures & Algorithms, System Design, and a Hiring Manager discussion, ultimately leading to an offer.

Full Experience

My interview journey for the Microsoft L61 position started with an Online Assessment, followed by several on-site rounds that took place after a three-week interval.

Round 1: Online Assessment

This round had two questions, which I recall being of medium-hard difficulty, and I had 90 minutes to solve them. Unfortunately, I don't remember the exact problems at this time.

Round 2: Data Structures & Algorithms

This was a focused DSA round.

  • Q1: Candy Crush Stack-based Question on Strings

    The problem involved processing a string like s = "abccbd", where I had to remove consecutive duplicate characters, with a maximum occurrence of two. For instance, in "abccbd", the two 'c's would be removed first, leaving "abbd", and then the two 'b's would be removed, resulting in "ad". I was asked to code the solution for this.

    The follow-up question explored how to handle multiple characters with similar removal rules, and they primarily wanted an approach and a dry run.

  • Q2: Multithreaded Counter

    I was tasked with implementing get and put functions within a proper class structure for a multithreaded counter. This involved ensuring thread safety.

Round 3: System Design

This round primarily focused on a traffic logging system, which was based on a project from my resume. It's crucial to be hands-on with all resume projects, as they often form the basis of design questions.

I discussed functional and non-functional requirements, presented high-level architecture diagrams, explained how unique log messages could be handled through Kafka (and why Kafka was suitable), addressed idempotency, and talked about database selection, specifically comparing time-series databases with other options.

Round 4: Data Structures & Algorithms

Another DSA round with a challenging problem.

  • Q: Prefix Lock/Unlock System

    I needed to implement lock and unlock functions for strings with a specific rule: a string or any of its prefixes cannot be locked if a prefix is already locked. Once unlocked, it can be locked again.

    For example:

    • lock("abc") returns 1 (locked)
    • lock("def") returns 1 (locked)
    • lock("abz") returns 0 (because "abc" is a locked prefix)
    • unlock("abc") returns 1 (unlocked)
    • lock("abz") now returns 1 (can be locked)

    The follow-up was to make this system multithreaded.

Round 5: Hiring Manager Round

This round lasted about 30 minutes. I was asked several behavioral questions, discussed my previous projects in detail, and had a conceptual discussion on system design topics like horizontal versus vertical scaling.

After a three-week wait, I received the offer and was selected!

Interview Questions (5)

Q1
Candy Crush String Removal
Data Structures & AlgorithmsMedium

Given a string s, implement a function to remove consecutive duplicate characters. A character can occur a maximum of twice. For example, if s = "abccbd", first all 'c's will be popped up continuously, leaving 'abbd'. Then, the 'bb' will be popped up, leaving 'ad'.

Q2
Multithreaded Counter
Data Structures & AlgorithmsMedium

Implement a multithreaded counter with get and put functions. The implementation should ensure thread safety and proper class structure for concurrent access.

Q3
Traffic Logging System Design
System DesignHard

Design a traffic logging system. This involved discussing functional and non-functional requirements, high-level architecture diagrams, strategies for handling unique log messages (e.g., using Kafka), addressing idempotency, and making appropriate database selections (e.g., time-series vs. other database types). The discussion was based on a project I had listed on my resume.

Q4
Prefix Lock/Unlock System
Data Structures & AlgorithmsHard

Implement lock(string s) and unlock(string s) functions. The rules are:

  • lock(s) returns 1 if s is successfully locked. It returns 0 if s or any of its prefixes are already locked.
  • unlock(s) returns 1 if s was successfully unlocked. It returns 0 if s was not locked.
Example:
  • lock("abc") -> 1
  • lock("def") -> 1
  • lock("abz") -> 0 (because 'abc' is locked as a prefix)
  • unlock("abc") -> 1
  • lock("abz") -> 1 (now can be locked)
The problem also included a follow-up to make the solution multithreaded.

Q5
Behavioral and System Design Concepts Discussion
Behavioral

The Hiring Manager round involved various behavioral questions, in-depth discussions about previous projects mentioned on my resume, and conceptual questions on system design, such as comparing Horizontal vs. Vertical scaling.

Preparation Tips

I focused my preparation on Data Structures & Algorithms, paying particular attention to stack-based problems, multithreading and concurrency concepts (like mutexes, shared mutexes, and condition variables), and Trie data structures for efficient prefix operations. For System Design, I reviewed core architectural patterns, practiced designing systems from scratch, and made sure I could articulate functional and non-functional requirements, justify technology choices like Kafka, and discuss database selection strategies, including time-series databases.

Discussion (0)

Share your thoughts and ask questions

Join the Discussion

Sign in with Google to share your thoughts and ask questions

No comments yet

Be the first to share your thoughts and start the discussion!