VMware | MTS3 | Bangalore | July 2023 [Offer]
MTS IIIVMWare
VMWare | MTS2 | Bengaluru | Jan 2023 | Offer
MTS IIVMware | SMTS | 8.5 yoe | Interview Experience [Rejected]
MTS IIVMWare Phone interview (experienced)
Senior Software Engineer2 more experiences below
Summary
I successfully interviewed for the MTS3 position at VMware in Bangalore in July 2023. The rigorous process involved five rounds covering technical problem-solving, high-level and low-level system design, and a final hiring manager discussion, culminating in a job offer.
Full Experience
Round 1 - Technical (Screening Interview on Zoom) - 30min (extended by 15min)
This round began with my introduction and an overview of my current project. The interviewer then asked me to rate myself on Java (Java 8) and front-end technologies (like React/Angular/JavaScript). I rated myself pretty low on front-end as I primarily work on backend, though I had some full-stack experience. Being honest was a key tip here.
I was then given a medium-level question, which was a modified version of Sort Colors but with custom objects. A follow-up question asked me to make the solution generic for any type of objects. Additionally, there was a question related to Java 8 functional programming (Stream API) with follow-up questions, including modifying the solution to be generic.
I was able to answer all the questions very well and received a callback in one day for the next round.
Round 2 - Technical (CodePair) - 90min (Finished in 70min)
After an introduction, the interviewer presented a custom problem (not a LeetCode-like problem) to check my knowledge of SOLID principles, generics in Java, and basics. Following this, I was given a LeetCode Medium problem: Online Stock Span.
I answered all questions very well and received a callback the next day for the next two rounds: High-Level Design (HLD) and Low-Level Design (LLD).
Round 3 - High Level Design (CodePair) - 90min
This round started with an introduction and a discussion about my current project and its architecture. The main task was to design and discuss a solution for managing long-running operations. The interviewer wanted to delve into:
- REST APIs: How I would design the APIs.
- Classes: How I would structure the classes.
- Design: How I would design a robust solution.
- Status/Outcome Tracking: How to manage and track the state/status of submitted asynchronous jobs throughout their lifespan and afterwards.
- TimeOut Mechanism: Implementing an optional timeout for job processing and handling timeouts.
- Retry Mechanism: Similar to the timeout mechanism.
- Limit on parallelism (configurable): How to limit/control the number of parallel processes the system allows at a time.
Having already implemented a similar solution in my current project, I found this round easier. I was able to answer all questions very well.
Round 4 - Low Level Design (CodePair) - 90min (Finished in 70min)
This round consisted of two questions:
- Designing a Retry Mechanism for HTTP calls.
- Given a SQL DB table with employee data (id, fname, lname, dept, managerId where managerId is a self-referencing ID), design a suitable data structure to store this static data. This data structure needed to efficiently support two operations: search-by-name (e.g.,
name.contains("abc")returning a list of employee IDs) and search-by-emp-id (returning employee details).
I successfully answered both questions and received a call back the next day for the Hiring Manager round.
Round 5 - Hiring Manager Round - 90min (Finished in 30min)
I prepared for a mix of technical, behavioral, managerial, and situation-based questions, as I work as a Tech Lead. Although the interview invite included a CodePair link, the round was primarily a discussion. The Hiring Manager was very pleasant, and we discussed their expectations for the role, the team's work, the project, and my career aspirations. Researching the organization beforehand helped me make a great impression in this round.
The entire interview process took about 10 days, which was accelerated by HR due to my impending release date. Ultimately, I was selected and received a job offer.
Interview Questions (6)
A question related to Java 8 functional programming, specifically using the Stream API. The interviewer asked to modify the solution to be generic.
Design an algorithm that collects daily price quotes for some stock and returns the span of that stock's price for the current day. The span of the stock's price today is defined as the maximum number of consecutive days (starting from today and going backward) for which the price of the stock was less than or equal to today's price.
Design a robust system for managing long-running asynchronous operations. The discussion focused on:
- REST APIs: How to design the APIs.
- Classes: How to structure the classes.
- Design: How to design a robust solution.
- Status/Outcome Tracking: How to manage and track the state/status of submitted async jobs throughout their lifespan and afterwards.
- TimeOut Mechanism: Implementing an optional timeout for job processing and handling timeouts.
- Retry Mechanism: Similar to timeout.
- Limit on parallelism (configurable): How to limit/control the number of parallel processes the system allows at a time.
Design a retry mechanism for HTTP calls, considering aspects such as idempotency, back-off strategies, and error handling.
Given a SQL database table containing Employee objects (id, fname, lname, dept, managerId where managerId references another employee in the same table), design a data structure to store this static data. The data structure should efficiently support two operations:
- Operation 1. Search by name: Given a partial name (e.g.,
name.contains("abc")), return a list of employee IDs. - Operation 2. Search by employee ID: Given an employee ID, return the full details of that employee.
Preparation Tips
My preparation involved leveraging my experience with similar solutions implemented in current projects, especially for high-level design. Additionally, I conducted thorough research about the organization, which proved beneficial during the hiring manager round.
Summary
I had an interview round with VMWare where I was asked four data structure and algorithm questions in a rapid-fire 35-minute session, covering linked lists, graph cycles, array manipulation, and a specific LeetCode problem. The interviewer expected working code and seemed to have fixed solutions in mind.
Full Experience
My interview at VMWare was a fast-paced experience. In just 35 minutes, I was put through a coding round where four distinct data structure and algorithm problems were posed. It felt quite intense, and I noticed the interviewer wasn't very open to discussing alternative approaches; they seemed to be looking for particular solutions. For the first question, I was explicitly told that working code was a requirement. It definitely felt like a direct assessment of my coding speed and problem-solving skills under pressure.
Interview Questions (4)
Given two linked lists, each representing a number with digits stored in non-reverse order (most significant digit first), add the two numbers and return the sum as a linked list. A critical constraint was that the linked lists cannot be reversed before performing the addition.
I was asked to describe or implement an algorithm to detect the presence of a cycle in a given undirected graph.
Given an array of numbers, which may include zeros, negative numbers, and duplicates, the task was to find the smallest positive integer (greater than 0) that is not present in the array. For example, if the input array is [0, -1, 1, 4, 5], the minimum missing positive number is 2.
Summary
I recently interviewed for an MTS-2 role at VMWare through a referral, undergoing three intensive virtual rounds focused on coding, system design, and behavioral aspects. I am pleased to share that I successfully received an offer within a month of my interviews.
Full Experience
Round 1 - Technical Round [60 mins]: Coding (Data Structures & Algorithms)
The first round began with a brief introduction from both sides, after which I was asked to describe the projects I worked on at Goldman Sachs, followed by some in-depth follow-up questions. For coding, the interviewer first asked me to merge two sorted arrays and then extended it to merging k sorted arrays, which I had to code. Additionally, there were fundamental questions covering the difference between stack and heap memory, advantages of using a vector, and the efficiency of list versus array traversals.
Round 2 - Technical Round [60 mins]: Coding (Data Structures & Algorithms) + System Design
This round also started with a discussion about my projects at Goldman Sachs. For coding, I was given the 'Longest Substring with At Most K Distinct Characters' problem. The system design part involved a comprehensive discussion on various topics, including vertical and horizontal scaling, cache systems, LRU Cache implementation, microservices architecture, load balancing, and master-slave database architecture. A notable question was about how I would prevent a DDoS attack in a software system.
Round 3 - Hiring Manager Round: Behavioral Questions
I was shortlisted for this round on January 27, 2023, and it was scheduled for January 30, 2023. This round was primarily behavioral, covering a wide range of topics:
- Introduce yourself.
- What projects have you worked on?
- How would you handle a conflict with a team member?
- How was your manager's feedback, and how do you handle positive and negative feedback?
- How do you rate yourself in Java from 1-10, and how would you improve your Java skills?
- What was your proudest moment in your career?
- What is the most recent skill you have learned?
- What challenges did you face early in your career, and how did you overcome them?
- How do you handle pressure and high workload?
- Define success according to you.
- How has your work helped your users (i.e., explain the impact of your projects)?
- Do you have any questions for me?
I was very happy to receive an offer about a month after these rounds.
Interview Questions (22)
Discuss the advantages of using std::vector in C++ compared to raw arrays or other dynamic data structures like std::list. Consider aspects such as memory management, performance, and ease of use.
Design and implement a Least Recently Used (LRU) cache. It should support the following operations: get and put. get(key) will retrieve the value of the key if it exists in the cache, otherwise return -1. put(key, value) will insert the key-value pair or update the value if the key already exists. When the cache reaches its capacity, it should invalidate the least recently used item before inserting a new item.
Explain the concepts of vertical scaling (scaling up) and horizontal scaling (scaling out) in system design. Discuss their advantages, disadvantages, appropriate use cases, and limitations.
Discuss key concepts in system design including Microservices architecture, Load Balancing techniques, and Master-Slave architecture for databases. Explain their purposes, benefits, drawbacks, and how they contribute to a robust and scalable system.
Tell me about yourself, highlighting your background, experience, and what brings you to this interview.
What all projects have you worked on? Be prepared to discuss your contributions, the technologies used, challenges faced, and outcomes achieved for relevant projects.
Describe a situation where you had a conflict with a team member. How did you handle it, and what was the outcome? What did you learn from the experience?
How do you typically receive and respond to feedback from your manager, both positive and constructive? Can you share an example of how you used feedback to improve?
How do you rate yourself in Java on a scale from 1 to 10? Based on your self-assessment, what specific steps would you take to further improve your Java skills?
Describe your proudest moment or accomplishment in your career. What made it significant, and what was your role in achieving it?
What is the most recent skill or technology you have learned? Why did you decide to learn it, and how have you applied it?
What challenges did you face at the beginning of your career, and how did you overcome them? What lessons did you learn from those experiences?
Describe how you handle pressure and manage a high workload effectively. Can you provide an example of a time you successfully navigated a demanding period?
How do you define success in a professional context, both for yourself and for a team or project?
Explain how your past projects or contributions have directly benefited or positively impacted users or stakeholders.
This is your opportunity to ask questions to the interviewer about the role, team, company culture, or next steps.
Summary
I applied for a SMTS role at VMware via LinkedIn and proceeded through six rounds, including technical coding, system design (LLD and HLD), and a final hiring manager discussion. Despite performing well in most rounds, I was ultimately rejected in the last stage due to a specific security question.
Full Experience
I started my journey by applying for the SMTS position at VMware through LinkedIn. Within a week, I received a mail from HR, signaling the start of a rather extensive interview process that lasted over a month.
My first hurdle was an Online Assessment on HackerRank, which consisted of two coding questions (rated easy/medium), one SQL query problem, and a medium-difficulty multithreading question.
Next, I had a Virtual Round where I tackled two medium-level coding problems on a shared HackerRank IDE. The first was to find a triplet in an array that sums to a given value, and the second involved converting a linked list into a complete binary tree. I executed both problems with the test cases provided by the interviewer.
The third Virtual Round was quite comprehensive. It started with a multithreading problem where I was asked to implement a countdown latch. Following that, there was a Low-Level Design (LLD) discussion for a Snake and Ladder game. I had to implement a method to initialize the game board, considering custom board sizes, user-defined numbers of snakes and ladders, and ensuring all snakes and ladders had unique start and end points, among other specific conditions.
A significant part of the process was the two-hour High-Level Design discussion in the fourth Virtual Round. The scenario involved designing a system to consume message files from an external source. These compressed files, ranging from 1-50 MB uncompressed, needed to be processed and passed to a downstream system. The challenge was to handle billions of such messages per hour with limited hardware, all while accounting for potential downstream latencies. I felt this discussion went well, and the interviewer seemed satisfied.
The fifth Virtual Round included another coding question, which was a classic 'Merge Intervals' problem. This was followed by an LLD discussion on a batch processing system, similar to a cron job. This round also felt positive.
Finally, I reached the sixth Virtual Round with the Hiring Manager. This was primarily a verbal discussion where I talked about my current projects and their architecture. The conversation then shifted to security implementations for a system. I presented my approach, but it seemed the interviewer was looking for something very specific that I hadn't memorized or deeply explored, which unfortunately played a crucial role in the outcome.
After such a long and involved interview journey, taking over a month, it was tough to digest the rejection, especially when everything had seemingly gone so well up until that last specific question.
Interview Questions (8)
Given an array of numbers, find a triplet (three numbers) whose sum equals a given target value.
Convert a given singly linked list into a complete binary tree.
Implement a CountDownLatch class or mechanism using multithreading concepts.
Design the Low-Level Design (LLD) for a Snake and Ladder game. Specifically, implement a method to initialize the game board with the following conditions:
- Custom size of the board.
- User-defined number of snakes and ladders.
- All snakes and ladders should have unique start and end points (e.g., no two ladders can have the same start point, no two snakes can bite from the same cell).
- Additional related conditions were also implied.
Design a high-level system that consumes message files generated by an external system. These files are compressed, with uncompressed sizes ranging from 1 MB to 50 MB. The system must consume billions of such messages per hour using limited hardware and pass the processed files to a downstream system, considering its potential latencies.
Given a collection of intervals, merge all overlapping intervals.
Design the Low-Level Design (LLD) for a batch processing system similar to cron.
Discuss security implementations for a given system, including specific approaches and best practices.
Summary
I experienced a frustrating 1-hour phone interview with VMWare for a Senior Software Engineer role, where the interviewer struggled with basic technical understanding and test execution, leading to significant wasted time.
Full Experience
I had a 1-hour phone interview with VMWare before Thanksgiving for a Senior role. The main question revolved around finding the lowest common ancestor (LCA) of two nodes. Initially, I thought it was the version where both nodes are guaranteed to be present (LeetCode #236), but upon clarification, the interviewer specified that nodes might or might not be in the tree (similar to LeetCode #1644).
I proposed two solutions: a two-pass approach to first verify node presence and then find LCA, and a single-pass solution with extra logic. The interviewer asked me to solve either one. I explained the logic for the two-pass solution, coded it, and manually tested it with several examples.
Despite my thorough explanation and manual testing, I felt the interviewer didn't grasp the code flow. They then asked me to write test cases and hardcode a tree to run the code, which I found really weird as interviewers should have some basic understanding of working code. This process wasted over 10 minutes of my interview time.
After successfully running all test cases, they asked for an explanation of the single-pass solution. Again, the interviewer struggled with providing a tree example, consuming more time. I explained the logic and execution via a few test cases and then coded the single-pass solution.
Finally, they asked me to run this second solution in Codility. With all the examples and tree illustrations, there were some compilation issues. After cleaning up the execution area, they wanted to see the output, but we ran out of time. I strongly believe we wouldn't have run out of time if we hadn't wasted 10+ minutes on hardcoding a tree and basic code execution.
Interview Questions (2)
A clarification to the initial LCA problem: the given nodes p and q may or may not be present in the tree. If only one node is present, that node is considered the LCA. If neither is present, the function should return null. (This problem variation was referenced as LeetCode #1644, which typically deals with scenarios like parent pointers or BSTs where nodes might not exist, but the core requirement here was handling optional node presence).
Preparation Tips
My preparation largely stems from extensive practice, having solved over 1650 problems on LeetCode. Additionally, I have significant prior interview experience, successfully navigating coding interviews at companies like Google, Facebook, and Apple for both phone screens and onsite rounds, which has honed my coding and problem-solving skills.
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.
Summary
I was contacted by a recruiter for a Senior Lead Software Engineer role at VMware, Bangalore. After multiple rounds of interviews, which included Data Structures & Algorithms, Low-Level Design, System Design, and architectural discussions, I was ultimately not offered the position despite positive feedback on my skills due to tough competition.
Full Experience
I received a recruitment message on LinkedIn for a Senior Lead Software Engineer position in Bangalore. I requested preparation time due to planned holidays, which took about 3-4 weeks. Two days after returning from trekking, I had my first interview round. I received positive feedback from the recruiter within 3 hours, indicating I would proceed to further rounds, which were all scheduled for the following week. Out of the three candidates who made it to the final round, I ultimately received a rejection. The feedback stated that while they were impressed by my skills, accomplishments, and achievements, due to tough competition, I wouldn't be offered the role, and there were no similar positions available at the time.
Round 1: Data Structures & Algorithms
Question 1: Valid Parentheses Problem
Question 2: Subarray Pair for Given Sum K
Round 2: Data Structures & Algorithms
Question 1: Boundary of Binary Tree
Question 2: Cycle Detection in Array Mapping
Round 3: Low-Level Design & Project Specifics
Discussion on Java versions, Lambda expressions, and Streaming API.
Coding task using Lambda/Streaming.
Difference between float and double.
In-depth discussion on mutual funds and fund investment from my current project.
Backend logic for a fund switch system and transaction handling.
System Design for a Vending Machine.
Round 4: Architect Round
JPA Many-to-Many annotations and E2E code implementation.
Authentication and authorization mechanisms.
Spring framework dependency injection scenario using
@Autowiredand@Inject.A programming problem involving combining elements from two sorted arrays with specific constraints.
Interview Questions (15)
Given an array of integers and a target sum k, find a pair of elements in the array that sum up to k. If using a map approach, handle duplicate elements. Example: I/p: 1, 2,5, 4, 3 K=7 -> O/p: 2,5. I/p 2 : 3, 4, 1 k=6 -> Output: empty. I/p 3: 3, 2, 4, 3, 1, 3 k=6 -> O/p: 3,3. Similar to LeetCode's Two Sum.
Given a default index array (0,1,2,3,4,5,6,7,...) and an int[] array where int[i] gives the next index. Find a cycle and print the node count within that cycle. Examples: int[]-> 2,4,4,5,0,8,9,6 -> 3, int[]-> 2,4,4,5,5,6,2,6 -> 4.
Explain what lambda expressions are and how to write them in Java.
Discuss Java Streaming API, including what streaming is and its different types.
Given an integer array, write a method to return the count of even and odd integers using Java Lambda expressions or the Streaming API.
Explain the difference between float and double data types in Java.
Discuss the backend logic for implementing a fund switch system. Specifically, would you handle it in one transaction or two?
For handling multiple transactions, would you process them in parallel or one by one?
Design a Vending Machine with the following user roles:
- Operator: Refill Vending Machine, Take Money
- Administrator: Control Vending Machine Administrative Tasks (e.g., Product Management, Machine Configuration like Products Supported, Money), User Roles/Password
- End User (Customer): View Product, Select Product, Buy. Methods to Accept Money From End User, Perform Validation and Return Back Amount (if applicable).
Primary Requirements:
- Should support RBAC Validation.
- Support Administrator Functions like Product Management, Money Control, RBAC.
- Support End User functions (Allow User to View Product, Select Product and Buy - Method To Accept Money From End User, Perform Validation and Return Back Amount if applicable).
Secondary Requirements:
- How to extend this to support Multiple User Roles, Product, and Currency.
- NFRs like Scale.
- How to Manage Vending Machine Configuration from a Central Location (Configuration Like - Products Supported, Current Availability, State).
Discuss the Usage of SOLID Principles and Design Patterns.
How to write Many-to-Many annotations in JPA. Provide end-to-end code for JPA with a Many-to-Many relation, specifically for multiple students selecting multiple subjects. The candidate mentions keeping it simple with a relation table rather than using Many-to-Many relation annotation usage directly.
Discussion on authentication and authorization. What do you pass to validate a request (e.g., username/password/token)? How do you assure that an incoming request is a valid request?
Given a Spring Boot code snippet:
@Component Interface I1class A implements I1
Class B implements I2
main() {
@Autowired I1 i;
//Will this compile, if not then what can make this work //Requirement is to inject only class A
The expected solution is to achieve this through @Inject on the class level.
Given two sorted arrays, a and b.
a = 10, 11, 22
b = 6, 8, 12, 24
The task is to form combinations adhering to these rules:
- Both arrays are sorted.
- First element should be from A.
- Last element should be from B.
- Combination should be in ascending order.
- Elements have to be subsequent from each array.
Expected Output:
10, 12 10, 12, 22, 24 10, 2411, 12 11, 12, 22, 24 11, 24
22, 24
Preparation Tips
I was contacted by a recruiter and asked for 3-4 weeks of preparation time due to planned holidays. My preparation schedule was set around these dates.