adobe logo

Adobe Interviews

14 experiences85 reads80 questions50% success rate
Adobe | CS1 | Reject
adobe logo
Adobe
software engineer cs14 yearsRejected
November 17, 20252 reads

Summary

I recently interviewed at Adobe for a CS1 role, an experience that unfortunately concluded with a rejection. The interview process was comprehensive, spanning multiple technical rounds focused on data structures, algorithms, system design, and core Java concepts.

Full Experience

I recently had an interview experience with Adobe for a CS1 role. I have 4 years of experience and was interviewing for their ALM Org. The process involved three distinct rounds, each testing different facets of my technical and behavioral skills.

Round 1 (Technical)

This round focused on data structures and algorithms. I was presented with a problem related to identifying active users within a sliding time window from a continuous stream of application logs. I had to implement a function that would report the number of unique users active in the last 5 minutes based on their event timestamps.

Round 2 (Technical)

The second technical round was quite diverse. It started with a LeetCode problem: 'Most Stones Removed with Same Row or Column'. Following that, we delved into core Java concepts. Questions included handling concurrency when multiple threads modify the same data structure (like List, Array, or Map), and the differences between shallow and deep copies of objects, requiring examples. The discussion then shifted to SQL and database architecture. I was asked about ways to establish connections to an SQL server, how to identify and improve slow-running SQL queries, and details about JDBC, including writing code for its usage. We also discussed SQL database consistency, master-slave architecture, and data isolation.

Round 3 (System Design & Behavioral)

The final round was a mix of system design and behavioral questions. I was asked to describe my most complex project, draw its High-Level Design (HLD), and answer follow-up questions. They probed into situations where I might have had a design conflict with a senior SDE and how I resolved it. We also discussed my approach to designing solutions. Finally, the behavioral part covered standard questions like 'Why Adobe?' and 'Why are you looking for a change?'. A significant portion of this round was dedicated to designing the detailed schema for a 'BookMyShow' type application, including navigating the entire flow of finding a movie ticket and outlining the necessary table schemas step-by-step.

Interview Questions (10)

Q1
Active Users in a Sliding Time Window
Data Structures & AlgorithmsMedium

You are building an analytics component that processes a continuous stream of application logs in real time. Each log record represents a user activity event within the system.

Input:
You receive a stream of log entries, each represented as a tuple: (timestamp, userId, eventType)

where:
timestamp — an integer representing the event time in seconds (increasing over time).
userId — a string or integer identifying the user who performed the event.
eventType — a string describing the type of event (e.g., 'login', 'view', 'click', etc.).

Task:
Implement a function that processes this event stream and, at any given point in time, reports the number of unique users active in the last 5 minutes.
A user is considered active if they have generated at least one event within the past 5 minutes relative to the current event’s timestamp.

Q2
Most Stones Removed with Same Row or Column
Data Structures & AlgorithmsMedium

The problem asks to remove the maximum number of stones such that no two remaining stones share the same row or column. This is a common problem from LeetCode.

Q3
Concurrency Issues with Shared Data Structures
Other

Discussion on handling multiple threads attempting to modify the same data structure (list/array/map) concurrently in Java, and strategies to address potential concurrency issues.

Q4
Shallow vs. Deep Copy in Java
Other

Explain the concepts of shallow and deep copy of objects in Java, providing illustrative examples for each.

Q5
SQL & Database Architecture Concepts
System Design

This section covered various aspects of SQL and database architecture, including:

  • Ways of establishing a connection to an SQL server.
  • Methods to identify and improve slow-running SQL queries.
  • Details about JDBC, including writing code examples.
  • Discussion on SQL database consistency.
  • Master-slave architecture and consistency models.
  • Concepts of data isolation.

Q6
Most Complex Project & High-Level Design
System Design

Describe your most complex project, including drawing its High-Level Design (HLD) and answering subsequent questions about the design.

Q7
Resolving Design Conflicts with Senior Engineers
Behavioral

Describe a situation where you had a conflict in design with a senior software development engineer and how you handled it.

Q8
Approach to System Design
System Design

Discuss the key considerations and principles you apply when designing a technical approach or solution.

Q9
Motivation for Joining Adobe and Career Change
Behavioral

Explain your motivations for wanting to join Adobe and the reasons behind seeking a career change.

Q10
System Design: BookMyShow
System Design

Detailed schema design for a 'BookMyShow' type application, covering the entire flow of finding and booking a movie ticket, along with the step-by-step table schemas required at each stage.

Adobe MTS 2 (C++) Interview
adobe logo
Adobe
MTS 2Offer
November 15, 20257 reads

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)

Q1
Disjoint Set Union Problem
Data Structures & AlgorithmsMedium

A medium-level question related to the Disjoint Set Union (DSU) data structure.

Q2
In-depth Multithreading Concepts
Other

Questions on advanced multithreading concepts, synchronization primitives, and their practical applications.

Q3
B+ Tree Concepts
Data Structures & Algorithms

Questions related to the structure, operations (insertion, deletion, search), and use cases of B+ trees, particularly in database indexing.

Q4
Bipartite Graph Problem
Data Structures & Algorithms

A problem related to bipartite graphs, potentially involving properties, detection, or algorithms applicable to them.

Q5
Virtual Destructors in C++
Other

Explanation of what a virtual destructor is, why it is necessary in polymorphic hierarchies to prevent resource leaks, and how it functions internally.

Q6
Diamond Problem in C++
Other

Discussion and resolution of the diamond problem in C++ multiple inheritance, including virtual inheritance.

