VMWare
VMWare | MTS2 | Bengaluru | Jan 2023 | Offer
MTS IIVMWare Phone interview (experienced)
Senior Software EngineerVMware | MTS Java Spring boot | Bengaluru
MTS Java Spring bootVMware | MST-4 | Senior Lead Engineer | All Rounds(Team 1) | Jan end 2021
Senior Lead Software EngineerSummary
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 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.