Advanced Adobe Interview Questions: Data Structures, Algorithms, and Systems

This resource provides a deep dive into advanced technical questions frequently asked during Adobe's more challenging interview rounds. We cover essential data structures (hash tables, tries, trees), algorithms (Tower of Hanoi, linked list manipulation, finding pairs with a given sum), and operating system concepts (virtual memory, memory protection). Explore detailed explanations of memory allocation (`malloc`, `calloc`), synchronization mechanisms (mutexes, reader-writer problem), the TCP/IP model, and function call stacks. We also examine C++ features (default functions, shorthand properties, `volatile` keyword), pointer declarations, and the intricacies of exit-controlled loops and DNS servers. This guide also includes example code snippets and helps you prepare for behavioral questions typically asked in the HR round, equipping you with the knowledge to confidently tackle even the most complex technical challenges in your Adobe interview.



Adobe Interview Questions and Process

About Adobe

Adobe (Adobe Systems Incorporated) is a multinational computer software company headquartered in San Jose, California. Founded in 1982 by John Warnock and Charles Geschke, Adobe is known for its creative software products like Photoshop, Acrobat Reader, and the Portable Document Format (PDF), as well as its Creative Suite and Creative Cloud offerings. The company operates in three main segments: digital media, digital marketing, and print and publishing.

Key Adobe Personnel (as of a prior date)

  • CEO and Chairman: Shantanu Narayen
  • CFO: John F. Murphy
  • CTO: Abhay Parasnis

Adobe's Recruitment Process

Adobe's recruitment process is known to be rigorous and selective. It typically involves 5-6 rounds:

  1. Online Written Round
  2. Group Discussion Round
  3. Multiple Technical Interview Rounds
  4. Director Round
  5. HR Round

Academic Requirements

  • 65% or higher in 10th and 12th standard.
  • 70% or higher in graduation (or equivalent CGPA of 7.0).
  • No academic backlogs.

First Round: Online Written Test

This round, conducted on HackerRank, has two sections:

  1. Aptitude and Reasoning: Focuses on quantitative aptitude and logical reasoning.
  2. Technical (MCQ and Coding): Includes multiple-choice questions and a subjective coding problem (in C, C++, or Java).

Test Pattern for the First Round

Section Time Questions Topics
Aptitude 15 minutes 15 Quantitative aptitude (arithmetic, algebra, time and work, profit & loss, geometry, speed & distance, percentage)
Reasoning 30 minutes 30 Logical reasoning, puzzles, data interpretation, blood relations, etc.
Technical (MCQ & Coding) 75-120 minutes 15-20 C language, data structures, bit manipulation

Sample Aptitude Questions

  1. Question 1: If a bulb flashes every 9 seconds, how many times will it flash in ¾ of an hour?
    Answer:

    301

    Explanation: ¾ hour = 2700 seconds. 2700/9 = 300 flashes, plus the initial flash = 301.

  2. Question 2: The ages of Arjun, Ram, and Vivek are in the ratio 4:7:9. Nine years ago, their ages totaled 53. What are their current ages?
    Answer:

    16, 28, 36

    Explanation: Let their ages be 4x, 7x, and 9x. (4x-9) + (7x-9) + (9x-9) = 53. Solving for x gives x=4. Current ages are 16, 28, and 36.

  3. Question 3: The average age of employees is 40. 120 new employees with an average age of 32 join, decreasing the average age by 4 years. How many employees are there now?
    Answer:

    240

    Explanation: Let x be the initial number of employees. (40x + 120*32) / (x+120) = 36. Solving for x gives x=120. Total employees now: 120 + 120 = 240.

  4. Question 4: What is the largest 4-digit number divisible by 88?
    Answer:

    9944

    Explanation: Divide 9999 (largest 4-digit number) by 88. The remainder is 55. Subtract 55 from 9999: 9944.

  5. Question 5: What is the sum of the first five prime numbers?
    Answer:

    28

    Explanation: The first five prime numbers are 2, 3, 5, 7, and 11. Their sum is 28.

  6. Question 6: A completes 1/4 of a work in 2 days, B completes 2/3 in 4 days. If A, B, and C together complete the work in 3 days, what fraction of the work does C do in 2 days?
    Answer:

    1/12

    Explanation: A's daily work = 1/8. B's daily work = 1/6. Let C's daily work be x. (1/8 + 1/6 + x) * 3 = 1. Solving for x, x = 1/24. C's work in 2 days = 2 * (1/24) = 1/12.

  7. Question 7: Ravi was 30 minutes late and reached 50 minutes late driving 25% slower. What is his usual travel time?
    Answer:

    60 minutes

    Explanation: Let t be the usual time. (3/4) * (t + 20) = t. Solving for t, t = 60 minutes.

  8. Question 8: A shopkeeper sells a table for Rs. 840 at a 20% gain and another for Rs. 960 at a 4% loss. What is the overall gain or loss percentage?
    Answer:

    100/17% gain

    Explanation: Cost of first table = 700. Cost of second table = 1000. Total cost = 1700. Total selling price = 1800. Gain = 100. Gain % = (100/1700)*100 = 100/17%.

  9. Question 9: A conical tent has 6 sq.m per person and 30 cubic m of air per person for 10 people. What's the tent's height?
    Answer:

    30m

    Explanation: Base area = 60 sq.m. Volume = 300 cubic m. (1/3)πr²h = 300. Assuming πr² = 60, h = 30m.

  10. Question 10: A, B, and C can do work in 10, 12, and 15 days, respectively. They start together, A leaves after 2 days, B leaves 3 days before completion. How many days does it take to finish?
    Answer:

    7 days

    Explanation: Let total work be 60 units. A's daily work = 6, B's = 5, C's = 4. (6+5+4)*2 + (5+4)*(x-3) + 4*3 = 60. Solving for x (remaining days), x = 5. Total days = 7.

