Adobe's DSA rounds draw heavily on trees/graphs (especially org-hierarchy-style problems), union-find, heaps, sliding windows, and dynamic programming. The three problems below are real, recently reported (2025) Adobe questions with full solutions.
You're given a stream of (timestamp, userId, eventType) events, sorted by timestamp. For each new event, report how many distinct users have been active within the trailing 5-minute (300-second) window ending at that event's timestamp.
Input: events = [(0,'u1'), (100,'u2'), (200,'u1'), (400,'u3')], window = 300s
Output: [1, 2, 2, 3]
After the event at t=400, the window is [100, 400] — u1 (t=200), u2 (t=100) and u3 (t=400) are all inside it, so the answer is 3.
Given an array of positive integers and an integer K, you may perform exactly K operations. In each operation, pick any element x and replace it with ceil(x / 2). Return the minimum possible sum of the array after all K operations, choosing optimally which element to halve each time.
Input: nums = [9, 4, 7], k = 3
Output: 11
Always halving the current largest works out to 9→5, 7→4, 5→3, leaving [3, 4, 4].
Given a log of interaction events, each referencing a productId, return the K product IDs that were interacted with most frequently — in the best possible time complexity relative to the number of distinct products.
Input: interactions = ['p1','p2','p1','p3','p1','p2'], k = 2
Output: ['p1', 'p2']
More DSA questions Adobe has asked recently
These topics were reported in verified 2025 Adobe loops. Full problem statements, solutions and explanations for these are part of the Placement-Ready PYQ Kit.
7 more verified DSA questions with full solutions in the full Placement-Ready PYQ Kit
Includes every round they were asked in, from Round 1 through the hiring-manager round.

