← Salesforce Interview Insights

Salesforce·Software Engineer·Onsite - System Design / Architecture·Senior

Senior
May 2026

Summary

Domain knowledge round at Salesforce focused on pipeline system design and Kubernetes. Pretty broad coverage, felt like they wanted to see if you'd actually built this stuff before or just read about it.

Questions Asked (5)

Q1

How would you design a data or CI pipeline system, covering things like DAG scheduling, dependency management, retries, backfill, and observability?

System DesignTechnical Trade-offs
Author's notes

This is the kind of question where you think you know it cold and then you start talking and realize you're hand-waving through half of it.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and scale, then propose a high-level architecture with a DAG scheduler, dependency management, retry/backfill mechanisms, and observability. Discuss trade-offs between building vs. buying (e.g., Airflow vs. custom) and how you'd handle failures and data consistency.

Pro tip: Emphasize idempotency and exactly-once semantics for tasks, as they are critical for reliable retries and backfills. Also, mention how you'd design for multi-tenancy and security, which is highly relevant at Salesforce.

1. Clarify Requirements

Ask about scale (number of pipelines, tasks per day), latency requirements, data sources, and failure tolerance. This ensures your design meets actual needs.

2. High-Level Architecture

Outline components: a scheduler (e.g., cron-based or event-driven), a DAG definition store, a task queue, workers, and a metadata database. Explain how they interact.

3. DAG Scheduling & Dependency Management

Describe how DAGs are parsed, scheduled based on dependencies and triggers, and how tasks are queued and executed. Mention handling of dynamic DAGs and cross-DAG dependencies.

4. Retries & Backfill

Explain retry policies (exponential backoff, max attempts), idempotent task design, and backfill strategies (re-running past intervals without duplicating data).

5. Observability & Monitoring

Cover logging, metrics (task duration, success/failure rates), alerting, and tracing. Discuss how to debug failures and monitor pipeline health.

Key Points to Mention

  • Idempotency and exactly-once semantics for tasks to ensure safe retries and backfills.
  • Trade-offs between using existing tools (Airflow, Argo, etc.) vs. building custom solutions.
  • Handling of failures: retries with exponential backoff, dead-letter queues, and alerting.
  • Backfill strategies: parameterized DAG runs, avoiding data duplication, and managing resource contention.
  • Observability: centralized logging, metrics (e.g., Prometheus), distributed tracing, and SLA monitoring.
  • Scalability and multi-tenancy: isolating resources, prioritizing tasks, and ensuring security.

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q2

Walk me through the pipeline frameworks you've worked with and the trade-offs between them.

Technical Trade-offsSystem Design
Author's notes

They named a few tools in the same breath and asked me to compare.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by briefly listing the pipeline frameworks you've used, then focus on 2-3 key trade-offs (e.g., batch vs. streaming, managed vs. self-hosted) that you've personally navigated. Use concrete examples from your experience to illustrate how you chose a framework based on specific requirements and constraints.

Pro tip: Tie your trade-off analysis back to business impact—e.g., how a framework choice affected development velocity, operational cost, or data freshness—to show you think beyond technical merits.

1. List frameworks and contexts

Name the pipeline frameworks you've worked with (e.g., Apache Airflow, Luigi, Prefect, Dagster, AWS Step Functions, Apache Beam) and briefly state the project context for each.

2. Identify key trade-off dimensions

Highlight the main dimensions for comparison, such as batch vs. streaming, managed vs. self-hosted, scheduling vs. orchestration, and code-first vs. configuration-driven.

3. Compare specific frameworks

Pick 2-3 frameworks and discuss their strengths and weaknesses along the dimensions you identified, using concrete examples from your experience.

4. Explain decision criteria

Describe how you evaluated trade-offs in a real scenario—what factors (team skills, scalability, cost, latency) drove your choice and what you sacrificed.

5. Summarize lessons learned

Conclude with broader insights about selecting pipeline frameworks, such as the importance of aligning with team expertise and future scalability needs.

