Interview Experience - 109 - Adobe | MTS-2 | L2
Summary
📌 Job Role: Software Development Engineer
🔢 Number of Rounds: 4
📜 Offer Status: Offer
📍 Location: Noida
👤 Candidate Name: Not disclosing due to signed NDA
Interview Process
The interview process at Adobe for the Member of Technical Staff (MTS-2) role in Noida comprised a total of four rounds—three technical interviews followed by a director round.
Each of the technical rounds was about 60 minutes long, primarily focusing on data structures, algorithms, and core programming concepts, mainly in C/C++. These rounds tested both problem-solving ability and understanding of object-oriented design.
The final round with the Director was also around an hour long. It centered around behavioral questions along with a high-level design discussion, which tested the candidate's ability to think through real-world system challenges.
Preparation Guide
Focused on brushing up C/C++ fundamentals, especially OOP concepts like virtual functions, design patterns like Singleton, and basics of multithreading.
Practiced algorithmic problem solving via LeetCode, especially on patterns like binary search, sliding window, and hashing.
Prepared for system design at a conceptual level, specifically around real-world problem modeling.
Reviewed common puzzles and logical problems, as they tend to show up unexpectedly.
Interview Rounds
Round 1: Technical Round 1
Duration: 60 minutes
Difficulty Level: Medium
Experience
The round started with two algorithmic problems:
Find the number of occurrences of a number in a sorted array.
This was an application of binary search to find the first and last occurrences, followed by computing the difference.Word Break Problem: Given a string and a dictionary, determine if the string can be split such that each part exists in the dictionary.
I implemented a DP-based solution for this.
After these problems, there were a few questions based on C++ and OOP concepts. These included:
Use of the virtual keyword and how polymorphism works at runtime.
How a Singleton class is implemented and possible issues in a multithreaded context.
Basic discussion on multithreading, especially around race conditions and locks.
Key Learnings
Revise key binary search applications.
Be thorough with standard DP patterns like word break, subsets, and knapsack.
Brush up on C++ OOP principles, especially implementation nuances.
Round 2: Technical Round 2
Duration: 60 minutes
Difficulty Level: Medium
Experience
This round had a slightly more design-oriented flavor. Problems asked:
Design a BST Iterator class with
next()
andhasNext()
methods.
I implemented the iterator using an explicit stack to perform an inorder traversal lazily.Sort a k-sorted array: Given an array where each element is at most
k
positions from its sorted position, sort it efficiently.
Solved using a min-heap approach which givesO(n log k)
complexity.
We concluded with a brief discussion on:
OOP principles, class hierarchies, and object slicing in C++.
Some corner cases around inheritance and constructors.
Key Learnings
Practice implementing iterators and custom data structures.
Understand how heaps can be used in near-sorted or streaming data.
Be prepared for follow-up questions once you submit a working solution.
Round 3: Technical Round 3
Duration: 60 minutes
Difficulty Level: Hard
Experience
This round was the most intellectually challenging, mixing DSA, design, and puzzles.
Find the unique number in an array where every other number appears twice.
Solved using the XOR trick.Efficient word storage and lookup in a huge file.
Discussed using a Trie data structure for storage, and how to handle disk I/O and caching.Simulate a music player that plays songs randomly without repeating until all songs are played.
I suggested an approach similar to the Fisher-Yates shuffle, maintaining an index to track played songs.Puzzle: There are 1000 wine bottles, one of which is poisoned. Find the minimum number of rats needed to determine the poisoned one in 24 hours.
Applied the binary encoding method, where each rat represents a bit.
Key Learnings
Be prepared for open-ended discussions that combine problem solving with real-world constraints.
Practice a few logical puzzles; they help in evaluating your reasoning skills under pressure.
Review concepts of system design, especially for storage and real-time applications.
Round 4: Director Round
Duration: 60 minutes
Difficulty Level: Medium
Experience
The final round was with a Director and was more about understanding fitment and vision, rather than hardcore coding.
Started with some behavioral questions — how I’ve handled team conflicts, ownership of tasks, and growth mindset.
Then moved to a high-level design problem:
Design an “Offensive Content Filter” that flags hateful or inappropriate content across text, images, and videos.I proposed a multi-layered architecture:
For text: NLP models with toxicity classifiers.
For images/videos: Integration with third-party models or in-house CV pipelines.
Scalable architecture using microservices and message queues for asynchronous processing.
Discussion followed around scalability, latency, and false positives.
Key Learnings
Be ready with real-world design ideas even if you don’t code them out.
Focus on how systems scale, and what trade-offs you make at each layer.
Be honest and structured while answering behavioral questions.
Final Thoughts
The Adobe interview process was well-structured and balanced across coding, design, and behavioral evaluation.
A few key takeaways:
Strong C++ fundamentals and DSA skills are essential.
The interviewers appreciate a structured approach to problem solving.
System design questions can appear even at L2 levels—be ready with foundational knowledge.
Prepare for a mix of standard problems, real-world design tasks, and unexpected puzzles.
Good luck to all aspirants preparing for Adobe or similar product-based companies!