Adobe MTS 2 (C++) Interview
Summary
I recently interviewed for the MTS 2 role at Adobe, going through six challenging rounds including technical discussions on DSA, system design, and C++ concepts, culminating in behavioral rounds with the hiring manager and director, eventually receiving an offer.
Full Experience
I recently had my interview experience for the Adobe MTS 2 role, which spanned a total of six rounds and took two months to complete.
ROUND 1: Technical Interview
This round involved a medium-level question primarily focused on the Disjoint Set Union (DSU) data structure, followed by several follow-up questions to delve deeper into my understanding.
ROUND 2: Technical Interview - Toughest Round
This was by far the toughest round for me. It covered a wide array of in-depth topics:
- Extensive questions on Multithreading.
- Detailed discussion on B+ trees.
- Problems related to Bipartite graphs.
- Questions on Virtual Destructors in C++: what they are, why they're needed, and how they function.
- The infamous Diamond Problem in C++.
There was a significant number of questions from these topics, pushing my knowledge boundaries.
ROUND 3: Technical Interview
This round also had a strong focus on C++ concepts. Key areas included:
- Numerous C++ questions.
- A problem based on the Two-Pointer technique.
- Questions regarding Connected Components in graphs.
- One Low-Level Design (LLD) question: designing a garbage collector in C++.
ROUND 4: Technical Interview
Similar to previous rounds, this one also heavily featured C++ questions. A lot of focus was placed on Smart Pointers. Additionally, I faced one question that required a Backtracking approach.
ROUND 5: Hiring Manager Round
Having successfully navigated four technical rounds, this round was purely behavioral. The Hiring Manager posed many tricky questions, which I tried to answer as diplomatically as possible. I must admit, I fumbled quite a bit due to panic, but I tried my best to maintain composure.
ROUND 6: Director Round
In stark contrast to the previous rounds, especially Round 2, this was the easiest. I had a very pleasant and insightful discussion with the Director, who seemed like a genuinely nice person – a rare trait to find at such a senior position. After this discussion, I felt quite confident about receiving an offer.
True to my feeling, after two days, the HR informed me that I had successfully cleared all rounds! I was absolutely thrilled to receive the offer.
Interview Questions (12)
A medium-level question related to the Disjoint Set Union (DSU) data structure.
Questions on advanced multithreading concepts, synchronization primitives, and their practical applications.
Questions related to the structure, operations (insertion, deletion, search), and use cases of B+ trees, particularly in database indexing.
A problem related to bipartite graphs, potentially involving properties, detection, or algorithms applicable to them.
Explanation of what a virtual destructor is, why it is necessary in polymorphic hierarchies to prevent resource leaks, and how it functions internally.
Discussion and resolution of the diamond problem in C++ multiple inheritance, including virtual inheritance.
A problem involving finding connected components in a graph or similar data structure, potentially using algorithms like DFS or BFS.
An Low-Level Design (LLD) question focused on designing and outlining the implementation of a garbage collector in C++.
In-depth questions on smart pointers (e.g., std::unique_ptr, std::shared_ptr, std::weak_ptr), their uses, benefits, ownership semantics, and potential pitfalls.
A problem requiring a backtracking algorithm for its solution, typically involving exploring all possible paths to find a solution or all solutions.
Various behavioral questions, likely focused on past experiences, conflict resolution, teamwork, handling failure, and problem-solving approaches under pressure.
A discussion-based round with the director, likely covering broader career goals, leadership qualities, company culture fit, and high-level technical insights.