Adobe Interview Experience (MTS-2)
Summary
I interviewed for an MTS-2 role at Adobe after receiving a referral. The process included rounds on DSA, LLD, and system design, where I encountered various algorithmic and design challenges, but ultimately received a rejection.
Full Experience
Round 1: Data Structures & Algorithms
I was presented with two questions. The first problem asked me to minimize the sum of array elements after performing a division operation K times. I solved this LeetCode easy question using a PriorityQueue, achieving a time complexity of O(N log N) and space complexity of O(N).
The second question was a slight variation of the classic Knapsack Problem, which I approached with a 2D DP solution and some optimizations, resulting in O(N) time and O(1) space complexity.
Round 2: Low-Level Design (LLD)
In this round, I was asked to design a configuration management service, detailing the class designs, attributes, methods, and appropriate design patterns.
Round 3: Low-Level Design (LLD)
This round also focused on LLD and included two questions. The first was to design an auto-complete search system that predicts Top K elements based on search frequency. I tackled this problem using a Trie data structure with some variations, identifying it as a LeetCode hard question. The second question involved designing the Java implementations for Linux commands like mkdir, ls, and delete for files and directories. I used a Tree Data Structure for this, but unfortunately, I could only complete one function within the given time.
Despite my efforts, the final verdict was a rejection.
Interview Questions (4)
Given an array of integers, you can perform the following sequence of operations K times: 1. Fetch an element from the array. 2. Divide it by 2 (ceil division). 3. Put the element back into the array. The goal is to minimize the sum of all elements finally in the array after K operations.
Design a configuration management service. I needed to share the class designs, attributes, methods, and design patterns.
Design an auto-complete search system with Top K elements as predictions. The Top-K should be based on the frequency of search.
Design the Java implementations for Linux commands related to file and directory creation, navigation, and deletion (e.g., mkdir, ls, delete).