Sample Reasoning Questions

  1. Question 1: If MADRAS is coded as NBESBT, how is BOMBAY coded?
    Answer:

    CPNCBZ

    Explanation: Each letter is shifted one position forward in the alphabet.

  2. Question 2: Find the next term in the series: 3, 4, 6, 9, 13, __
    Answer:

    18

    Explanation: The differences between consecutive terms increase by 1 each time (1, 2, 3, 4...).

  3. Question 3: x - y - z is even, y - z - w is odd, and x is even. What must be true?
    Answer:

    w must be odd

    Explanation: If x is even and x - y - z is even, then y + z must be even (either both even or both odd). If y - z - w is odd, and y + z is even, then w must be odd.

  4. Question 4: Find the next term in the series: BXF, DVI, FTL, HRO, __
    Answer:

    JPR

    Explanation: The pattern is: +1, -3, +1, -3, ... for each letter position.

  5. Question 5: Guda buka = Clear water; Pin gola = Overcast sky; Pin saf buka = Clear blue sky. What does saf mean?
    Answer:

    Blue

  6. Question 6: Win is to Competition as Invention is to...?
    Answer:

    Discovery

  7. Question 7: Rahul describes a boy: "That boy playing with the football is the younger of the two brothers of the daughter of my father's wife." How is the boy related to Rahul?
    Answer:

    Brother

  8. Question 8: Sam introduces Riya as "She is the wife of the only nephew of my mother's only brother." How is Riya related to Sam?
    Answer:

    Sister-in-law

About Adobe

Adobe (Adobe Systems Incorporated) is a leading American multinational computer software company, headquartered in San Jose, California. Founded in December 1982 by John Warnock and Charles Geschke, its initial focus was on developing and selling the PostScript page description language. Today, Adobe is renowned for its creative software and services used by professionals, developers, enterprises, and consumers. Popular products include Photoshop, Acrobat Reader, Portable Document Format (PDF), Adobe Creative Suite, and Adobe Creative Cloud. Adobe's business is segmented into Digital Media, Digital Marketing, and Print and Publishing.

Adobe's Recruitment Process

Adobe's recruitment process is highly competitive and typically consists of five to six rounds:

  1. Online Written Round
  2. Group Discussion Round
  3. Multiple Technical Interview Rounds
  4. Director Round
  5. HR Round

