Salesforce Interview Experience (SMTS) | Backend
Anonymous User
2331

I recently went through the interview loop at Salesforce for a Staff Member of Technical Staff (SMTS) Backend role. There were 4 rounds in total — an online assessment, a DSA + project deep-dive, an HLD system design, and an HM round with LLD. The bar was high throughout, with a strong emphasis on depth, trade-offs, and real-world reasoning. Hope this helps someone preparing!


1) Round 1 — Online Assessment (HackerRank)

A timed HackerRank assessment to filter candidates before the interview loop. I don't remember the exact questions but they were around LeetCode medium difficulty — covering standard DSA topics like arrays, strings, and possibly some greedy/graph problems. Nothing too exotic, but you need to be comfortable solving mediums under time pressure.

Tip: practice timed LC mediums and make sure your code compiles and handles edge cases — partial scores matter on HackerRank.


2) Round 2 — DSA + Past Project Deep Dive

DSA: Token Bucket / Resource Grant System

A custom DSA problem modeled around resource allocation:

  • A bucket holds a limited number of tokens
  • Users request tokens — they are either granted or rejected based on current availability
  • If granted, the user holds those n tokens for exactly 1 hour, after which they are automatically returned to the bucket
  • Need to support: requestTokens(userId, n), releaseTokens(userId), and a background expiry mechanism

Key discussion points:

  • Using a min-heap / priority queue ordered by expiry time to efficiently handle auto-release
  • Handling concurrent requests — locking strategies vs. atomic operations
  • Edge cases: partial grants, user requesting tokens they already hold, token expiry during an active request
  • Time complexity of grant and release operations

Past Project Deep Dive

Detailed walkthrough of one of my significant past projects. The discussion quickly went beyond surface level:

  • Architecture decisions and why I made them
  • Bottlenecks I encountered and how I resolved them
  • How I ensured reliability and consistency under load
  • What I would do differently with hindsight

Tip: pick a project you know inside out — they will probe every design choice.


3) Round 3 — System Design HLD: Rate Limiter

Design: Distributed Rate Limiter

This round went very deep. Started with the basics and kept drilling into trade-offs at every layer.

Algorithms discussed:

  • Token Bucket — bursty traffic allowed up to bucket size; smooth refill rate
  • Leaky Bucket — strict output rate; excess requests are dropped or queued
  • Fixed Window Counter — simple but suffers from boundary spike problem
  • Sliding Window Log / Sliding Window Counter — more accurate, higher memory cost
  • Trade-offs between accuracy, memory, and throughput for each

Storage and synchronization:

  • Using Redis as a global distributed cache for rate limit counters
  • INCR + EXPIRE vs. Lua scripts for atomicity
  • Trade-off: local in-process cache (low latency, inconsistent across nodes) vs. global Redis (consistent, network overhead)
  • Sliding window with Redis sorted sets — accuracy vs. memory cost
  • Replication lag and what it means for enforcement correctness

Scalability and edge cases:

  • Rate limiting at different granularities: per user, per IP, per API key, per tenant
  • What happens when Redis goes down — fail open vs. fail closed
  • Multi-region deployments — eventual consistency trade-offs
  • Rate limit headers in responses (X-RateLimit-Limit, X-RateLimit-Remaining, Retry-After)
  • Thundering herd on limit reset — jitter strategies

4) Round 4 — Hiring Manager (HM): System Design LLD + Behavioral

Design: Food Delivery App (Low-Level Design)

This was framed as an HM round but went very deep technically — class design, API contracts, and real-world trade-offs were all on the table.

Core entities and class design:

  • Key entities: User, Restaurant, MenuItem, Order, Cart, DeliveryAgent, Payment
  • Order state machine: placed → confirmed → preparing → picked_up → delivered / cancelled
  • Separation of concerns — order service, delivery service, payment service, notification service

Delivery assignment:

  • Geospatial indexing to find nearby agents — geohash vs. quadtree
  • Agent assignment strategy — nearest first vs. load-balanced
  • Handling agent unavailability mid-delivery — reassignment flow

Trade-offs discussed in depth:

  • Synchronous vs. asynchronous order confirmation flow
  • Strong consistency for payments vs. eventual consistency for delivery status updates
  • Push (WebSocket / SSE) vs. poll for real-time order tracking
  • Idempotency in payment retries — how to avoid double charges
  • Database schema choices — relational for orders/payments, document store for menus
  • Caching menu data — TTL strategy, cache invalidation on restaurant updates

Behavioral:

  • A time I influenced a technical direction without direct authority
  • How I handle disagreement with a senior stakeholder
  • A system I built that I'm most proud of and why

Please up-vote, to motivate me to upload my other interview experiences :)


Comments (10)