← Adobe Interview Insights

Adobe·Software Engineer·Onsite - Multi Round·Intermediate

IntermediateRejected
Aug 2026Noida

Summary

Interviewed at Adobe Noida for an MTS-2 role and got knocked out in the LLD round after barely surviving a brutal DSA round. Two rounds total, both harder than expected in different ways, ended in rejection.

Questions Asked (3)

Q1

Solve a dynamic programming problem on a tree structure.

Algorithms & Data Structures
Author's notes

Got maybe 60-70% of test cases passing and ran out of time before fixing the rest.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the problem and constraints, then define the DP state on the tree (e.g., dp[node][state]) and derive transitions from children to parent. Implement a post-order DFS to compute DP values bottom-up, and analyze time and space complexity.

Pro tip: Always discuss the trade-offs between recursive DFS (clean but risk of stack overflow) and iterative post-order (more complex but safer for deep trees), and mention how you would handle large inputs.

1. Clarify the problem

Ask questions to understand the exact problem: input format, tree properties (rooted? binary? weighted?), and what needs to be optimized. Confirm constraints like number of nodes and expected time complexity.

2. Define DP state and transitions

Identify what information each subtree needs to pass to its parent. Define dp[node][state] where state captures necessary conditions (e.g., selected/not selected, color, etc.). Write recurrence relations combining children's DP values.

3. Choose traversal and implementation

Use post-order DFS (recursive or iterative) to process children before parent. Implement the DP transitions carefully, handling base cases (leaf nodes) and merging child results.

4. Analyze complexity and optimize

State time and space complexity (usually O(N * states) time, O(N * states) space). Discuss possible optimizations like reducing state space or using iterative DFS to avoid recursion limits.

5. Test with examples

Walk through a small example tree to verify the DP transitions and base cases. Consider edge cases like single node, skewed tree, or large branching factor.

Key Points to Mention

  • Tree DP basics: state definition and transitions from children to parent
  • Post-order traversal (DFS) to compute DP bottom-up
  • Handling multiple states per node (e.g., include/exclude, colors)
  • Time and space complexity analysis (O(N * S) where S is number of states)
  • Edge cases: leaf nodes, single node, skewed trees, large N
  • Trade-offs between recursive and iterative implementations

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q2

Solve a matrix-based algorithmic problem under strict time pressure.

Algorithms & Data Structures
Author's notes

Had like 10 minutes left for this one.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the problem constraints and edge cases, then quickly outline a brute-force solution before optimizing. Focus on matrix traversal patterns and space-time trade-offs, and communicate your thought process clearly under time pressure.

Pro tip: Verbally prioritize the most impactful optimization (e.g., reducing time complexity from O(n^2) to O(n)) and mention potential pitfalls like integer overflow or empty matrices. This shows you think about production-quality code, not just correctness.

1. Clarify and Restate

Ask clarifying questions about matrix dimensions, data types, and expected output. Restate the problem in your own words to confirm understanding.

2. Discuss Brute Force

Briefly describe a naive solution and its complexity. This buys time and sets a baseline for optimization.

3. Optimize with Patterns

Identify matrix traversal patterns (e.g., spiral, diagonal, BFS/DFS) or algebraic properties (e.g., transpose, rotation) to improve efficiency.

4. Code with Edge Cases

Write clean code while handling edge cases like empty matrix, single row/column, or non-square matrices. Use meaningful variable names.

5. Test and Analyze

Walk through a small example, test edge cases, and state final time/space complexity. Mention potential improvements if time allowed.

Key Points to Mention

  • Time and space complexity analysis (Big O notation)
  • Matrix traversal techniques (row-major, column-major, spiral, diagonal)
  • In-place operations vs. using extra space
  • Handling edge cases (empty matrix, 1x1, non-square)
  • Trade-offs between different approaches (e.g., BFS vs. DFS for connected components)
  • Potential integer overflow or boundary conditions

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q3

Design a food court system, then extend it with additional constraints provided by the interviewer.

System DesignTechnical Trade-offs
Author's notes

First LLD interview of my life.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and scope, then design a modular, scalable food court system with clear components like order management, vendor integration, and payment processing. When the interviewer adds constraints, adapt your design by identifying trade-offs and iterating on the architecture to meet new requirements.

Pro tip: Proactively discuss trade-offs (e.g., consistency vs. availability, latency vs. cost) and how you would monitor and scale the system; this shows senior-level thinking. Also, treat the extension as an opportunity to demonstrate flexibility and deep understanding of distributed systems.

1. Clarify Requirements and Scope

Ask questions to understand functional and non-functional requirements, such as expected scale, user types (customers, vendors, admins), and key features (ordering, payment, notifications).

2. High-Level Design

Sketch the main components (e.g., API gateway, order service, vendor service, payment service, database) and their interactions. Define data models and core APIs.

3. Deep Dive into Critical Components

Choose 1-2 components (e.g., order processing or payment) to detail, discussing data consistency, concurrency, and failure handling.

4. Address Scalability and Reliability

Explain how to scale (e.g., horizontal scaling, caching, sharding) and ensure reliability (e.g., retries, circuit breakers, idempotency).

5. Incorporate New Constraints and Trade-offs

When the interviewer adds constraints, revisit your design, identify impacted areas, and propose modifications while discussing trade-offs (e.g., adding real-time order tracking may require WebSockets and increase complexity).

Key Points to Mention

  • Modular architecture with separation of concerns (e.g., microservices vs. monolith)
  • Data consistency and transaction management across services (e.g., sagas, two-phase commit)
  • Scalability strategies: load balancing, caching, database sharding, and asynchronous processing
  • Fault tolerance and resilience: retries, circuit breakers, idempotency, and graceful degradation
  • Trade-offs between consistency, availability, and partition tolerance (CAP theorem) and latency vs. cost
  • Monitoring, logging, and alerting for operational excellence

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.