Adobe Interview Experience | MTS-2 (1.5 years experienced)

• Difficulty Level : Hard
• Last Updated : 20 Aug, 2021

Round 1: It was an online test time duration for this round was 75min. We were given 22 questions that conations:

• 15 aptitude logical reasoning questions.
• 5 C++ questions.
• 2 coding questions.
1. Given a list of names and votes… output the winner with maximum votes.
2. Consider a string, s = “abc”. An alphabetically-ordered sequence of substrings of s would be {“a”, “ab”, “abc”, “b”, “bc”, “c”}. If we reduce this sequence to only those substrings that start with a vowel and end with a consonant, we’re left with {“ab”, “abc”}. The alphabetically first element in this reduced list is “ab”, and the alphabetically last element is “abc”. As a reminder:
Vowels: a, e, i, o, and u.
Consonants: b, c, d, f, g, h, j, k, l, m, n, p, q, r, s, t, v, w, x, y, and z.

I was asked to write the code for every question. The interviewers dry ran every code and asked me to optimize the solution. I was asked about the space complexity and time complexity for every solution that I gave.

Round 2:

• k largest(or smallest) elements in an array
• Median in a stream of integers (running integers)
• Given a dictionary of words and two words A and B, find the minimum path required to convert A to B. Only one character can be changed at a time while going from A to B and every word thus formed must be a valid dictionary word.Example:
If dictionary = {
"cat", "rat", "hat", "sag", "bag", "bug", "dog", "hog", "hot", "dot",
"rot", "lot", "log", "cry", "pry", "fry", "fat", "fog", "pot", "fat"
}
A = "cat",
B = "dog",
then shortest path from A to B should be printed as:
cat->hat->hot->dot->dog

Round 3: This was a Technical round.

Round 4: This was a Technical round.

• Implement 1-D array dynamically
• Implement 2-D array dynamically using a single pointer
• Implement 2-D array dynamically using a double pointer
• Implement memcpy
• Implement strcmp
• Print 2-D array in spiral form

Round 5: This was a Technical round.

• Given N cubes(6 faces), each face of the cubes has an alphabet written on it. You have to find out whether a given paragraph can be formed with those cubes or not.
• How will you modify the solution for the above question when W can be considered as M, N can be considered as Z(mirror alphabets)
• Given a road of width w and length l. There are perfect circular potholes on the road. You are given the radius and center of each pothole. You need to find out whether you can cross the road or not.

Round 6: This was a Technical round(Managerial)

• Design an elevator
• Write an algorithm to assign an elevator to a user.
• Implement a binary search tree in a given 100 bytes of memory.
• How will you handle the internal fragmentation in the provided memory area for the solution to the above question? Internal fragmentation will occur after the deletion of nodes
• He gave me a case study of his team-related work and ask me to optimize it.

Round 7: This was a Technical round(Directors)

• It contains 2 programs:Program 1:
int *p;
p = (int *)malloc(sizeof(int));
printf("%x\n", p); // prints 0x12345
*p = 1;
printf("%d\n, *p);

Program 2:

int *p;
p = 0x12345; // assigns the address stored in p of program 1
*p = 2;
printf("%d\n, *p);
signal(x);

What is the output of printf() statements of both programs 1 and 2? Why program 2 will fail?