Walmart || SE3 || Interview Experience || Software Engineer 3 Bangalore
Summary
I recently interviewed with Walmart for a Software Engineer 3 position in Bangalore, completing four rounds covering DSA, Low-Level Design, Hiring Manager questions, and HR. I'm pleased to share that I received an offer.
Full Experience
I recently completed an interview process with Walmart for a Software Engineer 3 role in Bangalore, which was structured across four distinct rounds.
Round 1: Data Structures and Algorithms
The first round focused on my DSA skills, and I was asked to code in Java, even though I generally prefer C++ STL for competitive programming. The interviewer had me write the code directly in Notepad. I was given two problems:- First, to find the sum of elements in a tree, specifically stating that the sum should be calculated as
sum = leftsum + rightsum + currsum. This was a fairly straightforward tree traversal problem. - Second, I had to implement a function to insert
linkedlist2intolinkedlist1at thenthposition, ensuring I handled all possible edge cases carefully.
Round 2: Low-Level Design (LLD)
This round challenged me to design a library capable of invoking REST calls to external systems. The requirements were quite detailed:Functional Requirements:
- The library should provide clients with methods to invoke both POST and GET calls.
- It must allow clients to select their preferred underlying HTTP client implementation during invocation, offering choices like Spring RestTemplate, Apache HTTP Client, or OkHttp client.
Non-Functional Requirements:
- The design needed to strictly adhere to Object-Oriented Programming (OOP) principles and SOLID principles.
- It should be easy to add new HTTP client implementations in the future.
- The code produced should be thoroughly unit testable.
During the design discussion, I faced several probing follow-up questions:
- I was asked about which design patterns I would use.
- The interviewer questioned my choice of the Factory pattern, asking why not Strategy, and if the Composite pattern could be applied.
- A classic question on when to use Factory versus Strategy patterns was posed.
- Finally, a tricky scenario: an existing interface has three abstract methods, two concrete implementations are already in production, and a new implementation only needs to implement two of these methods. I had to explain how I would handle this without breaking existing code or introducing unnecessary complexity.
Round 3: Hiring Manager (HM) Round
The third round was with a Hiring Manager and covered a broad range of topics, from career aspirations to technical deep-dives into my past work and general system design principles:- I was asked about my five-year career plan.
- How I would handle a situation where a team member isn't cooperating.
- I had to explain the complete architecture of a significant feature I developed in my previous role.
- This was followed by questions specifically about the unit test cases for that feature.
- We discussed how to scale a system from handling 100 requests per second to 1 million requests per second.
- I had to justify my choice of a SQL database for a particular feature.
- The interviewer asked how I would implement rate limiting.
- I was also challenged to design a system for automatic alerts based on error messages.
- My approach to checking and identifying bugs was questioned.
- Finally, we discussed my process for conducting and maintaining effective code reviews.
Round 4: HR Round
The final round was a straightforward HR discussion, covering basic HR-related questions.I am happy to report that I received an offer from Walmart. My current compensation for 2.5 years of experience is 25.5 CTC (20.5 Base, 2 Variable, 3 Joining Bonus). The offer from Walmart is 25 Base, 5 annual bonus, and 6L RSUs over 3 years.
Interview Questions (13)
Given a binary tree, find the sum of all elements in the tree. The sum should be calculated as sum = leftsum + rightsum + currsum.
Given two linked lists, linkedlist1 and linkedlist2, insert linkedlist2 into linkedlist1 at the nth position. Ensure all edge cases are handled (e.g., n is 0, n is greater than the length of linkedlist1, linkedlist2 is empty).
Design a library capable of invoking REST calls to external systems. The library should:
Functional Requirements:
- Provide clients with methods to invoke POST and GET calls.
- Allow the client to select the choice of underlying HTTP client implementation during invocation (e.g., Spring RestTemplate, Apache HTTP Client, OkHttp client).
- The design should adhere to OOP principles and SOLID principles.
- It should be easy to add new HTTP client implementations.
- The code should be unit testable.
Follow-up questions on the design included:
- Which design patterns should be used?
- Justify the choice of Factory pattern, and discuss why Strategy or Composite patterns might not be suitable.
- When to use Factory vs. Strategy pattern.
- How to handle a scenario where an existing interface has 3 abstract methods, two concrete implementations are in production, and a new implementation only needs to implement 2 of these methods.
Where do you see yourself in the next 5 years?
What do you do when a team member (or 'friend' in a work context) doesn't cooperate?
Explain the complete architecture of a feature you worked on in your previous role.
Discuss the unit test cases for the feature whose architecture was just explained.
How would you scale a system from handling 100 requests per second to 1 million requests per second?
Justify the choice of SQL database for your feature.
How would you design and implement rate limiting?
How would you design a system for automatic alerts based on error messages?
What are your strategies for checking and identifying bugs?
How do you conduct and maintain effective code reviews?