Q7
Connected Components Problem
Data Structures & Algorithms

A problem involving finding connected components in a graph or similar data structure, potentially using algorithms like DFS or BFS.

Q8
Design a Garbage Collector in C++ (LLD)
System Design

An Low-Level Design (LLD) question focused on designing and outlining the implementation of a garbage collector in C++.

Q9
Smart Pointers in C++
Other

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.

Q10
Backtracking Problem
Data Structures & Algorithms

A problem requiring a backtracking algorithm for its solution, typically involving exploring all possible paths to find a solution or all solutions.

Q11
Behavioral Interview Questions
Behavioral

Various behavioral questions, likely focused on past experiences, conflict resolution, teamwork, handling failure, and problem-solving approaches under pressure.

Q12
Director Round Discussion
Behavioral

A discussion-based round with the director, likely covering broader career goals, leadership qualities, company culture fit, and high-level technical insights.

Adobe Interview Experience (MTS-2)
adobe logo
Adobe
MTS-2Rejected
November 15, 202515 reads

Summary

I interviewed for an MTS-2 role at Adobe after receiving a referral. The process included rounds on DSA, LLD, and system design, where I encountered various algorithmic and design challenges, but ultimately received a rejection.

Full Experience

Round 1: Data Structures & Algorithms

I was presented with two questions. The first problem asked me to minimize the sum of array elements after performing a division operation K times. I solved this LeetCode easy question using a PriorityQueue, achieving a time complexity of O(N log N) and space complexity of O(N).

The second question was a slight variation of the classic Knapsack Problem, which I approached with a 2D DP solution and some optimizations, resulting in O(N) time and O(1) space complexity.

Round 2: Low-Level Design (LLD)

In this round, I was asked to design a configuration management service, detailing the class designs, attributes, methods, and appropriate design patterns.

Round 3: Low-Level Design (LLD)

This round also focused on LLD and included two questions. The first was to design an auto-complete search system that predicts Top K elements based on search frequency. I tackled this problem using a Trie data structure with some variations, identifying it as a LeetCode hard question. The second question involved designing the Java implementations for Linux commands like mkdir, ls, and delete for files and directories. I used a Tree Data Structure for this, but unfortunately, I could only complete one function within the given time.

Despite my efforts, the final verdict was a rejection.

Interview Questions (4)

Q1
Minimize Array Sum After K Division Operations
Data Structures & AlgorithmsEasy

Given an array of integers, you can perform the following sequence of operations K times: 1. Fetch an element from the array. 2. Divide it by 2 (ceil division). 3. Put the element back into the array. The goal is to minimize the sum of all elements finally in the array after K operations.

Q2
Design Configuration Management Service
System Design

Design a configuration management service. I needed to share the class designs, attributes, methods, and design patterns.

Q3
Design Auto-Complete Search System with Top K Predictions
System DesignHard

Design an auto-complete search system with Top K elements as predictions. The Top-K should be based on the frequency of search.

Q4
Design Linux File System Commands in Java
System Design

Design the Java implementations for Linux commands related to file and directory creation, navigation, and deletion (e.g., mkdir, ls, delete).

Adobe MLE-II Interview Experience (Selected)
adobe logo
Adobe
MLEnull3 yearsOffer
October 12, 202516 reads

Summary

Secured a Machine Learning Engineer (MLE) role at Adobe after a multi-round interview process. The interview included a mix of technical design, coding, system design, and behavioral rounds.

Full Experience

As a Data Scientist/MLE with 3+ years of experience and a B.Tech from IIT (non-circuital branch), I went through a structured interview process at Adobe. The first round was an end-to-end design question focusing on image + text (document-type) data, requiring a complete pipeline to predict aspect ratio from the given data/document. The second round included a Python coding question followed by a deep dive into LLMs, transformers, and attention mechanisms. The third round was a managerial discussion on projects, teamwork, and behavioral questions. The fourth round involved a system design question to create a color suggestion system, along with team and work-related discussions. I was offered the position and will share compensation details in another post soon.

Interview Questions (2)

Q1
Image + Text Document Aspect Ratio Prediction Pipeline
Data Structures & Algorithmsnull

Propose a complete pipeline to predict aspect ratio from image + text (document-type) data.

Q2
Color Suggestion System Design
System Designnull

Design a color suggestion system.

Adobe - Spectrum Team - Senior Android Design Engineer
adobe logo
Adobe
Senior Android Design EngineerNo Offer
October 2, 202514 reads

Summary

I interviewed for a Senior Android Design Engineer position on the Spectrum Design Team at Adobe and was unfortunately ghosted after the third round.

Full Experience

My interview process for a Senior Android Design Engineer role on the Spectrum Design Team at Adobe consisted of three rounds.

Round 1: Hiring Manager Round
This round was with a very friendly Hiring Manager. We discussed my previous experiences, with a particular focus on Jetpack Compose and my experience with Design Systems. The manager was especially interested in the interoperability between View systems and Compose.

Round 2: Android Coding
In this coding round, the interviewer asked me to implement a Compose function. The question revolved around drawing objects on the screen and ensuring they were retained correctly during orientation changes. Key concepts discussed included remember, rememberSaveable, and Custom Saver.

Round 3: Android Coding
For this coding round, I was allowed to use Android Studio with auto-complete, which was helpful. The core problem was about retrieving data from a given endpoint and then efficiently populating that data into a list view.

