VMware | MTS Java Spring boot | Bengaluru
Summary
I recently interviewed at VMware for an MTS Java Spring Boot role in Bengaluru. The interview process consisted of a HackerRank test, a Java technical interview, and a System Design discussion. Despite receiving positive feedback in individual rounds, I was ultimately rejected.
Full Experience
My interview journey at VMware for the MTS Java Spring Boot position started with a HackerRank test, which was 90 minutes long. I was given two coding questions: a medium-level string problem that was a variant of 'String Compression', and another problem where I had to add two strings as numbers, for example, a='120' and b='45'.
The second round was a Java Technical Interview. This round delved deep into core Java features, followed by a detailed discussion on the Java Collections Framework. The interviewer asked me to explain the differences between ArrayList and primitive arrays, and also explored the internal working mechanisms of HashMap. We also covered various Multithreading concepts. I received positive feedback after completing this round.
The final round was a Technical Interview focused on High-Level Design, lasting approximately 60 minutes. This round involved more discussion-oriented questions. I was questioned on Operating System concepts like Virtual Memory, Thrashing, and Semaphores. Database Management System questions included explaining ACID properties and how to find Nth Salaries. Additionally, I was asked to design a 'FailProne' method. While I received positive feedback for this round, I admit I struggled with some of the questions and couldn't answer them properly. Despite the positive feedback from the individual rounds, the final verdict was a rejection.
Interview Questions (10)
Given an array of characters, compress it in-place. The length after compression must always be less than or equal to the original array. Every element of the array should be a character (not int) of length 1. After you are done modifying the input array in-place, return the new length of the array.
Given two strings representing numbers, for example, a = "120" and b = "45", write a function to add them as if they were actual numbers and return their sum as a string. You are not allowed to convert the strings to integers directly.
Discuss the key features and characteristics of the Java programming language.
Provide a detailed discussion on the Java Collections Framework, including its interfaces, core classes, and common use cases.
Explain the fundamental differences between Java's ArrayList and a primitive array, covering aspects such as type safety, resizing, and performance.
Describe the internal working mechanisms of Java's HashMap, including concepts like hashing, collision resolution (e.g., chaining/open addressing), and resizing.
Discuss fundamental concepts related to Multithreading in Java, such as threads, processes, synchronization mechanisms (locks, semaphores, monitors), and potential concurrency issues.
Explain the concepts of Virtual Memory, Thrashing, and Semaphores within the context of Operating Systems.
Discuss the ACID properties in database transactions and explain different approaches to find the Nth highest salary in a database.
Design a method that inherently has failure points and discuss strategies to make it more robust and resilient in a production environment.
Preparation Tips
My main tip for preparation is to thoroughly review basic concepts across various domains. I focused on strengthening my understanding of core Java features, data structures, algorithms, and fundamental system design principles, as these were heavily tested throughout the interview process.