Key Points to Mention

  • Batch vs. streaming trade-offs (latency, complexity, cost)
  • Managed services (e.g., AWS Glue, Google Dataflow) vs. self-hosted (e.g., Airflow on Kubernetes)
  • Orchestration vs. scheduling: when to use Airflow vs. simpler cron-based solutions
  • DAG authoring and maintainability: code-first (Python) vs. configuration-driven (YAML)
  • Scalability and performance considerations: handling large data volumes and parallel tasks
  • Ecosystem and integration: compatibility with existing tools (e.g., Spark, dbt, cloud services)

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q3

Explain how Kubernetes scheduling and autoscaling work, and how a pipeline workload fits into that model.

System DesignTechnical Trade-offs
Author's notes

The second half of the question is what got me.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by defining Kubernetes scheduling and autoscaling as separate but complementary control loops, then map pipeline workloads onto those primitives. Emphasize how batch/CI workloads differ from long-running services and how that changes scheduling and scaling decisions. Close with a concrete trade-off you would make for a pipeline workload at Salesforce scale.

Pro tip: Show maturity by explicitly separating cluster-level autoscaling (Cluster Autoscaler/Karpenter) from pod-level autoscaling (HPA/VPA/KEDA) and noting that pipeline workloads often need KEDA-style event-driven scaling rather than CPU-based HPA. Mentioning cost and bin-packing efficiency signals you think like a platform owner, not just a user.

1. Define scheduling fundamentals

Explain that the kube-scheduler assigns pods to nodes using predicates (resource requests, affinity/anti-affinity, taints/tolerations) and priorities, and that the scheduler only sees requests, not actual usage.

2. Layer in autoscaling types

Distinguish HPA (replica count from metrics), VPA (resource requests), Cluster Autoscaler/Karpenter (node provisioning), and KEDA (event-driven scaling). Clarify that these operate at different layers and can conflict if not coordinated.

3. Characterize pipeline workloads

Describe pipeline jobs as bursty, finite, often parallel (fan-out/fan-in), with heterogeneous resource profiles and dependencies between stages. They are batch, not long-running services, so steady-state HPA is a poor fit.

4. Map pipeline onto the model

Show how to use Jobs/CronJobs or a workflow engine (Argo Workflows, Tekton), KEDA to scale on queue depth or events, node pools with taints for specialized runners, and pod priority/preemption so critical pipelines aren't starved.

5. Discuss trade-offs and failure modes

Cover cold-start latency vs cost, over-provisioning vs queue time, noisy-neighbor effects, and how to avoid thrashing between scale-up and scale-down. Tie back to reliability and SLOs for the pipeline.

Key Points to Mention

  • Resource requests vs limits and how the scheduler uses requests for bin-packing
  • HPA vs VPA vs Cluster Autoscaler vs KEDA and the layer each operates at
  • Why event-driven scaling (queue depth, pending jobs) beats CPU-based HPA for pipelines
  • Using taints, tolerations, node affinity, and dedicated node pools for pipeline runners
  • Pod priority and preemption to protect critical pipeline stages
  • Cost, cold-start latency, and bin-packing efficiency trade-offs at scale

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q4

How do pods, deployments, services, and operators relate to each other in a Kubernetes cluster?

System Design
Author's notes

More of a fundamentals check.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by defining each component's role and abstraction level, then explain how they build on each other: pods as the atomic unit, deployments managing pods, services providing stable networking, and operators extending Kubernetes to manage complex applications. Use a concrete example to illustrate the relationships and highlight how they work together in a typical application stack.

Pro tip: Emphasize that operators encode operational knowledge into software, reducing manual toil and enabling self-healing—this shows you understand the value of automation and declarative management, which is highly relevant for platform engineering roles.

1. Define the building blocks

Briefly explain what each component is: a pod is the smallest deployable unit, a deployment manages pod replicas, a service provides stable networking, and an operator extends Kubernetes to manage applications.

