The Interview Loop
Recruiter Screen (30 min)
Standard fit check, behavioral questions, and resume overview.
Technical Loop (3-4 Rounds)
Deep dive into domain knowledge, coding, and system design.
Interview Question Bank
Backend Engineer
•
Coding
•
hard
Write a function to serialize and deserialize a binary tree. This is similar to how we might serialize a complex DOM tree in Adobe XD for network transmission.
#Trees
#BFS
#DFS
#Serialization
Backend Engineer
•
Coding
•
hard
Serialize and Deserialize a Binary Tree. Design an algorithm to convert a binary tree into a string and back into the identical tree structure.
#Trees
#DFS
#BFS
#Design
Backend Engineer
•
Coding
•
hard
Given two strings s and t, return the minimum window in s which will contain all the characters in t. If there is no such window, return the empty string.
#Sliding Window
#Hash Table
#Strings
Backend Engineer
•
Coding
•
hard
Given a sorted dictionary of an alien language, find the order of characters in the language. Return a string of the unique letters sorted in lexicographical order by the rules of this new language.
#Graph
#Topological Sort
#String
Backend Engineer
•
Coding
•
medium
Given a 2D grid map of '1's (land) and '0's (water), count the number of islands. An island is surrounded by water and is formed by connecting adjacent lands horizontally or vertically.
#Graphs
#DFS
#BFS
Backend Engineer
•
Coding
•
hard
Given an array of non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it can trap after raining.
#Arrays
#Two Pointers
#Dynamic Programming
Backend Engineer
•
Coding
•
hard
Design an in-memory file system. Implement commands like ls, mkdir, addContentToFile, and readContentFromFile. This mimics the backend structure of Adobe Cloud storage.
#Trie
#Hash Map
#Object Oriented Design
Backend Engineer
•
Coding
•
easy
Given a stream of integers, design a class to find the kth largest element in the stream.
#Heap
#Priority Queue
#Data Streams
Backend Engineer
•
Coding
•
hard
Given two strings s and t, return the minimum window in s which will contain all the characters in t. If there is no such window, return an empty string.
#Sliding Window
#Hash Map
#Strings
Backend Engineer
•
Coding
•
easy
Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target. You may assume that each input would have exactly one solution.
#Arrays
#Hash Map
Backend Engineer
•
Coding
•
hard
Given a binary tree, find the maximum path sum. The path may start and end at any node in the tree.
#Trees
#DFS
#Dynamic Programming
Backend Engineer
•
Coding
•
medium
Given an array of intervals where intervals[i] = [starti, endi], merge all overlapping intervals. This is often used in Adobe Premiere Pro's backend to calculate total rendered video time on a timeline.
#Arrays
#Sorting
Backend Engineer
•
Coding
•
medium
Design a data structure that follows the constraints of a Least Recently Used (LRU) cache. How would you implement this to be thread-safe for a high-throughput backend service?
#Hash Table
#Doubly Linked List
#Concurrency
Backend Engineer
•
Coding
•
medium
Given an array of intervals representing page ranges to extract from a PDF in Adobe Document Cloud, merge all overlapping intervals and return an array of the non-overlapping intervals.
#Arrays
#Sorting
Backend Engineer
•
Coding
•
medium
Given an integer array of event IDs from Adobe Analytics and an integer k, return the k most frequent elements. You must solve it in better than O(n log n) time complexity.
#Heap
#Hash Table
#Bucket Sort
Backend Engineer
•
Coding
•
medium
Given a string representing a user's search query on Adobe Stock and a dictionary of valid tags, return true if the string can be segmented into a space-separated sequence of dictionary words.
#Dynamic Programming
#Trie
#Memoization
Backend Engineer
•
Coding
•
medium
There are a total of numAssets you have to load for an Adobe Premiere Pro project, labeled from 0 to numAssets - 1. You are given an array prerequisites where prerequisites[i] = [a, b] indicates that you must load asset b first if you want to load asset a. Return true if you can finish loading all assets.
#Graph
#Topological Sort
#BFS
#DFS
Backend Engineer
•
Coding
•
hard
Given an elevation map where the width of each bar is 1, compute how much water it can trap after raining. This is used in our image processing algorithms for histogram analysis.
#Two Pointers
#Dynamic Programming
#Stack
Backend Engineer
•
Coding
•
hard
Design a multithreaded web crawler to scrape asset metadata from external partner sites. How do you ensure you don't process the same URL twice and respect domain rate limits?
#Concurrency
#Graph Traversal
#Thread Pool
Backend Engineer
•
Coding
•
medium
Design a data structure that implements an LRU (Least Recently Used) Cache. It should support get and put operations in O(1) time complexity. How would you adapt this for caching user session data in Adobe Experience Manager?
#Hash Map
#Doubly Linked List
#Caching
Backend Engineer
•
Coding
•
medium
Given a string s and a dictionary of strings wordDict, return true if s can be segmented into a space-separated sequence of one or more dictionary words. Consider this in the context of Adobe Acrobat's OCR text extraction.
#Dynamic Programming
#Trie
#Strings
Cloud Engineer
•
Coding
•
hard
Implement a rate limiter using the Token Bucket algorithm.
#Object-Oriented Design
#Concurrency
#Math
Cloud Engineer
•
Coding
•
medium
Given an array of strings representing log entries, write a function to find the top K most frequent IP addresses.
#Hash Maps
#Heaps
#String Parsing
Cloud Engineer
•
Coding
•
medium
Given a list of intervals representing server downtimes, merge all overlapping intervals.
#Arrays
#Sorting
Cloud Engineer
•
Coding
•
easy
Write a function to validate if a given JSON string representing an IAM policy has balanced brackets and braces.
#Stacks
#Strings
Data Engineer
•
Coding
•
medium
Find the Lowest Common Ancestor of two nodes in a Binary Search Tree representing our organizational hierarchy.
#Trees
#Recursion
#BST
Data Engineer
•
Coding
•
easy
Given a list of daily active user counts for Adobe Illustrator, find the maximum profit you can achieve by buying and selling server capacity (stock buy/sell variation).
#Arrays
#Dynamic Programming
Data Engineer
•
Coding
•
hard
Write a function to serialize and deserialize a binary tree. Imagine this tree represents a hierarchical taxonomy of Adobe Stock assets.
#Trees
#BFS
#DFS
#Design
Data Engineer
•
Coding
•
hard
Given an elevation map representing data load spikes across our servers, compute how much 'water' (backlogged data) it can trap after raining.
#Two Pointers
#Dynamic Programming
#Arrays
Data Engineer
•
Coding
•
medium
Given a string representing a sequence of user actions, find the length of the longest substring without repeating actions.
#Sliding Window
#Strings
#Hash Sets
Data Engineer
•
Coding
•
medium
Write a function to find the top K most frequently used tools in Adobe Photoshop based on a stream of user interaction logs.
#Heaps
#Hash Maps
#Streaming Data
Data Engineer
•
Coding
•
medium
Given an array of user session time intervals on Adobe Creative Cloud, merge all overlapping sessions into continuous blocks.
#Arrays
#Sorting
#Intervals
Data Scientist
•
Coding
•
easy
Given an array of integers representing user session durations on Adobe Lightroom, write a function to find two sessions that add up to exactly a target duration.
#Arrays
#Hash Maps
Data Scientist
•
Coding
•
medium
Given an array of search terms entered in the Adobe Help Center, return the top K most frequent search terms.
#Heaps
#Hash Maps
#Sorting
Data Scientist
•
Coding
•
medium
Given an array of user session time intervals (start_time, end_time), merge all overlapping sessions to find the total continuous time a user spent on Adobe Photoshop.
#Arrays
#Sorting
#Intervals
Data Scientist
•
Coding
•
easy
Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid. This is often used to validate JSON configurations in our data pipelines.
#Stacks
#Strings
Data Scientist
•
Coding
•
medium
Given a string representing a sequence of user actions, find the length of the longest substring without repeating characters.
#Sliding Window
#Strings
#Hash Sets
DevOps Engineer
•
Coding
•
easy
Given an array of integers and a target sum, write a function to return the indices of the two numbers that add up to the target.
#Arrays
#Hash Maps
#Python
DevOps Engineer
•
Coding
•
medium
Write a script to validate if a given string contains properly nested and balanced parentheses, brackets, and braces.
#Data Structures
#Stacks
#Python
DevOps Engineer
•
Coding
•
medium
Given a list of server logs represented as strings with timestamps and status ('UP' or 'DOWN'), write an algorithm to find the longest continuous period of uptime.
#Algorithms
#Parsing
#Time Complexity
#String Manipulation
Full Stack Engineer
•
Coding
•
medium
Given an array of integers `nums` and an integer `k`, return the total number of continuous subarrays whose sum equals to `k`. (Used in analytics sliding window calculations).
#Arrays
#Hash Map
#Prefix Sum
Full Stack Engineer
•
Coding
•
medium
Implement an LRU Cache to store recently accessed font files for Adobe Fonts, ensuring O(1) time complexity for both get and put operations.
#Data Structures
#Hash Map
#Doubly Linked List
#Caching
Full Stack Engineer
•
Coding
•
medium
Given a list of video clip time intervals for an Adobe Premiere Pro web timeline, write a function to merge all overlapping clips and return the consolidated timeline.
#Arrays
#Sorting
#Intervals
Full Stack Engineer
•
Coding
•
medium
Given a 2D grid representing a bitmap image in Photoshop Web where '1' is a filled pixel and '0' is transparent, write an algorithm to find the number of distinct objects (islands).
#Graph Theory
#DFS
#BFS
#Matrix
Full Stack Engineer
•
Coding
•
medium
Write a function to flatten a deeply nested JSON object returned from the Adobe Experience Manager (AEM) API into a single-level dictionary with dot-separated keys.
#Recursion
#JSON
#Data Manipulation
#JavaScript
Full Stack Engineer
•
Coding
•
easy
Write an algorithm to compress a string of asset tags (e.g., 'aabcccccaaa' becomes 'a2b1c5a3'). If the compressed string is not smaller, return the original.
#Strings
#Two Pointers
Full Stack Engineer
•
Coding
•
medium
Implement a Trie (Prefix Tree) to support an ultra-fast autocomplete feature for the Adobe Help Center search bar.
#Trees
#Trie
#Design
#Strings
Full Stack Engineer
•
Coding
•
easy
Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid. This is used in Adobe's code editor widgets.
#Stacks
#Strings
Full Stack Engineer
•
Coding
•
hard
Given an array of integers representing the heights of a terrain map in Adobe Substance 3D, compute how much water it can trap after raining.
#Arrays
#Two Pointers
#Dynamic Programming
Full Stack Engineer
•
Coding
•
medium
Write a function to search for a specific asset ID in a rotated sorted array. (e.g., [4,5,6,7,0,1,2]).
#Binary Search
#Arrays
Full Stack Engineer
•
Coding
•
hard
Design an in-memory file system with commands to `ls`, `mkdir`, `addContentToFile`, and `readContentFromFile`. This mimics the core logic of Adobe's cloud file explorer.
#Design
#Trie
#Hash Map
#Trees
Full Stack Engineer
•
Coding
•
medium
Given a binary tree representing a hierarchical layer structure in Photoshop, write a function to return the lowest common ancestor of two given nodes.
#Trees
#Recursion
#DFS
Full Stack Engineer
•
Coding
•
medium
Write a function to determine if a given string can be segmented into a space-separated sequence of dictionary words (Word Break). Useful for Adobe Acrobat's OCR text processing.
#Dynamic Programming
#Trie
#Memoization
Machine Learning Engineer
•
Coding
•
medium
Given an array of integers representing the frequency of usage for various tools in Adobe Illustrator, find the Kth most frequently used tool.
#Heap
#Quickselect
#Sorting
Machine Learning Engineer
•
Coding
•
medium
Given a 2D grid representing a pixel map where '1' is an object and '0' is background, find the number of distinct objects (islands). This is a simplified version of connected component labeling used in Photoshop's Magic Wand tool.
#Depth-First Search
#Breadth-First Search
#Matrix
Machine Learning Engineer
•
Coding
•
medium
Given an array of time intervals representing user active sessions in Adobe Premiere Pro, merge all overlapping sessions and return an array of the non-overlapping sessions.
#Arrays
#Sorting
#Intervals
Machine Learning Engineer
•
Coding
•
medium
Given an array of user engagement scores from Adobe Analytics, find the total number of continuous subarrays whose sum equals to a specific target K.
#Array
#Hash Table
#Prefix Sum
Machine Learning Engineer
•
Coding
•
hard
Design an algorithm to serialize and deserialize a decision tree model (represented as a binary tree) so it can be saved to a file and reconstructed later.
#Trees
#String
#Design
#Breadth-First Search
Machine Learning Engineer
•
Coding
•
medium
Given a string of text extracted from a PDF document without spaces and a dictionary of valid words, determine if the string can be segmented into a space-separated sequence of dictionary words.
#Dynamic Programming
#Trie
#String
Machine Learning Engineer
•
Coding
•
hard
Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it can trap after raining. (Often framed as a histogram/pixel intensity problem).
#Two Pointers
#Dynamic Programming
#Stack
Product Manager
•
Coding
•
medium
Write a Python script or SQL query to identify users who have experienced more than 3 crash events in Adobe Premiere Pro within a 7-day rolling window.
#Data Processing
#Python
#SQL
#Rolling Windows
Software Engineer
•
Coding
•
hard
Given two strings s and t of lengths m and n respectively, return the minimum window substring of s such that every character in t (including duplicates) is included in the window.
#Sliding Window
#Hash Map
#Strings
Software Engineer
•
Coding
•
hard
Given the head of a linked list, reverse the nodes of the list k at a time, and return the modified list. If the number of nodes is not a multiple of k then left-out nodes, in the end, should remain as it is.
#Linked List
#Recursion
#Pointers
Software Engineer
•
Coding
•
hard
Design an algorithm to serialize and deserialize a binary tree. There is no restriction on how your serialization/deserialization algorithm should work.
#Tree
#DFS
#BFS
#String
Software Engineer
•
Coding
•
medium
Given a string s, find the length of the longest substring without repeating characters.
#Sliding Window
#Hash Map
#Strings
Software Engineer
•
Coding
•
hard
The median is the middle value in an ordered integer list. Implement the MedianFinder class to add numbers from a data stream and return the median in O(1) or O(log N) time.
#Heap
#Design
#Data Stream
Software Engineer
•
Coding
•
hard
Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it can trap after raining.
#Two Pointers
#Array
#Dynamic Programming
Software Engineer
•
Coding
•
medium
Given an m x n 2D binary grid which represents a map of '1's (land) and '0's (water), return the number of islands. An island is surrounded by water and is formed by connecting adjacent lands horizontally or vertically.
#DFS
#BFS
#Matrix
Software Engineer
•
Coding
•
medium
Given an integer array nums and an integer k, return the k most frequent elements. You may return the answer in any order.
#Heap
#Hash Map
#Bucket Sort
Software Engineer
•
Coding
•
medium
Given two strings word1 and word2, return the minimum number of operations required to convert word1 to word2. You have the following three operations permitted on a word: Insert a character, Delete a character, Replace a character.
#Dynamic Programming
#Strings
Software Engineer
•
Coding
•
medium
Given an array of intervals where intervals[i] = [starti, endi], merge all overlapping intervals, and return an array of the non-overlapping intervals that cover all the intervals in the input. This is often applied to timeline rendering in Premiere Pro.
#Array
#Sorting
Software Engineer
•
Coding
•
medium
Design a data structure that follows the constraints of a Least Recently Used (LRU) cache. It should support get and put operations in O(1) average time complexity.
#Hash Map
#Doubly Linked List
#Design
Software Engineer
•
Coding
•
hard
Design an in-memory file system to simulate the following functions: ls, mkdir, addContentToFile, and readContentFromFile.
#Design
#Trie
#Hash Map
#Object-Oriented Programming
Software Engineer
•
Coding
•
medium
Given an integer array nums, return all the triplets [nums[i], nums[j], nums[k]] such that i != j, i != k, and j != k, and nums[i] + nums[j] + nums[k] == 0. Notice that the solution set must not contain duplicate triplets.
#Array
#Two Pointers
#Sorting
Software Engineer
•
Coding
•
medium
Design a Tic-Tac-Toe game that is played on an n x n board. Assume that the move method will be called sequentially. Optimize for the move method.
#Design
#Array
#Math
Software Engineer
•
Coding
•
medium
Given a string s and a dictionary of strings wordDict, return true if s can be segmented into a space-separated sequence of one or more dictionary words.
#Dynamic Programming
#Trie
#Memoization
Difficulty Radar
Based on recent AI-sourced data.
Meet Your Interviewers
The "Standard" Interviewer
Senior EngineerFocuses on core competencies, system constraints, and clear communication.
SimulateUnwritten Rules
Think Out Loud
Always explain your thought process before writing code or drawing architecture.