Backend Engineer | Zenskar
JP Morgan Chase | SDE 3 | YOE 3.4
Microsoft SDE - 2 | Interview Experience | Status Pending
eBay || SWE3 Interview Experience || Bangalore
Bloomberg | Interview Experience | Senior Software Engineer | NYC | Nov 2025
Microsoft L61 || Interview Experience || 11 July drive
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
getandputfunctions 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
lockandunlockfunctions 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)
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'.
Implement a multithreaded counter with get and put functions. The implementation should ensure thread safety and proper class structure for concurrent access.
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.
Implement lock(string s) and unlock(string s) functions. The rules are:
lock(s)returns 1 ifsis successfully locked. It returns 0 ifsor any of its prefixes are already locked.unlock(s)returns 1 ifswas successfully unlocked. It returns 0 ifswas not locked.
lock("abc")-> 1lock("def")-> 1lock("abz")-> 0 (because 'abc' is locked as a prefix)unlock("abc")-> 1lock("abz")-> 1 (now can be locked)
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.