Throughout the coding rounds, the focus was heavily on Android Jetpack Compose View concepts such as Stable and Immutable states, as well as performance considerations for views, including efficient data handling, pagination, and lazy loading. There were no DSA (Data Structures & Algorithms) rounds.

Interview Questions (2)

Q1
Jetpack Compose: Retain UI State During Orientation Change
Other

Implement a Jetpack Compose function that draws objects on the screen. The key challenge is to ensure that these drawn objects and their state are correctly retained and restored when the device undergoes an orientation change. Concepts like remember, rememberSaveable, and Custom Saver are highly relevant.

Q2
Retrieve and Display Data from API in List
Other

Develop an Android application feature that retrieves data from a given API endpoint. Once the data is successfully fetched, it should be efficiently populated and displayed within a list view (e.g., using a RecyclerView or LazyColumn in Compose).

Adobe | MTS2 C++ | Ghosting
adobe logo
Adobe
MTS2 C++1 yearsNo Offer
September 3, 202514 reads

Summary

I interviewed with Adobe for an MTS2 C++ role on August 26th, and despite the interview going well, I haven't received any further updates regarding my application.

Full Experience

I had my first interview round for an MTS2 C++ position at Adobe on August 26th. The interview felt positive, and I believe I performed well during the session. However, since then, there has been no communication or notification from their side regarding the outcome or next steps.

Interview Questions (2)

Q1
K Closest Points to Origin
Data Structures & Algorithms

I was asked to solve the problem of finding the K closest points to the origin (0,0) in a given set of points.

Q2
C++ Concepts: Smart Pointers & Memory Management
Other

I was questioned extensively on C++ concepts including Smart Pointers, specifically Unique Pointers and Shared Pointers. The discussion also covered general Memory Management, Structures, Classes, Constructors, and Destructors.

[Declined] - Adobe interview experience
adobe logo
Adobe
mts 2Withdrew
July 24, 20250 reads

Summary

I interviewed at Adobe for an MTS 2 role, which involved three comprehensive rounds covering DSA, system design, and behavioral aspects. I ultimately received an offer for a Release Engineer position but decided to decline it due to receiving a better offer elsewhere and the role not aligning with my career goals.

Full Experience

I applied for several roles at Adobe, primarily MTS 2, and received a callback from a recruiter after about a month. The interview process at Adobe is structured with sequential rounds.

Round 1: DSA, System Design, OOPs, DBMS

My first round focused on Data Structures & Algorithms, System Design, Object-Oriented Programming (OOPs), and Database Management Systems (DBMS). I was asked a LeetCode medium-hard question:

  • Find Median from Data Stream: I clearly built the solution using two priority queues and explained my approach, writing pseudo code.

Then, the interviewer delved into various system design questions covering scaling, performance, concurrency, load balancers, CAP theorem, and DBMS concepts like locking, SQL vs NoSQL, normalization, OS-level locks, and atomicity. I also had to implement an LRU cache, again providing pseudo code. This round lasted approximately 70 minutes.

I received an email for Round 2 the same day.

Round 2: DSA, CI/CD, AWS, Kubernetes, Docker, Kafka

The second interviewer was very approachable. They posed a medium DSA question that was quite lengthy to read but essentially involved backtracking with proper constraint handling. I had to write the full code and test it with sample cases. My second question was LeetCode 825 (Friends Of Appropriate Ages), which I solved and demonstrated with provided inputs. Following this, we discussed my experiences with Jenkins, CI/CD pipelines, build processes, production tools, AWS, Kubernetes, Docker, scaling, and Kafka.

Two days later, I received an email for Round 3. By this point, I had already secured a better offer, so I approached this round very calmly, mostly out of curiosity.

Round 3: Hiring Manager (HM) - Projects, Behavioral, Release Engineering

This was a hiring manager round where I was thoroughly grilled on my projects and past experiences. The questions covered ownership, challenges encountered, end-to-end project involvement, leadership skills, innovation, voluntary acts, and debugging skills.

The HM then informed me that the role was primarily for a Release Engineer with a strong focus on Jenkins, which significantly diminished my interest in joining Adobe. Despite this, I maintained a facade of interest, and they proceeded with Jenkins-specific questions.

  • Job Scheduling (Two Schedulers): Given an array of job times, I was asked to determine the minimum time to complete all jobs using two schedulers, where each scheduler can perform one task at a time. I solved it and explained my approach.
  • Job Scheduling with Dependencies: The next question involved tackling job scheduling when jobs have dependencies. I discussed using topological sort and how the presence of a loop would make the problem unsolvable, outlining my strategy to handle this.

The interviewer seemed pleased with my responses.

After another two days, I received an email stating I had cleared all rounds, with only a director round remaining (described as similar to a standard HM round). However, I ultimately declined the offer as I decided not to proceed further.

Overall, my experience was positive. The HR team was very accommodating and adjusted interview times promptly upon my request. Interviewers were friendly and provided ample time for me to think through and articulate my approaches.

Interview Questions (5)

Q1
Find Median from Data Stream
Data Structures & AlgorithmsHard

Given a stream of integers, design a data structure that supports adding new integers and finding the median of all elements so far.

Q2
LRU Cache
Data Structures & AlgorithmsMedium

Implement the LRU Cache data structure. Design a data structure that follows the constraints of a Least Recently Used (LRU) cache. Implement the LRUCache class: LRUCache(int capacity) initializes the LRU cache with positive size capacity. int get(int key) Return the value of the key if the key exists, otherwise return -1. void put(int key, int value) Update the value of the key if the key exists. Otherwise, add the key-value pair to the cache. If the number of keys exceeds the capacity from this operation, evict the least recently used key.

