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)
Sum of Elements in Tree
Given a binary tree, find the sum of all elements in the tree. The sum should be calculated as sum = leftsum + rightsum + currsum.
Insert LinkedList at Nth Position
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 REST Call Invocation Library
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.
Career Goals (5 Years)
Where do you see yourself in the next 5 years?
Handling Uncooperative Teammates
What do you do when a team member (or 'friend' in a work context) doesn't cooperate?
Explain Project Architecture
Explain the complete architecture of a feature you worked on in your previous role.
Unit Test Cases for Feature
Discuss the unit test cases for the feature whose architecture was just explained.
Scaling from 100 to 1M Requests
How would you scale a system from handling 100 requests per second to 1 million requests per second?
SQL Justification for Feature
Justify the choice of SQL database for your feature.
Rate Limiting Design
How would you design and implement rate limiting?
Design Error Message Alerts
How would you design a system for automatic alerts based on error messages?
Debugging Strategies
What are your strategies for checking and identifying bugs?
Code Review Process
How do you conduct and maintain effective code reviews?