Sample Questions: Aptitude and Reasoning

  1. Question 1: A bulb flashes every 9 seconds. How many times will it flash in ¾ of an hour?
    Answer:

    301

    Explanation: There are 2700 seconds in ¾ of an hour (45 minutes). 2700 seconds / 9 seconds/flash = 300 flashes. Add 1 for the initial flash at the start = 301 flashes.

  2. Question 2: Arjun, Ram, and Vivek's ages are in the ratio 4:7:9. Nine years ago, their total age was 53. What are their current ages?
    Answer:

    16, 28, 36

    Explanation: Let their ages be 4x, 7x, and 9x. (4x - 9) + (7x - 9) + (9x - 9) = 53. Solving for x, we get x = 4. Therefore, their current ages are 16, 28, and 36.

  3. Question 3: The average age of employees is 40. 120 new employees join, with an average age of 32, reducing the average age by 4. What's the total number of employees now?
    Answer:

    240

    Explanation: Let x be the initial number of employees. (40x + 32*120) / (x + 120) = 36. Solving for x, we get x = 120. The total number of employees is now 120 + 120 = 240.

  4. Question 4: What's the largest 4-digit number divisible by 88?
    Answer:

    9944

    Explanation: Divide 9999 by 88. The remainder is 55. Subtract 55 from 9999 to get 9944.

  5. Question 5: What's the sum of the first five prime numbers?
    Answer:

    28

    Explanation: The first five prime numbers are 2, 3, 5, 7, and 11. Their sum is 28.

  6. Question 6: A does 1/4 of a job in 2 days, B does 2/3 in 4 days. If A, B, and C finish in 3 days, what fraction of the work does C do in 2 days?
    Answer:

    1/12

    Explanation: A's daily rate is 1/8. B's daily rate is 1/6. Let C's daily rate be x. (1/8 + 1/6 + x) * 3 = 1. Solving for x, we get x = 1/24. In 2 days, C does 1/12 of the work.

  7. Question 7: Ravi was 30 minutes late leaving and arrived 50 minutes late driving 25% slower. What's his usual travel time?
    Answer:

    60 minutes

    Explanation: Let t be the usual time. (3/4)(t + 20) = t. Solving for t, we get t = 60 minutes.

  8. Question 8: A table sells for Rs. 840 at a 20% profit and another for Rs. 960 at a 4% loss. What's the overall profit or loss percentage?
    Answer:

    ~5.88% profit

    Explanation: Cost price of first table: 700. Cost price of second table: 1000. Total cost: 1700. Total selling price: 1800. Profit: 100. Profit percentage: (100/1700)*100 ≈ 5.88%

  9. Question 9: Engineer : Map :: Bricklayer : ?
    Answer:

    Template/Mould

  10. Question 10: Which is the odd one out: Steering wheel, Tyre, Car, Engine?
    Answer:

    Car

    Explanation: The others are parts of a car.

Sample Technical MCQ Questions

  1. Question 1: What's the output of this C code?
    Code
    
    int main() {
    int i;
    int arr[5] = {5};
    for (i = 0; i < 5; i++)
    printf("%d ", arr[i]);
    return 0;
    }
                    
    Answer:

    5 0 0 0 0

  2. Question 2: In C, parameters are passed by...?
    Answer:

    Value

  3. Question 3: What's the output of this C code?
    Code
    
    #include <stdio.h>
    int main() {
    printf("%d", main);
    return 0;
    }
                    
    Answer:

    The memory address of the main function.

  4. Question 4: What does scanf("%3s", str); do?
    Answer:

    Reads a maximum of 3 characters.

  5. Question 5: What's the output?
    Code
    
    char p[10];
    char *s = "computer";
    int length = strlen(s);
    int i;
    for (i = 0; i < length; i++)
    p[i] = s[length - i];
    printf("%s", p);
                    
    Answer:

    retupmoc (The reversed string)

  6. Question 6: How many different binary trees can be formed with three unlabeled nodes?
    Answer:

    5

  7. Question 7: How many structurally different binary trees with 3 nodes are possible?
    Answer:

    5

  8. Question 8: Which sorting algorithm has minimum time complexity for sorting a linked list?
    Answer:

    Merge Sort

  9. Question 9: What's the output?
    Code
    
    #include <stdio.h>
    struct st {
    int x;
    static int y;
    };
    int main() {
    printf("%d", sizeof(struct st));
    return 0;
    }
                    
    Answer:

    Compile-time error (Static members are not allowed within structs in C)

  10. Question 10: What's the output?
    Code
    
    #include <stdio.h>
    int main() {
    int arr[] = {5, 8, 10, 12, 18};
    int *p = arr;
    ++*p;
    p += 3;
    printf("%d", *p);
    return 0;
    }
                    
    Answer:

    12