Q3
Friends Of Appropriate Ages
Data Structures & AlgorithmsMedium

There are n persons on a social media website, and they are numbered from 0 to n - 1. You are given an integer array ages where ages[i] is the age of the i^th person. A person x will not send a friend request to a person y (and vice versa) if any of the following conditions are true: age[y] <= 0.5 * age[x] + 7 OR age[y] > age[x] OR age[y] > 100 AND age[x] < 100. Otherwise, x will send a friend request to y. Note that if x sends a request to y, y will not necessarily send a request to x. Also, a person cannot send a friend request to themself. Return the total number of friend requests sent.

Q4
Minimum Time to Complete All Jobs with Two Schedulers
Data Structures & AlgorithmsMedium

Given an array of integers representing the time required to complete each job. You have two schedulers, and each scheduler can perform one task at a time. Determine the minimum time in which all jobs can be completed.

Q5
Job Scheduling with Dependencies
Data Structures & AlgorithmsMedium

How would you schedule jobs if they have dependencies on each other? Consider how to handle the existence of a loop in dependencies.

Adobe | MTS 2 | JAVA | Noida | November 2024 | Interview Experience | Rejected
adobe logo
Adobe
MTS 2, JavaNoida2 yearsRejected
December 24, 20245 reads

Summary

I recently had my first interview experience with Adobe for an MTS 2 JAVA role in Noida, which unfortunately resulted in a rejection. The process involved two problem-solving rounds focusing on data structures, algorithms, and Java concurrency concepts.

Full Experience

I interviewed with Adobe for an MTS 2 JAVA role, coming from a Tier 3 college with 2+ years of experience. This was my first time interviewing with the company.

Round 1 (Problem Solving)

This round started with my introduction, followed by questions about my projects at my current company. After that, I was given two coding problems:
  1. Tell whether at least two non-overlapping increasing subarrays of length k exist in an array.
  2. Find the maximum length of a subarray such that it contains at least two non-overlapping increasing subarrays.

Round 2 (Problem Solving - Java Focus)

This round delved into more specific Java concepts, particularly around concurrency. The interviewer asked several questions about concurrency, multithreading, race conditions, and the reader-writer problem. Following the conceptual questions, I was asked to implement two problems:
  1. Implement a concurrent HashMap with get, put, and delete operations.
  2. Given a tree where each node has left, right and parent pointers, implement lock() and unlock() methods for a node. The condition for locking a node was that all its ancestor nodes and all its descendant nodes must be unlocked.

Despite my efforts, I was not selected for the role.

Interview Questions (4)

Q1
Check for Two Non-overlapping Increasing Subarrays
Data Structures & Algorithms

Given an array, determine if there exist at least two non-overlapping increasing subarrays of a given length k.

Q2
Max Length Subarray with Two Non-overlapping Increasing Subarrays
Data Structures & Algorithms

Given an array, find the maximum possible length of a subarray that contains at least two non-overlapping increasing subarrays.

Q3
Implement Concurrent HashMap
Data Structures & Algorithms

Implement get, put, and delete operations for a concurrent HashMap.

Q4
Implement Lock/Unlock for Tree Node
Data Structures & Algorithms

Given a tree where each node has left, right, and parent pointers, implement lock() and unlock() methods for a node. A node can only be locked if all its ancestor nodes and all its descendant nodes are currently unlocked.

Adobe || MTS-2 || Noida || Selected
adobe logo
Adobe
MTS-2NoidaOffer
March 30, 20242 reads

Summary

I successfully navigated the Adobe MTS-2 interview process in Noida, which covered data structures, algorithms, system design, and behavioral aspects, culminating in a job offer for the MTS-2 role.

Full Experience

Adobe MTS 2 Interview Journey

I recently had the opportunity to interview for the MTS-2 role at Adobe in Noida. The process began after HR contacted me via Instahyre regarding an SDE position. Following an initial call, my first technical round was scheduled.

Technical Round 1

This round primarily focused on algorithmic problem-solving and included two challenging questions. The difficulty ranged from medium to hard on LeetCode. First, I was asked to find the longest continuous sequence in an array, a classic problem requiring a strong understanding of array manipulation and dynamic programming. Fortunately, I had encountered and solved this problem previously, which helped me complete it efficiently.

The second question was directly from LeetCode: "Apply Operations to Make Two Strings Equal." This problem tested my string manipulation skills and required an analytical approach to find an optimal solution. We spent about 10 minutes discussing various approaches before I wrote the code, which successfully passed the test cases presented by the interviewer.

Technical Round 2

The second technical round was again centered on Data Structures and Algorithms, with a particular emphasis on modified binary search. The interviewer presented an interesting twist: the mid-point in the binary search was generated by a random function. My task was to write code for numbers that would be searched appropriately with this modified binary search approach. The discussion also included follow-up questions aimed at identifying elements in an array that would be correctly found using this particular binary search method.

EM Round

The third technical round, led by an Engineering Manager, delved into system design and practical scenarios related to my prior job experience. The interviewer asked questions on operating systems to assess my understanding of core concepts and their real-world applications. We also discussed my current job responsibilities and past projects, which provided insight into my professional background. I was asked to elaborate on the system design of WhatsApp, which naturally led to discussions about message queues and scalability challenges. Furthermore, I shared my long-term career goals and explained why Adobe was an ideal fit for my aspirations.

Director Round

