VMware | MST-4 | Senior Lead Engineer | All Rounds(Team 1) | Jan end 2021
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.