Sample Coding Questions

  1. Write code to reverse a linked list.
    Code (C)
    
    // ... (Code to reverse a linked list would go here) ...
                    
  2. Write code to multiply two numbers using only addition.
    Code (C)
    
    // ... (Code to multiply using addition would go here) ...
                    
  3. Write a program to swap two integer pointers.
    Code (C)
    
    // ... (Code to swap integer pointers would go here) ...
                    
  4. Write a program to calculate the nth Fibonacci number.
    Code (C)
    
    // ... (Code to calculate nth Fibonacci number would go here) ...
                    
  5. Write a program to count set bits in a number.
    Code (C)
    
    // ... (Code to count set bits would go here) ...
                    
  6. Write an algorithm to compute XN with logarithmic time complexity.
    Code (C)
    
    // ... (Code for efficient exponentiation would go here) ...
                    
  7. Write code to check if a binary tree is a BST.
    Code (Java)
    
    // ... (Java code to check if a binary tree is a BST would go here) ...
                    
  8. Write code to find the nth element from the end of a linked list.
    Code (Java)
    
    // ... (Java code to find nth node from the end would go here) ...
                    

Technical Interview Questions

  1. Question 1: Explain the difference between typedef and #define in C. Provide examples.
    Example (C)
    
    // ... (Example code demonstrating typedef and #define would go here) ...
                    
  2. Question 2: What is the purpose of the sprintf() function in C? Give an example.
    Example (C)
    
    // ... (Example code demonstrating sprintf would go here) ...
                    

char a[] vs. char *a

In C++, char a[] = "string"; creates a character array. The size is determined by the string length plus a null terminator ('\0'). You can modify the array's contents. char *a = "string"; creates a character pointer; the string literal is typically stored in read-only memory, and attempting to modify it leads to undefined behavior.

Example 1

#include <iostream>

int main() {
char a[] = "Computer";
std::cout << sizeof(a) << std::endl;
a[1] = 'n';
std::cout << a << std::endl;
return 0;
}
        
Output
9
Cnmputer
Example 2

#include <iostream>

int main() {
char *a = "Computer";
std::cout << sizeof(a) << std::endl;
return 0;
}
        
Output (may vary based on system)
8

Data Breakpoints

Data breakpoints pause program execution when the value at a specific memory location changes. This is useful for debugging memory corruption issues.

new vs. malloc()

new malloc()
C++ operator; calls constructors. C function; doesn't call constructors.
Allocates from the free store. Allocates from the heap.
Throws exceptions on failure. Returns NULL on failure.
Doesn't require sizeof(). Requires sizeof().

Process vs. Thread

Process Thread
Independent program execution. Lightweight unit of execution within a process.
Does not share memory space. Shares memory space with other threads in the same process.
Slower context switching. Faster context switching.
Less efficient inter-process communication. More efficient inter-thread communication.

C++ Shorthand Properties

C++ shorthand properties (e.g., +=, -=) provide concise ways to perform arithmetic operations and assignments.

Function Prototype vs. Definition

A function prototype declares the function's name, return type, and parameters. A function definition provides the actual function code.

Conditional Operator (Ternary Operator)

The conditional operator (?:) is a shorthand for an if-else statement. (condition) ? value_if_true : value_if_false;

volatile Keyword in C

The volatile keyword indicates that a variable's value can change unexpectedly (outside the normal flow of the program), preventing compiler optimizations that might assume the value remains constant.

Operating System (OS)

An operating system (OS) is the fundamental software that manages computer hardware and software resources and provides common services for computer programs. Examples include Windows, macOS, Linux, and others.

Uses of Pointers in C and C++

  • Dynamic memory allocation.
  • Array manipulation.
  • Creating APIs.
  • Implementing data structures.
  • Pass-by-reference.

Call by Pointer vs. Call by Reference

Call by Pointer Call by Reference
Uses pointers to pass arguments; can be reassigned or set to NULL. Uses references to pass arguments; cannot be reassigned after initialization.

calloc() vs. malloc()

malloc() calloc()
Allocates a single block of memory; doesn't initialize it. Allocates multiple blocks of memory; initializes them to zero.
Returns a void pointer. Returns a void pointer.

Virtual Machine