The final round was with a Director, starting with general discussions about job-related queries before moving into technical discussions on data structures and system architecture. The conversation began with designing an airline system, focusing on graph theory and complexity analysis. Additionally, we talked about caching mechanisms and on-call support, addressing practical challenges encountered in software development and maintenance. I also shared my perspectives on monitoring tools and request authentication mechanisms, demonstrating my understanding of industry best practices and emerging trends.

Verdict

I later received a call from HR confirming my selection for the MTS-2 role, which was a very satisfying outcome.

Interview Questions (5)

Q1
Longest Continuous Sequence in an Array
Data Structures & AlgorithmsMedium

I was asked to find the longest continuous sequence in an array. This is a classic problem requiring a keen understanding of array manipulation and dynamic programming techniques.

Q2
Apply Operations to Make Two Strings Equal
Data Structures & AlgorithmsMedium

I was given the LeetCode problem "Apply Operations to Make Two Strings Equal," which focused on string manipulation and required an analytical approach to devise an optimal solution.

Q3
Modified Binary Search with Random Midpoint
Data Structures & Algorithms

The interviewer introduced a novel twist wherein the mid-point in the binary search was generated by a random function. I was asked to write code for numbers that would be searched appropriately with this modified binary search approach. We also discussed follow-up questions aimed at identifying the elements in an array that would be correctly searched using this modified binary search.

Q4
System Design: WhatsApp
System DesignHard

I was asked to elaborate on the system design of WhatsApp. This led to an exploration of message queues and scalability challenges inherent in such a system.

Q5
System Design: Airline System
System DesignHard

The conversation began with designing an airline system, specifically focusing upon graph theory and complexity analysis.

Adobe | CS1 | Interview Experience | 4.8 Years | Rejected
adobe logo
Adobe
CS14.8 yearsRejected
April 4, 20221 reads

Summary

I applied for a CS1 role at Adobe via employee referral and underwent a 4-5 week interview process comprising technical, system design, and hiring manager rounds, ultimately resulting in a rejection.

Full Experience

I applied for a CS1 position at Adobe through an employee referral and received an interview call within two weeks. The entire process lasted about 4-5 weeks.

Round 1: Technical
This round focused on data structures and algorithms. I was asked to solve two LeetCode problems: Group Anagrams and Merge Intervals.

Round 2: Technical
Another technical round where I tackled the Median of Two Sorted Arrays problem.

Round 3: System Design
The focus here was on the Low-Level Design (LLD) of a client-side rate limiting library. The interviewer expected me to code a rate-limiting algorithm. I designed and explained a complete, thread-safe solution with a driver class demonstrating client ID-based rate limiting. We then discussed potential test cases for this code, including how to test threaded clients here, etc.

Round 4: Hiring Manager
This round started with extensive discussions about my previous work experience. The interviewer asked some quick questions on concurrency, binary semaphores, and mutexes.

Then, an open-ended question about linear search in an array was posed. I was asked to write an algorithm to search an element in an unsorted array, then modify the loop to be unbounded, and finally, address potential issues without using try/catch blocks. I explained that an unbounded loop would eventually lead to memory issues like stack overflow or integer overflow. I suggested increasing JVM memory or breaking the loop under certain conditions, but acknowledged that the linear search algorithm itself would eventually fail for some test cases. I attempted to use some things like bit manipulations or 'hacks' to control the infinite loop by decrementing the loop variable, but these weren't what the interviewer was looking for. I realized I wasn't clear on their expectations, which I believe was a turning point. Later, typical operational questions followed, such as how I handle conflict, what my manager would say about me, and how I react to not receiving credit for my work. I answered these confidently.

Verdict: Rejected!

Interview Questions (7)

Q1
Group Anagrams
Data Structures & Algorithms

I was asked to solve the LeetCode problem 'Group Anagrams'.

Q2
Merge Intervals
Data Structures & Algorithms

I was asked to solve the LeetCode problem 'Merge Intervals'.

Q3
Median of Two Sorted Arrays
Data Structures & Algorithms

I was asked to solve the LeetCode problem 'Median of Two Sorted Arrays'.

Q4
Low-Level Design of Client-Side Rate Limiting Library
System Design

I was tasked with the Low-Level Design (LLD) of a client-side rate limiting library. The interviewer expected me to write and explain the complete, thread-safe code for a rate limiting algorithm with a driver class demonstrating client ID-based rate limiting. We also discussed potential test cases for this code, including how to test threaded clients.

Q5
Unbounded Linear Search Algorithm
Other

I was given an open-ended question on linear search in an array. First, I had to write an algorithm to search an element in an unsorted array. Then, I was asked to make the loop in this algorithm unbounded. Finally, the challenge was to solve potential issues/errors in this code without using try/catch blocks. The interviewer's main focus was on how try/catch works internally and how to control the unbounded loop effectively without explicit error handling.

Q6
Concurrency Concepts
Other

I was asked quick questions about concurrency, binary semaphores, and mutexes.

Q7
Behavioral Interview Questions
Behavioral

I was asked typical operational questions: how I tackle conflict, what my manager would say about me if the interviewer called them, and how I would react if I didn't get enough credit for my work.

Adobe | MTS-2 | Noida | Jan 2022 [Offer]
adobe logo
Adobe
MTS-2Noida3.5 yearsOffer
March 11, 20222 reads

Summary

I interviewed for the MTS-2 role at Adobe in Noida, successfully clearing all technical and managerial rounds to receive an offer. The interview process focused on a mix of data structures & algorithms, C++, and OS concepts.

Full Experience

