Adobe | MTS-2 (C++) | 3YOE | Interview Experience
Anonymous User
516

Adobe | MTS-2 (C++) | Interview Experience

I recently interviewed for an MTS-2 (C++) role at Adobe. The interview process consisted of 3 technical rounds, followed by the HR round.

Round 1: Core C++ & Multithreading

The round started with a brief introduction, after which the interviewer quickly moved into C++ and multithreading concepts.

Q1. Smart Pointers

  • What are smart pointers?
  • What are their different types?
  • What are their use cases?

Follow-up:

  • Can you demonstrate a memory leak while using smart pointers?
  • How would you identify and resolve it?

I was able to answer the main question but struggled with one of the follow-ups.

Q2. Const Member Function

The interviewer provided a const member function and asked how I would count the number of times the function is called, considering that the function cannot modify the object's state directly.

Q3. Multithreading

  • What is multithreading?
  • Explain the difference between concurrency and parallelism.

Q4. Thread-Safe Producer-Consumer Queue

Design a thread-safe producer-consumer queue.

Follow-up:
What happens if none of the producer threads have started, while all the consumer threads have already entered the waiting state?

This discussion focused on condition variables, synchronization, and handling waiting threads correctly.

Q5. Rule of Five

Explain the Rule of Five in C++ and when it is required.

Overall, I was able to answer the questions well except for one follow-up related to smart pointers.


Round 2: DSA & Problem Solving

This round focused primarily on data structures, algorithms, and implementation.

Q1. Sort an Array of 0s, 1s, and 2s

Solve the problem efficiently without using a general-purpose sorting algorithm.

Q2. Reverse a Stack

Reverse a stack recursively without using any external data structure.

Q3. Shortest Path in a Grid

Find the shortest path from a given source to a destination in a grid.

Q4. Implement shared_ptr

Implement a simplified version of shared_ptr, including reference counting and appropriate memory management.


Round 3: System Design / LLD

The third round focused heavily on LLD, concurrency, design patterns, and debugging.

Q1. Design a Thread-Safe Message Queue

Design and implement a thread-safe message queue.

Follow-up:
What happens when the destructor of the queue is called while multiple threads are blocked/waiting on the queue?

This required thinking about thread lifecycle, condition variables, shutdown handling, and avoiding deadlocks.

Q2. Design MS Word

Design a simplified version of Microsoft Word supporting:

  • Multiple font types
  • Font styles
  • Font sizes
  • Text formatting
  • Bold / Italic
  • Images
  • Undo / Redo functionality

The interviewer was particularly interested in how the design could be extended to support additional formatting/features while maintaining clean separation of responsibilities.

Q3. Debugging

The interviewer provided a couple of functions and asked me to identify the bugs.

One problem was related to a memory leak, while another involved a mutex/locking issue.


Overall Experience

The interview was heavily focused on Core C++, multithreading, memory management, DSA, LLD, and debugging.

The questions were practical and went beyond just theoretical knowledge, with several follow-ups testing how well I understood the underlying concepts.

Current Status: Don't know what happens after this

Topics I would recommend preparing

  • Smart pointers and circular references
  • shared_ptr / weak_ptr implementation
  • Rule of 5
  • const correctness
  • Virtual functions and destructors
  • Mutexes and condition variables
  • Producer-consumer problems
  • Thread lifecycle and graceful shutdown
  • Deadlocks and race conditions
  • Memory leaks and debugging
  • DSA fundamentals
  • LLD and SOLID principles
  • Undo/Redo design
  • Thread-safe data structures

#Adobe #MTS2 #C++ #MAANG

Comments (1)