A virtual machine (VM) is a software emulation of a physical computer. It allows you to run operating systems and applications within a host operating system.

Synchronization

Synchronization coordinates the execution of multiple processes or threads to prevent conflicts when accessing shared resources. It addresses issues like deadlocks and race conditions.

Mutex (Mutual Exclusion)

A mutex is a locking mechanism used in multithreading to control access to shared resources. Only one thread can hold the mutex at a time, preventing race conditions.

Reader-Writer Problem

The reader-writer problem describes the challenge of managing concurrent access to a shared resource where multiple readers can access simultaneously, but only one writer can access at a time.

void Keyword

The void keyword indicates the absence of a return type (for functions) or the absence of parameters (for functions).

Exit-Controlled Loop (Post-Test Loop)

An exit-controlled loop checks the loop condition after executing the loop body at least once (e.g., do-while loop).

DNS (Domain Name System) Server

A DNS server translates domain names (e.g., `example.com`) into IP addresses (e.g., `192.0.2.1`), enabling easier access to websites and other network resources.

TCP/IP Model Layers

The TCP/IP model is a networking model with four layers:

  1. Application Layer: Provides network services to applications (HTTP, FTP, SMTP).
  2. Transport Layer: Manages end-to-end communication (TCP, UDP).
  3. Network Layer: Handles routing packets between networks (IP).
  4. Link Layer: Deals with physical transmission of data over a network medium (Ethernet, Wi-Fi).

TCP/IP Model Layers and Protocols

The TCP/IP model is a simplified networking model with four layers:

  1. Link Layer (Network Access Layer): This layer handles the physical transmission of data. Protocols include Ethernet, Token Ring, etc. Data is transmitted as bits and frames.
  2. Internet Layer (Network Layer): This layer breaks data into packets (IP datagrams) and routes them across networks. Key protocols include:
    • IP (Internet Protocol): Handles packet addressing and routing (IPv4 and IPv6 versions exist).
    • ICMP (Internet Control Message Protocol): Reports errors and other network status information.
    • ARP (Address Resolution Protocol): Maps IP addresses to physical MAC addresses.
  3. Transport Layer: This layer manages end-to-end communication between applications. Key protocols include:
    • TCP (Transmission Control Protocol): A reliable, connection-oriented protocol that ensures data integrity and delivery order.
    • UDP (User Datagram Protocol): A connectionless protocol that's faster but doesn't guarantee reliable delivery.
  4. Application Layer: This layer provides network services to applications. Protocols include:
    • HTTP (Hypertext Transfer Protocol)
    • HTTPS (Secure HTTP)
    • FTP (File Transfer Protocol)
    • SSH (Secure Shell)
    • TFTP (Trivial File Transfer Protocol)
    • SMTP (Simple Mail Transfer Protocol)
    • DHCP (Dynamic Host Configuration Protocol)

Function Call Stack

The call stack is a region of memory that stores information about active functions. When a function is called:

  1. Space for the return value is allocated.
  2. Function arguments are pushed onto the stack.
  3. Local variables are allocated space on the stack.

A stack frame is created for each function call. The frame is removed when the function returns. A stack overflow occurs when the stack runs out of space, typically caused by infinite recursion, excessively large stack variables, or very deep recursion.

Pointer Declarations: int* const p and const int* const p

  • int* const p: p is a constant pointer to an integer. The pointer's address cannot be changed, but the value at the address it points to can be modified.
  • const int* const p: p is a constant pointer to a constant integer. Neither the pointer's address nor the value at the address it points to can be changed.

Default Member Functions in C++

C++ classes have six default member functions:

  • Default constructor
  • Destructor
  • Copy constructor
  • Copy assignment operator
  • Move constructor
  • Move assignment operator

Data Structures for Dictionaries

Several data structures can implement a dictionary:

  • Hash table: Provides fast lookups but doesn't support prefix searches or nearest-neighbor searches efficiently.
  • Trie: Supports prefix searches and fast lookups but requires more space.
  • Ternary search tree: Similar to a trie but more space-efficient.
  • BK-tree: Suitable for tasks like spell checking and finding similar words.

Finding Unique Words in a String

You can use a hash table (HashMap in Java, unordered_map in C++), a set (HashSet in Java, unordered_set in C++), or regular expressions to efficiently find unique words in a string containing duplicates.

