KarmSakha
Help

Interview & Soft Skills

Adobe Interview Preparation: Original Software Questions and Worked Answers

Reviewed: 9 October 2026.

Preparing for an Adobe interview starts with the particular role and the instructions in your invitation. A software engineering role, a design role and a sales role can require different preparation. A company name alone does not establish the number of rounds, permitted tools or questions you will receive.

This article offers original software interview practice with worked answers. The exercises are editorial examples, not reported Adobe questions or a proprietary question bank. The existing article address is retained; the review date above identifies when this guidance was checked.

What the official hiring page supports

Adobe's hiring guidance, labelled United States, describes role-dependent interviews and assessments. Technical examples include coding, system design and portfolio discussion. It recommends using the role description and specific experience to prepare. This regional overview does not establish a fixed sequence for an Indian application. Confirm your actual assessment format, tool permissions and logistics through the relevant recruiting process.

Make a preparation note from the job description: required skills, work examples you can discuss, areas needing review and questions about the team's responsibilities. Do not infer an active vacancy or eligibility from this guide.

Keep preparing

Continue with Top 50 Interview Questions₹299 — coaching के एक महीने से काफ़ी सस्ता / far cheaper than a month of coaching
₹299
Buy this eBook

Original coding exercise: detect overlapping intervals

Suppose a practice application receives a list of named demonstration intervals. Each interval has an integer start and end measured in minutes on the same fictional timeline. Every interval must satisfy start less than end; zero-length or reversed intervals are invalid. Negative values are outside this exercise's input domain. Names must be unique.

Intervals use half-open boundaries: an interval beginning at 2 and ending at 5 includes the start but excludes the endpoint 5. Touching intervals such as [2,5) and [5,8) therefore do not overlap. The task is to return every unordered pair of distinct intervals that overlaps. It is not merely to return whether any overlap exists.

For the initial solution, input order is arbitrary and the list is small. The output contract sorts each pair's names and then sorts the list of pairs alphabetically, so there is one predictable representation.

Question 1: What is the overlap condition?

For valid intervals A and B, the condition is:

max(A.start, B.start) < min(A.end, B.end)

Equivalently, A.start is less than B.end and B.start is less than A.end. Strict inequality is necessary because touching endpoints are allowed. Replacing it with a less-than-or-equal comparison would incorrectly report touching intervals as overlapping.

Take A=[2,5) and B=[4,7). The later start is 4 and the earlier end is 5; 4 is less than 5, so their overlap is [4,5). For A=[2,5) and C=[5,8), the two boundary values are both 5, so there is no overlap.

Question 2: Work through the complete input

Use this original unsorted input:

NameStartEnd
C58
A25
D13
B47

There are six unordered candidate pairs for four intervals. A and B overlap on [4,5). A and D overlap on [2,3). B and C overlap on [5,7). A and C touch without overlap; B and D are separated; C and D are separated.

The exact sorted output is [(A,B), (A,D), (B,C)]. The pair notation denotes names, not numeric interval boundaries. Input order must not change the result.

Question 3: Give a simple correct algorithm

Validate the entire input first. Then compare every index i with every index j greater than i, applying the strict overlap condition. Add each overlapping name pair once, canonicalise the names within each pair and sort the final output by that contract.

An original Python implementation for this finite exercise is:

def invalid():
    raise ValueError(
        "invalid input"
    )


def is_int(v):
    return type(v) == int


def overlapping_pairs(
    items
):
    names = set()
    for row in items:
        name, lo, hi = row
        if not isinstance(
            name, str
        ) or not name:
            invalid()
        if name in names:
            invalid()
        if not is_int(lo):
            invalid()
        if not is_int(hi):
            invalid()
        if (
            lo < 0
            or lo >= hi
        ):
            invalid()
        names.add(name)

    out = []
    n = len(items)
    for i in range(n):
        a = items[i]
        an, l, h = a
        for j in range(
            i + 1, n
        ):
            b = items[j]
            bn, x, y = b
            ov = (
                max(l, x)
                < min(h,y)
            )
            if not ov:
                continue
            p = sorted(
                (an, bn)
            )
            p = tuple(p)
            out.append(p)
    return sorted(out)

The function expects a reusable sequence of three-element records. It does not accept malformed record shapes, arbitrary iterators or timestamps. State those input assumptions instead of calling it a general scheduling library.

The pair comparisons take O(n²) time. If k overlaps are returned, output sorting adds O(k log k); storing the result uses O(k) space and the validation name set uses O(n). Because the requested output itself can contain O(n²) pairs, an all-pairs task differs from detecting one conflict.

Question 4: Which boundary cases matter?

CaseExpected result
Empty listNo pairs
One intervalNo pairs
A=[2,5), B=[5,8)No pairs: touching only
A=[1,9), B=[3,4)One pair: A with B
A=[2,5), B=[2,5)One pair: A with B
A=[4,4)Invalid: zero length
A=[6,3)Invalid: reversed
Two records named AInvalid: duplicate name

The compact notation in this table uses A and B as name labels; executable Python calls require quoted strings. For the duplicate-name case, use the valid intervals A=[1,3) and A=[4,6) to isolate the naming error. Explain invalid inputs before discussing optimisation so that the interviewer knows what problem you are solving.

Question 5: How would you change it for larger input?

First clarify the requested output. If the task changes to detecting whether any overlap exists, sorting intervals by start and checking against the maximum end encountered so far supports a different algorithm. With valid half-open intervals, a current start below that maximum signals an overlap with an earlier interval. Equal boundaries do not.

If every overlapping pair is still required, a sorted scan needs to retain or otherwise discover all relevant active intervals. Comparing only adjacent intervals can miss pairs when a long interval contains several shorter intervals. Sorting alone does not make the complete-output task O(n log n) regardless of output size.

This is a trade-off discussion, not a claim that a particular interviewer expects a particular data structure. Ask for constraints before spending time on an optimisation that solves a different task.

Discuss a project without inflating ownership

For a second original practice question, imagine candidate Rohan contributed this interval function to a college demonstration. The supplied project record says he wrote the validation and pair-comparison function and checked the example cases. A colleague built the interface. The tutor reviewed the demonstration. There was no production deployment or external user trial.

A precise response is: “I owned the interval validation and overlap function. I chose strict boundaries so adjacent bookings could touch, checked the returned pairs on the supplied cases and explained the all-pairs complexity. My colleague built the interface, and the tutor reviewed the demonstration. I would need further integration and concurrency checks before treating it as a real booking service.”

Do not add scale, revenue or user adoption absent from the record. An in-memory overlap function also does not by itself prevent two simultaneous real bookings. That would require a separate storage and concurrency design.

Prepare for the actual conversation

Practise explaining your assumptions before coding, tracing one case aloud and correcting a boundary error when it appears. Review the tools you are actually allowed to use. If you need clarification about the task or accommodation arrangements, use the process associated with your invitation.

For a design discussion, review the system design interview guide. For explaining your own past work, use the STAR method guide.

Frequently asked questions

Are these actual Adobe interview questions?

No. They are original editorial practice aligned with a possible software assessment. The official page does not provide this exercise or a question-frequency claim.

Does every candidate have a coding round?

The official overview describes assessments that depend on the role. Your actual invitation and recruiting process determine what applies to you.

Is the existing article URL evidence about the current process?

No. A preserved address is a publication identifier. Use the current review date and the relevant employer instructions to assess current guidance.

Sources, editorial process and corrections

Related guides

Ask KarmSakha AI