Salesforce LMTS | India | Interview experience | September 2025 | Offer

salesforce logo
salesforce
Lead Software Engineer/LMTS - Backend - Distributed SystemsIndia10.3 yearsOffer
November 7, 202574 reads

Summary

I successfully navigated a comprehensive interview process for the LMTS (Lead Member of Technical Staff) role at Salesforce India and received an offer. The interview journey included a HackerRank screening, followed by several virtual and in-person rounds focusing on Data Structures & Algorithms, Low-Level Design, High-Level Design, and a Hiring Manager discussion.

Full Experience

I was approached by a recruiter for the Lead Software Engineer/LMTS - Backend - Distributed Systems role at Salesforce India, given my ~10.3 years of experience. The entire interview process led to an offer.

Screening Round: Hackerrank

This round consisted of two LeetCode medium-level questions, to be completed in 75 minutes under proctored conditions with my microphone and video on. For the first question, I identified the need for a binary heap (priority queue) and solved it. The second question was trickier, which I tackled using a combination of sorting and math rather than basic DP. I successfully passed all test cases for both problems, and HR contacted me the very next day to advance to the next rounds.

Round 1: DSA

This was a virtual interview conducted via Google Meet. We started with a brief introduction about my work and a discussion on a challenging situation I recently handled, which lasted about 10 minutes. The interviewer then moved to the coding questions.

  • First, I was asked to implement a max stack. I took my time to think and explained my approach thoroughly using Excalidraw, which significantly helped in communicating my thought process. Initially, my solution had a higher time complexity, but the interviewer probed me to reduce it to O(1). Once I figured out the optimal O(1) approach, I wrote the full Java implementation, including various test cases.
  • With about 15 minutes remaining, the interviewer asked me to implement a frequency stack. Again, I used Excalidraw to explain my approach. Due to time constraints, I couldn't write the code, but I sensed the interviewer was convinced by my explanation.

The interviewer concluded by wishing me luck for the next round.

Round 2: LLD

This was another virtual round via Google Meet. We began with a brief discussion (5-6 minutes) about my work, roles, and responsibilities. Following this, we had a 15-17 minute discussion on various database concepts, including sharding, partitioning, and when to choose each. I explained my reservations about sharding due to its inherent complexities and the need for careful implementation. The interviewer also checked for my practical knowledge regarding scalability. Then came the core LLD question:

"Implement a connection pool."

Initially, my mind went blank, but I quickly regained composure and started clarifying the requirements. The key specifications were:

  • A pool of 1000-2000 connections.
  • Developers should be able to request a connection.
  • Provide a free connection if available.
  • Developers can return or close a connection.
  • If a connection is closed, a new one should be created to maintain the pool count.
  • Connections have three states: FREE, BLOCKED, CLOSED.
  • If connections are exhausted, implement a mechanism with a default timeout to reject requests if no connection becomes free within that time.

I implemented this through continuous discussions with the interviewer, thinking out loud, and explaining my thought process before writing any code. The interviewer was particularly interested in how I handled concurrency with limited connections, for which I used a BlockingQueue and ensured methods were synchronous where applicable. For the default timeout, I chose an O(n) approach, mentioning that for larger scales (e.g., 10^6 connections), I would use two different blocking queues for O(1) access, noting it as a TODO. The interviewer appreciated this transparent design choice. I ensured all requirements were met, and we ran out of time. I also used the last 5 minutes to ask my questions.

I received the call for Round 3 two weeks after Round 2.

Round 3: HLD

This was an in-person, whiteboard interview at the office. The interviewer asked me to design a marketing campaign system. As is typical for HLD, I clarified the requirements and started drawing on the whiteboard while explaining my thought process. The interviewer wasn't looking for a complete end-to-end solution but rather deep dives into specific proposals. Every time I drew or proposed something, they would dig deep into the justifications and reasoning. The discussion was very interactive, and the interviewer course-corrected me twice. Most deep dives revolved around distributed transactions, scalability, various distributed architectures, failure handling, self-healing systems, and briefly, the Saga pattern.

Round 4: HM

This was also an in-person, whiteboard interview at the office. The Hiring Manager extensively questioned me about my current project and grilled me on its architecture for about 45 minutes. Following this, we moved to behavioral questions, focusing on my roles, responsibilities, leadership, and mentoring traits. As we walked out, the HM inquired about my notice period. The very next day, HR hinted at positive feedback, and I received the confirmation call the day after.

Interview Questions (4)

Q1
Implement Max Stack
Data Structures & Algorithms

The interviewer asked me to implement a Max Stack. I explained my approach using drawings and iteratively optimized it to achieve O(1) time complexity for all operations. After finalizing the optimal solution, I proceeded to write the fully functional Java code and included various test cases.

Q2
Implement Frequency Stack
Data Structures & Algorithms

In the remaining 15 minutes, the interviewer asked me to implement a Frequency Stack. I focused on explaining my approach using Excalidraw drawings, as there wasn't enough time to write the full code.

Q3
Implement a Connection Pool
System Design

The core LLD question was to implement a connection pool with specific requirements: manage 1000-2000 connections, handle requests for connections, return/close connections, maintain connection count, manage three states (FREE, BLOCKED, CLOSED), and implement a default timeout for connection requests if the pool is exhausted.

Q4
Design a Marketing Campaign System
System Design

The HLD round required me to design a marketing campaign system. The interviewer was particularly interested in deep dives into specific architectural components rather than a superficial overview. The discussion heavily focused on justifying proposals and exploring technical nuances.

Discussion (0)

Share your thoughts and ask questions

Join the Discussion

Sign in with Google to share your thoughts and ask questions

No comments yet

Be the first to share your thoughts and start the discussion!