Tower of Hanoi Algorithm

The Tower of Hanoi is a classic puzzle involving moving disks between pegs. Here's a recursive algorithm:

Algorithm

Tower(n, source, auxiliary, destination) {
  if n == 1 then
    move disk from source to destination
  else
    Tower(n-1, source, destination, auxiliary)
    move disk from source to destination
    Tower(n-1, auxiliary, source, destination)
  endif
}
        

Detecting and Removing a Loop in a Linked List

A loop in a linked list can be detected using the Floyd's cycle-finding algorithm (tortoise and hare). Once a loop is found, you can remove it by traversing the list to find the loop's starting point and setting the next pointer of the last node in the loop to NULL.

Code (C)

// ... (C code to detect and remove a loop in a linked list would go here) ...
        

Data Structure for Excel Spreadsheets

A spreadsheet can be modeled using a 2D array or, more efficiently for large spreadsheets with many empty cells, a sparse matrix or a hash map.

Memory Protection in Operating Systems

Memory protection mechanisms prevent processes from accessing memory they haven't been allocated. This is crucial for system stability and security.

Virtual Memory

Virtual memory is a memory management technique that allows processes to use more memory than is physically available by swapping data between RAM and secondary storage (like a hard drive).

Inserting into a Sorted Linked List

To insert a node into a sorted linked list (ascending order):

  1. If the list is empty, make the new node the head.
  2. If the new node's value is less than the head's value, insert the new node at the beginning.
  3. Otherwise, traverse the list until finding the correct position (where the next node's value is greater than or equal to the new node's value) and insert the new node there.
  4. Traverse the list from the head until you find a node whose value is greater than the new node's value. The node *before* this node is where you'll insert.
  5. Insert the new node after the appropriate node.

Example: Inserting 13 into the sorted list 3, 8, 11, 15, 20 results in the list 3, 8, 11, 13, 15, 20.

Finding Pairs with a Given Sum

This code finds pairs of numbers in an array that add up to a specified sum. The time complexity is O(n²).

Code (C)

#include <stdio.h>

void Pair(int arr[], int n, int sum) {
    for (int i = 0; i < n; i++) {
        for (int j = i + 1; j < n; j++) {
            if (arr[i] + arr[j] == sum) {
                printf("Pair found at positions %d and %d\n", i, j);
            }
        }
    }
}

int main() {
    int arr[] = {5, 8, 9, 1, 6, 2, 7, 3};
    int sum = 11;
    int n = sizeof(arr) / sizeof(arr[0]);
    Pair(arr, n, sum);
    return 0;
}
        
Output
Pair found at positions 0 and 4
Pair found at positions 1 and 7
Pair found at positions 2 and 5

Additional Technical Questions

Candidates may also be asked about:

  • Finding two numbers in an array (1 to n) that have been replaced, in O(n) time.
  • Dividing n people into two groups where everyone in a group knows each other.
  • Implementing a Snake and Ladder game using dynamic programming to find the minimum moves to reach the end.
  • Minimizing the cost of coloring n houses in a row with three colors (R, G, B), such that no adjacent houses have the same color.
  • Reversing a linked list in groups of size k.

HR Round Interview Questions

The HR round focuses on communication and soft skills.

  1. Brief about yourself: Structure your answer to include your education, skills, experience, family (optional), hobbies, and key personality traits. Keep it concise and relevant.
  2. Why do you want to join Adobe?: Highlight Adobe's reputation, your alignment with their values, and your desire to contribute your skills to their growth.
  3. What skills do you have that make you a good candidate?: Emphasize both technical skills and soft skills. Explain how these skills align with the job requirements and how you're different from other candidates.
  4. What is your dream company?: Focus on the characteristics of your ideal company rather than naming a specific competitor. Align these characteristics with Adobe's strengths.
  5. Tell something about your family background: Briefly describe your family members and their professions.
  6. Where do you see yourself in ten years?: Describe your career aspirations and how you plan to achieve them within the company.
  7. What is your unique quality?: Reiterate your strengths and how they make you a good fit for Adobe (similar to question 3).
  8. Are you goal-oriented?: Explain your approach to setting and achieving goals.
  9. What are your greatest strengths and weaknesses?: Choose strengths that are relevant to the job and weaknesses that show self-awareness and a desire for improvement.