My interview journey for the MTS-2 role at Adobe in Noida was insightful. I hold a B.Tech in CS and have 3.5 years of experience as an SDE in a product-based company. The process consisted of four rounds.

Technical Round 1 (1 hr):
This round included questions based on Binary Search, with a specific constraint to use exception handling for certain cases. I also encountered a variation of the chocolate distribution problem. Additionally, the interviewer delved into C++ and OS concepts.

Technical Round 2 (1 hr):
During this round, I was asked to implement a function to copy a linked list with random pointers. I had to write multiple test cases and dry run them until the interviewer was satisfied with my explanation. A significant portion of this round also involved questions on C++ and OS.

Manager Round (40 mins):
I tackled the Balanced Parenthesis Problem and a puzzle involving 100 people in a circle, which is essentially the Josephus Problem, requiring me to write generalized code for it. This round also included more questions on OS.

Director Round (1 hr):
The final round involved some behavioral questions and a discussion about my projects. C++ and OS concepts were revisited. A notable question involved implementing a solution to safely share a variable between multiple threads, similar to the Reader-Writer problem, which I had to compile and run on an IDE.

Overall, my opinion is that Adobe generally asks easy to medium level coding problems, but their primary emphasis is on OOP concepts.

Interview Questions (4)

Q1
Copy List with Random Pointer
Data Structures & AlgorithmsMedium

In this round, I was challenged to implement a function that creates a deep copy of a linked list where each node contains both a 'next' pointer and a 'random' pointer. The task involved not only coding the solution but also demonstrating its correctness by running multiple test cases and dry-running them for the interviewer.

Q2
Balanced Parentheses
Data Structures & AlgorithmsEasy

During the Manager Round, I was given the classic problem of determining if a string containing various types of parentheses (e.g., '(', ')', '{', '}', '[', ']') is 'balanced' and valid. I had to provide an efficient solution for this.

Q3
Josephus Problem
Data Structures & AlgorithmsMedium

I was presented with the famous '100 people in a circle' puzzle, which is a variation of the Josephus Problem. My task was to develop a generalized code solution to determine the survivor given an arbitrary number of people and elimination pattern.

Q4
Reader-Writer Problem (Shared Variable)
System DesignMedium

The Director Round included a practical coding challenge: I needed to implement a mechanism to safely share a variable between multiple threads, essentially an application of synchronization primitives related to the Reader-Writer problem. I had to demonstrate the working solution by compiling and running it on an IDE.

Preparation Tips

Based on my experience, for C++ roles at Adobe, a strong understanding of the following topics is crucial:

  • C++: Multithreading, virtual functions, smart pointers and their implementations.
  • OS: Virtual memory, memory management, deadlocks.
Questions related to these concepts were asked across all my rounds, so thorough preparation in these areas is highly recommended.

Adobe | CS | Bengaluru
adobe logo
Adobe
bengaluru4 yearsOngoing
February 23, 20223 reads

Summary

I recently interviewed for a software engineering position at Adobe in Bengaluru. The interview process spanned four rounds, covering coding, low-level design with multi-threading, and a managerial project deep dive with further coding challenges. I am currently awaiting the final feedback from the directorial round.

Full Experience

Round 1: Coding and Problem Solving

This round focused on my coding and algorithmic skills. The interviewer presented two problems:

  1. First, I was asked to determine if there exists any contiguous subarray within a given array that sums to zero.
  2. Following that, the second question built upon the first, requiring me to find the longest contiguous subarray within the array that sums to zero.

Round 2: Low Level Design

This round delved into my object-oriented design capabilities. I was tasked with designing a single entry-exit, single-floor parking lot, emphasizing OOP principles. A follow-up to this question introduced multi-threading, where I had to explain how parking slots would be assigned to multiple vehicles concurrently, testing my knowledge of concurrent data structures, synchronized keywords, and locks.

Round 3: Managerial Round

The managerial round started with a deep dive into my past projects, discussing their architecture, challenges, and my contributions. After the project discussion, I was presented with two more programming questions:

  1. I needed to find the minimum number of jumps required to reach the end of an array, with a specific instruction to solve it using a greedy approach in O(n) time complexity.
  2. The second problem involved finding the largest mountain subarray within a given array.

I found it important to maintain extreme calm and composure during this round, as it could become frustrating at times.

Round 4: Directoral Round

I recently completed my directorial round and am currently awaiting feedback. I will update this post once I receive the outcome.

Interview Questions (4)

Q1
Longest Subarray with Zero Sum
Data Structures & AlgorithmsMedium

Find the longest contiguous subarray within the array with sum=0 in the array.

Q2
Multi-threaded Parking Lot Design
System DesignHard

Design a single entry-exit, single-floor parking lot catering to the Object Oriented Principles. As part-2, the interviewer introduced Multi-threading: how would assigning parking slots to multiple vehicles work concurrently, checking knowledge on Concurrent Data Structures and Synchronized Keywords/Locks.

Q3
Jump Game II (Minimum Jumps)
Data Structures & AlgorithmsMedium

Find the minimum number of jumps to reach the end of the array. The interviewer specifically asked to solve it using a Greedy approach in O(n) time complexity.

Q4
Longest Mountain in Array
Data Structures & AlgorithmsMedium

Find the largest mountain subarray in the given array.

Adobe | C++ developer
adobe logo
Adobe
C++ developer
June 17, 20211 reads

Summary

I underwent two interview rounds for a C++ developer role at Adobe, which involved LeetCode problems like Jump Game IV and Open the Lock, alongside specific C++ concepts such as class compilation and constructor types.

