Salesforce SMTS/LMTS
Summary
I interviewed for SMTS/LMTS at Salesforce, completing several technical rounds including coding, HLD, HM, and LLD. Despite performing well in most rounds, I ultimately did not receive an offer for the LMTS position due to a combination of compensation band issues and a final LLD round.
Full Experience
I took an onsite interview with Salesforce on October 14th, and the entire process spanned approximately 1.5 months. I have 8 years of professional experience.
Round 1: Data Structures & Algorithms
I felt I performed very well in this round. The questions I was asked were:
- Print all paths from the top-left corner to the bottom-right corner of a grid.
- Evaluate an expression, a problem similar to a Calculator-III type question involving complex operations and parentheses.
Round 2: High-Level Design (HLD)
I believed I did extremely well in this round and thought it would lead to a strong hire recommendation. The core problem was to:
- Design a rule engine for a banking system. An example scenario was given: if a user's salary is X and their account is 10 years old, they should be given a Z% discount.
Round 3: Hiring Manager (HM)
This round also went very well. It consisted of:
- A technical discussion about my past projects, where the interviewer asked me to suggest modifications to certain aspects, which I handled successfully.
- A system design question: Design a system for displaying live match scores, akin to what platforms like Hotstar offer. I managed to design this effectively.
- Additionally, there were other typical behavioral questions.
Following these initial rounds, HR contacted me to inform me that I had cleared the SMTS level. However, my desired compensation was higher than their band for SMTS. Consequently, she mentioned that she would process my profile for an LMTS position.
Final Round: Low-Level Design (LLD) for LMTS
This round was an LLD focused on:
- Designing Stack Overflow. I was asked to design the database schema for it, which I did very well, and I also wrote code for parts of the system.
- The discussion then moved to the search functionality. I explained thoroughly what considerations are necessary for such a feature.
- The interviewer then challenged me to write code demonstrating how ElasticSearch performs its searching, specifically asking about the underlying data structures, such as LSM trees. I acknowledge that I did not perform well on this particular aspect.
Despite my strong overall performance, I was ultimately informed that it was a "no-go" for the LMTS position. The HR offered to re-process my profile for another LMTS opening, but I decided to accept the rejection and move on.
Interview Questions (5)
Given a grid, print all possible paths from the top-left corner to the bottom-right corner.
Implement a basic calculator to evaluate a simple expression string that may contain integers, '+', '-', '*', '/', '(', and ')'.
Design a rule engine for a banking system that can apply business rules. For example, if a user's salary is X and their account is 10 years old, they should be given a Z% discount.
Design a system similar to Hotstar for displaying live match scores, considering aspects like real-time updates, concurrency, scalability, and data consistency.
Design the Stack Overflow platform. This included designing the database schema, writing code for core functionalities, and discussing search functionality. I was specifically asked to elaborate on how ElasticSearch performs searching, particularly regarding data structures like LSM trees.