Salesforce | SMTS | Interview Experience | Aug 2025
Summary
I interviewed for the SMTS role at Salesforce in August 2025, undergoing an Online Assessment, Data Structure & Algorithms round, High-Level Design, and a Hiring Manager round. I successfully navigated the technical challenges, received positive feedback for the system design, and am now awaiting the final decision.
Full Experience
Salesforce SMTS Interview loop (Aug 2025)
YOE: 6 Yrs Current Company: Reputable Tech Company Location: Bangalore
Round 0 (July last week):
Online Assessment: Solved both the problems successfully. And got a call from recruiter that I have cleared this round and he will contact me for the next rounds
Question 1:
A classification system evaluates whether given texts are spam based on a list of spam words.
A text is labeled “spam” if it contains at least two spam words (each occurrence of a spam word in the text counts toward the total).
Spam word matching is case-sensitive.
Example:
texts = {
"This is a limited offer just for you",
"Win cash now! Click here to claim your prize",
"Hello friend, just checking in",
"Congratulations! You have won a free gift"
};
spamWords = {
"offer", "cash", "Click", "prize", "Congratulations", "free"
};
Output:
["not_spam", "spam", "not_spam", "spam"]
Function Signature:
vector<string> classifyTexts(vector<string> texts, vector<string> spamWords);
Input:
texts: a list of strings (the texts to evaluate).
spamWords: a list of strings (the spam words).
Output:
A list of strings, each either "spam" or "not_spam" for each text.
Constraints:
1 ≤ n ≤ 10^3 (number of texts)
1 ≤ k ≤ 10^5 (number of spam words)
1 ≤ len(text) ≤ 10^5
1 ≤ len(spamWord) ≤ 10^5
Combined length of all spam words does not exceed 10^7
Question 2:
A popular social media platform provides a feature to connect people online. Connections between users are represented as an undirected graph, where each node represents a user, and edges represent connections between users. If a user is directly or indirectly connected to another user, they can view their profile.
The network consists of nodes:
- Each pair of connections is represented from 1 to nodes.
- Each pair of connections is given by two arrays u and v, where u[i] is connected to v[i].
- The queries array contains a list of user IDs. For each user ID in the queries array, return the number of profiles that user can view.
A user can view their own profile.
The result should be an array of integers where the i-th value corresponds to the result for the i-th query.
Example
Input:
edges:
u = [2, 1, 4, 5]
v = [1, 3, 5, 6]
queries = [1, 5, 7]
Output:
[3, 3, 1]
Round 1 (Data Structure and Algorithms):
The interviewer was a new joinee in the Salesforce and she came with a plan to ask 2 questions and pass only when both the answers will be running for all her test cases. There was a shadow with her, who was a senior and asked a few important questions at the end.
Question 1:
Longest Substring Without Repeting Characters
leetcode: https://leetcode.com/problems/longest-substring-without-repeating-characters/description/
Note: I initially said the space complexity would be O(N) in the worst case. The shadow interviewer nudged me on this and I corrected myself as it can go at max of number of ASCII characters so O(1).
Question 2:
Vertical order traversal of a binary tree
Leetcode https://leetcode.com/problems/vertical-order-traversal-of-a-binary-tree/description/
Note: I used a map initially to store elements of each level in sorted order, which added O(log N) overhead. They pointed this out after all the test cases passed. I acknowledged and mentioned that using an unordered_map could eliminate the extra time complexity.
Feedback: They didn’t give a strong hire. The feedback was that I’m good and could be hired if I perform well in the next interviews. The overall impression was that they prefer candidates who don’t leave room for nitpicking. 😕
Round 2 (High Level Design):
Although the recruiter mentioned this would be a low-level design round, the interviewer went ahead with a high-level design question instead. After some clarification, we aligned and proceeded.
Question:
A property dealer currently owns a website that puts out the details of the properties listed by the brokers and merchants.
The property details are added with photos, location, and basic details. As they do not wish to maintain the current system,
They want to move it to a more scalable, faster, and secure system.
Data consistency and performance is a major concern. They want to move from a traditional system to a cloud-based system architecture.
Ask questions, assess the architecture, review the additional requirements given below and design the whole system.
The system should be able to support all the necessary services and modules to allow users to do the following:
- Browse property listings
- Search for a property
- Perform actions like login, register, and logout
- The property in the listing page should be segregated with the merchant name
I covered:
- Functional and non-functional requirements
- Core entities
- Database schema
- API design covering all functionalities
- High-level system design
The main focus was on deep dives
- How do we make sure there won't be double booking (contention management) I proposed splitting the payment flow into two APIs:
POST /reserve (hold for 5 mins)
POST /confirm (after successful payment)
And used a distributed lock (Redis) to manage contention.
- Merchant photo uploads and global availability
- Service segregation and individual scalability
- Search performance <500ms (ElasticSearch + caching layer)
Follow up:
- What if merchant has to do a bulk update for a category of property.
- This update will involve at least 1000s of property at one time, how can we handle this roubustly.
- Is it a good idea to keep the payment service segregated from other services? (Yes because it has to talk to 3rd party vendor and will have more strict and secure protocol to talk to them also it will have some complex reconsiliation logic which is better off segregated)
- How CDC actually works (I used CDC to hydrate the Elastic Search)
Feedback: Got a strong hire from this round and got a go ahead for the HM round. 😁
Round 3 (HM Round):
This was an in office face to face round with Hiring Manager. The HM was a delight to talk to and made me very confirtable with him, he was very polite and a good listener.
- Deep dive on a project you have worked on, what component you own and how did you implement that.
- How do you get your Design doc approved
- What are the tools, language and infra you used for the project.
- What were the most challenging part of your project
- If you have to do it all over again how you do your project, of you don't have any restriction of using Azure cloud and free to use open source.
- Talked about testing strategies and migration strategies of the feature making sure the existing feature would not break
- Rollback strategies and Monitoring dashboards and alerts.
Some standard behavioural questions:
- How did you resolve confict in your workplace?
- How do you handle on-call issues with example
- How do you convince your seniors and managers for a work related confict.
This round went well in my opinion. 🤞🏼 Waiting for the final verdict. Will update the post once I hear from the recruiters.
Interview Questions (7)
A classification system evaluates whether given texts are spam based on a list of spam words. A text is labeled “spam” if it contains at least two spam words (each occurrence of a spam word in the text counts toward the total). Spam word matching is case-sensitive.
Example: texts = { "This is a limited offer just for you", "Win cash now! Click here to claim your prize", "Hello friend, just checking in", "Congratulations! You have won a free gift" };
spamWords = { "offer", "cash", "Click", "prize", "Congratulations", "free" };
Output: ["not_spam", "spam", "not_spam", "spam"]
Function Signature: vector classifyTexts(vector texts, vector spamWords);
Input: texts: a list of strings (the texts to evaluate). spamWords: a list of strings (the spam words).
Output: A list of strings, each either "spam" or "not_spam" for each text.
Constraints: 1 ≤ n ≤ 10^3 (number of texts) 1 ≤ k ≤ 10^5 (number of spam words) 1 ≤ len(text) ≤ 10^5 1 ≤ len(spamWord) ≤ 10^5 Combined length of all spam words does not exceed 10^7
A popular social media platform provides a feature to connect people online. Connections between users are represented as an undirected graph, where each node represents a user, and edges represent connections between users. If a user is directly or indirectly connected to another user, they can view their profile. The network consists of nodes:
- Each pair of connections is represented from 1 to nodes.
- Each pair of connections is given by two arrays u and v, where u[i] is connected to v[i].
- The queries array contains a list of user IDs. For each user ID in the queries array, return the number of profiles that user can view.
A user can view their own profile. The result should be an array of integers where the i-th value corresponds to the result for the i-th query.
Example Input: edges: u = [2, 1, 4, 5] v = [1, 3, 5, 6] queries = [1, 5, 7]
Output: [3, 3, 1]
A property dealer currently owns a website that puts out the details of the properties listed by the brokers and merchants. The property details are added with photos, location, and basic details. As they do not wish to maintain the current system, They want to move it to a more scalable, faster, and secure system. Data consistency and performance is a major concern. They want to move from a traditional system to a cloud-based system architecture.
Ask questions, assess the architecture, review the additional requirements given below and design the whole system.
The system should be able to support all the necessary services and modules to allow users to do the following:
- Browse property listings
- Search for a property
- Perform actions like login, register, and logout
- The property in the listing page should be segregated with the merchant name
- Deep dive on a project you have worked on, what component you own and how did you implement that. - How do you get your Design doc approved - What are the tools, language and infra you used for the project. - What were the most challenging part of your project - If you have to do it all over again how you do your project, of you don't have any restriction of using Azure cloud and free to use open source. - Talked about testing strategies and migration strategies of the feature making sure the existing feature would not break - Rollback strategies and Monitoring dashboards and alerts.
- How did you resolve confict in your workplace? - How do you handle on-call issues with example - How do you convince your seniors and managers for a work related confict.