Full Experience

I recently interviewed for a C++ developer position at Adobe, which consisted of two distinct rounds.

In the first round, I was presented with a problem from LeetCode, specifically Jump Game IV. I attempted to solve this problem but was not able to fully complete it during the interview. Following that, I was given a small C++ question involving class instantiation and asked to identify if it would compile successfully. The code snippet was:

Class A{
}
int main(){
A obj;
A *obj=new A();
}

The second round featured another LeetCode problem, Open the Lock. Additionally, I was questioned about various C++ constructor types and tasked with implementing them for a custom String class.

Interview Questions (4)

Q1
Jump Game IV
Data Structures & AlgorithmsHard

You are given an array of integers arr, and you are initially at index 0. You want to reach the last index of the array. You can jump from index i to index j if:

  1. i + 1 = j
  2. i - 1 = j
  3. arr[i] == arr[j]
Return the minimum number of jumps to reach the last index.

Q2
C++ Class Compilation Error
Other

Given the following C++ code, determine if it compiles successfully and explain any errors:

Class A{
}
int main(){
A obj;
A *obj=new A();
}

Q3
Open the Lock
Data Structures & AlgorithmsMedium

You have a lock with 4 wheels, each wheel has 10 slots '0' - '9'. Each slot can be turned forward or backward. You are given a list of deadends which are combinations that will cause the lock to be permanently locked. You are also given a target combination. Starting from '0000', return the minimum number of turns to reach the target combination, or -1 if it's impossible.

Q4
C++ Constructor Types and String Class Implementation
Other

Explain different types of C++ constructors (e.g., default, parameterized, copy, move) and provide an implementation for a custom String class that correctly handles these constructors.

Preparation Tips

Based on my interview experience, future preparation should heavily focus on LeetCode problems, particularly those of medium to hard difficulty. A strong emphasis on graph traversal algorithms like Depth-First Search (DFS) and Breadth-First Search (BFS) is highly recommended, as these topics frequently appeared in the questions I faced.

Adobe Interview Experience | MTS-1
adobe logo
Adobe
MTS-1Noida, IndiaOffer
May 28, 20193 reads

Summary

I successfully cleared the Adobe MTS-1 interview for the Noida location, which consisted of an online assessment followed by five comprehensive on-site rounds. The interviews covered data structures, algorithms, system design, operating systems, OOPs, and behavioral questions. I was ultimately offered the position.

Full Experience

Status and Background

I was working as an SDE-1 at Samsung Research Institute Delhi and graduated in 2018 with a B. Tech. in Computer Science from NIT Kurukshetra, India. My interview for the MTS-1 position at Adobe Systems in Noida, India took place on May 1, 2019.

1. Online Assessment Test (HackerRank)

The first stage was an online assessment on HackerRank. It comprised:

  • 15 aptitude questions (15 mins)
  • 5 input-output programs (15 mins)
  • 2 programming questions (45 mins)

2. On-site Round 1 - Technical Round (1 Hour)

This round began with a discussion on my projects, including their architecture diagrams. Following that, I was asked several programming and theoretical questions:

  • How to sort an array containing 0s and 1s in a single pass with O(n) time and O(1) space complexity.
  • A problem to add 1 to a number represented as a singly linked list. Each node represented a digit, with the head pointing to the most significant digit. The challenge was to do this in a single traversal.
  • I had to determine the number of different ways to form an N-bit binary number such that no two consecutive 1s occur. For N=3, examples like 101, 010, 000, 001, 100 are valid (output: 5), while 110, 111, 011 are invalid. I wrote a program, but the interviewer mentioned there's also a mathematical formula for it.
  • I was asked about the Producer-Consumer problem, including writing pseudo-code. We also discussed semaphores, mutexes, critical sections, and potential deadlock scenarios involving wait() and signal() operations.

3. On-site Round 2 - Technical Round (1 Hour)

This round involved a deep dive into one of my projects. The interviewer skillfully transformed the project discussion into a problem and posed many follow-up questions. The core problem was:

How would you represent an image in memory, for example, as a matrix where each cell is a pixel? Considering a monochrome image represented by such a matrix, how would you programmatically draw a line segment on it? This meant filling the cells that the line segment would pass through. I had to account for both axis-aligned and non-aligned line segments and write a program for it. I initially assumed integer endpoints for the line segment and coded accordingly. The interviewer then challenged me on whether the code would work for float/double endpoints and we discussed generalizing the solution. We also covered boundary cases: what if the line segment's endpoints are outside the matrix, or if the segment is only partially inside? For a line segment not aligned to any axis and not bounded by the matrix, I was asked how to find the point where it first enters or exits the matrix.

4. On-site Round 3 - Technical Round (1 Hour)

This round covered a mix of C/C++ fundamentals, data structures, and algorithms:

  • Questions on pointers, such as the validity of pointer differences and pass-by-reference in functions.
  • What happens when an object of a class is declared and memory is allocated to it?
  • Questions on object-oriented programming concepts like inheritance, polymorphism, and virtual functions.
  • I was asked to implement a Hash Table with the following APIs: void insert(int key, int value), void delete(int key), int search(int key), and int getRecentElement(). The getRecentElement() API should return the key of the element most recently touched by either insert() or search(). All APIs were expected to operate in O(1) time, assuming no duplicate keys.
  • A problem to search for an element in an array where each consecutive pair of elements differs by exactly 1 (i.e., |A[i] - A[i+1]| = 1 and |A[i-1] - A[i]| = 1).
  • Given N threads and single instances of N different types of resources, how would I allocate resources to threads to avoid deadlock and minimize waiting time? This assumed threads could arrive at any time and request any number of resources, without knowing their arrival schedule.