2. Explain the hierarchy and relationships

Describe how deployments create and manage ReplicaSets, which in turn manage pods; services select pods via labels to route traffic; operators manage custom resources that may include deployments, services, and other objects.

3. Illustrate with a concrete example

Walk through a typical web application: a deployment ensures the desired number of pod replicas, a service load-balances traffic to those pods, and an operator (e.g., for a database) handles backups, scaling, and upgrades.

4. Highlight the operator's role and value

Explain that operators encapsulate operational knowledge, automating tasks like scaling, backups, and failover, and they often manage deployments and services as part of a custom resource's lifecycle.

5. Summarize the synergy

Conclude by stating that these components form a layered abstraction: pods are the foundation, deployments manage them, services expose them, and operators orchestrate complex stateful applications on top.

Key Points to Mention

  • Pods are ephemeral and not self-healing; deployments provide self-healing and scaling by managing ReplicaSets.
  • Services abstract pod IPs and provide stable DNS and load balancing, using label selectors to target pods.
  • Operators use custom resources and controllers to automate application lifecycle management, including deployments and services.
  • The relationship is hierarchical: operators may manage deployments, which manage pods, and services expose those pods.
  • Declarative management: each component is defined in YAML and the Kubernetes control plane reconciles the desired state.
  • Salesforce context: mention how operators can help manage multi-tenant or complex stateful services at scale.

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q5

What are the networking and storage considerations when running stateful pipeline workloads on Kubernetes?

System DesignTechnical Trade-offs
Author's notes

Blanked for a second on the storage piece.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by defining what makes pipeline workloads stateful—persistent data, ordered processing, and exactly-once semantics—then systematically cover networking (service discovery, stable identities, traffic routing) and storage (persistent volumes, access modes, data locality). Frame your answer around trade-offs between using Kubernetes-native primitives (StatefulSets, PVCs, headless services) versus external systems (managed databases, message queues), and tie choices back to reliability, scalability, and operational complexity.

Pro tip: Emphasize that stateful pipelines often need stable network identities and ordered scaling, so StatefulSets with headless services are usually the right default—but be ready to discuss when to offload state to managed services (e.g., S3, Kafka, Cloud SQL) to reduce operational burden, which is a common pattern at Salesforce-scale.

1. Clarify the workload

Ask or state assumptions about the pipeline: data volume, throughput, latency requirements, and whether state is checkpointed or continuously persisted. This scopes the networking and storage needs.

2. Networking considerations

Discuss stable pod identities (StatefulSet + headless service), service discovery, inter-pod communication (e.g., gRPC, Kafka), ingress/egress for external data sources, and network policies for isolation. Mention DNS, load balancing, and potential need for service mesh for observability and traffic control.

3. Storage considerations

Cover persistent volume claims (PVCs), storage classes, access modes (ReadWriteOnce vs ReadWriteMany), data locality, and performance tiers (SSD vs HDD). Discuss StatefulSet volumeClaimTemplates, CSI drivers, and backup/restore strategies.

4. Trade-offs and alternatives

Compare Kubernetes-native stateful management with external managed services (e.g., S3 for object storage, Kafka for streaming, managed databases). Highlight trade-offs in complexity, cost, scalability, and reliability.

5. Operational best practices

Mention monitoring, logging, disaster recovery, and scaling strategies (e.g., horizontal pod autoscaling with stateful constraints). Emphasize testing failover and data consistency.

Key Points to Mention

  • StatefulSets for stable network identities and persistent storage via volumeClaimTemplates
  • Headless services for direct pod-to-pod communication and service discovery
  • PersistentVolumeClaims, StorageClasses, and access modes (RWO, ROX, RWX) for data persistence
  • Data locality and performance: node affinity, local SSDs vs network storage, and CSI drivers
  • Network policies and service mesh for security, observability, and traffic management
  • Trade-offs: self-managed stateful services vs managed cloud services (e.g., S3, Kafka, RDS) for reduced operational overhead

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.