5. On-site Round 4 - Director Round (1 Hour)

This was a broader discussion round:

  • We discussed my projects.
  • I was asked how to identify whether software I'm about to install on my PC is malware, providing methods for both pre-installation and post-installation.
  • Following up on that, I was asked how to identify if the software had deleted or added files to my file system. I suggested comparing the file system's tree structure before and after installation.
  • Building on the previous question, I was given two files containing lists of file names (representing states before and after installation) and asked to write pseudocode for a fileDifference(File A, File B) function to find the differences.
  • A combinatorics problem: Given an N x N matrix, how many ways are there to reach the top-right corner from the bottom-left, moving only Up, Right, and Up-Right diagonally? I used a dynamic programming approach, but the interviewer prompted me to derive a mathematical formula. (I later learned this relates to Delannoy Numbers).

6. On-site Round 5 - Manager Round (1 Hour)

The final round was with a manager, focusing on problem-solving and logic:

  • I had to write a program to convert a number into English word format, specifically using the Indian Currency system (e.g., 1,23,500 to “One Lakh Twenty Three Thousand Five Hundred”, 100 to “One Hundred”).
  • Another task was to write a program to check if two given binary trees are mirror images of each other.

Interview Questions (15)

Q1
Sort Binary Array
Data Structures & AlgorithmsEasy

Sort an array containing only 0s and 1s. The solution should operate in a single pass with O(n) time complexity and O(1) space complexity.

Q2
Add One to Linked List Number
Data Structures & AlgorithmsMedium

Given a singly linked list where each node represents a digit of a number (head is most significant digit), add 1 to this number. The operation should be done in a single traversal.

Q3
N-bit Binary Numbers Without Consecutive 1s
Data Structures & AlgorithmsMedium

Given an integer N, find the number of N-bit binary numbers such that no two consecutive 1s occur. For N=3, valid numbers are 101, 010, 000, 001, 100, resulting in an output of 5. The interviewer hinted at a mathematical formula beyond a programmatic solution.

Q4
Producer-Consumer Problem with Deadlock Scenarios
OtherMedium

Discuss the Producer-Consumer problem, including pseudo-code. Explain concepts like semaphores, mutexes, and critical sections. Address potential deadlock scenarios with wait() and signal() operations.

Q5
Draw Line Segment on Monochrome Image Matrix
Data Structures & AlgorithmsHard

Given a monochrome image represented as a matrix of pixels, how would you programmatically draw a line segment on it? This involves filling cells that the line segment passes through. Consider both axis-aligned and non-axis-aligned line segments. Discuss adapting the solution for float/double endpoints and handling various boundary conditions, such as line segments partially or completely outside the matrix. Specifically, how to find entry/exit points if the line is not bounded by the matrix.

Q6
Object Declaration and Memory Allocation
OtherEasy

Explain the process of declaring an object of a class and how memory is allocated for it.

Q7
Implement Hash Table with O(1) Recent Element Access
Data Structures & AlgorithmsHard

Implement a Hash Table with insert(key, value), delete(key), search(key) APIs, all expected to be O(1). Additionally, implement getRecentElement() which returns the key of the element most recently touched by either insert() or search(). Assume no duplicate keys.

Q8
Search in Array with Adjacent Difference 1
Data Structures & AlgorithmsMedium

Given an array where each consecutive pair of elements differs by exactly 1 (i.e., |A[i] - A[i+1]| = 1), search for a given element efficiently.

Q9
Resource Allocation to Threads for Deadlock Avoidance and Minimum Waiting Time
System DesignHard

Given N threads and N single-instance resources, design a resource allocation strategy to avoid deadlocks and minimize waiting time. Threads can request any number of resources at any time, and their arrival is unpredictable.

Q10
Malware Identification Before and After Installation
System DesignMedium

How would you identify if software you are about to install is malware? Provide methods for identification both before and after installation.

Q11
Detecting File System Changes Post-Software Installation
System DesignEasy

How can you determine if newly installed software has deleted or added files to your file system?

Q12
Find Difference Between Two File Lists (Pseudocode)
Data Structures & AlgorithmsMedium

Given two files, File A and File B, each containing a list of file names (representing file systems before and after installation), write pseudocode for a fileDifference(File A, File B) function to find the differences.

Q13
Ways to Reach Top-Right of N x N Matrix (Up, Right, Up-Right Moves)
Data Structures & AlgorithmsHard

Given an N x N matrix, find the number of ways to reach the top-right corner from the bottom-left corner using only Up, Right, and Up-Right diagonal moves. (This problem relates to Delannoy Numbers).

Q14
Convert Number to Indian English Words
Data Structures & AlgorithmsMedium

Write a program to convert a given number into its English word format, specifically using the Indian currency system (e.g., 1,23,500 becomes 'One Lakh Twenty Three Thousand Five Hundred').

Q15
Check if Two Trees are Mirror Images
Data Structures & AlgorithmsEasy

Write a program to determine if two given binary trees are mirror images of each other.

Preparation Tips

Interview Preparation Resources

1. Algorithms and Data Structures

2. CS Fundamentals

3. OOP Concepts

Have a Adobe Interview Experience to Share?

Help other candidates by sharing your interview experience. Your insights could make the difference for someone preparing for their dream job at Adobe.