cswork / libraryOpen practice workspace

Interview guides · Slack

Slack Software Engineer Interview Guide

Slack Software Engineer interview guide: reported rounds, questions and how candidates describe the process.

The 60-second brief

A Software Engineer at Slack operates at the intersection of extreme scale, high real-time reliability, and user-centric craftsmanship. As the central collaboration hub for millions of organizations worldwide, Slack requires engineering solutions that handle billions of messages, complex state synchronization across desktop and mobile platforms, and high-throughput backend infrastructure. Whether you are building features into the desktop client using Electron, Chromium, and Node.js, or optimizing distributed data pipelines that ingest and process analytics at massive scale, your contributions directly define how teams communicate globally. Engineering at Slack is deeply rooted in practical software engineering rather than theoretical puzzles. The team prioritizes code maintainability, system resilience, performance profiling, and empathetic collaboration.

This guide is scoped to a Software Engineer candidate at Slack.

Focus areas

  • System Design
  • Backend Engineering
  • Architecture Round

The Slack interview process

Slack candidates report 5 rounds over 4-6 weeks. The stages below are what candidates describe, not a published process.

Recruiter Phone Screen

Initial call focused on work background, compensation expectations, and motivation for joining Slack.

What to demonstrate

  • Initial call focused on work background, compensation expectations, and motivation for joining Slack
  • Depth in System Design

How to prepare

  • Be able to walk your CV end to end in two minutes, and say why this company specifically.
  • Have your salary expectations, notice period and location constraints ready, and ask for the rest of the loop in writing.

Video Screen

Discussion with an engineering manager or staff engineer covering behavioral questions and technical topics.

What to demonstrate

  • Discussion with an engineering manager or staff engineer covering behavioral questions and technical topics
  • Depth in System Design

How to prepare

  • Answer aloud and timed: Walk through how you would architect a high-throughput notifications service capable of supporting millions of concurrent web and mobile clients.
  • Answer aloud and timed: Explain how you would optimize database queries and connection pooling for a PostgreSQL database under heavy write loads.

Online Coding Assessment

Candidates may complete an assessment on data structures, algorithm efficiency, or database queries.

What to demonstrate

  • Candidates may complete an assessment on data structures, algorithm efficiency, or database queries
  • Depth in System Design

How to prepare

  • Answer aloud and timed: How do you manage local application state synchronization and offline persistent storage for a desktop messaging application?
  • Answer aloud and timed: Identify performance bottlenecks, potential bugs, and security vulnerabilities in a provided code changeset.

Technical Assessment

Take-home code review or mini-app development challenge to evaluate practical skills.

What to demonstrate

  • Take-home code review or mini-app development challenge to evaluate practical skills
  • Depth in System Design

How to prepare

  • Answer aloud and timed: How do you balance recommending strict architectural patterns with maintaining team velocity during a code review?
  • Answer aloud and timed: Explain how you would refactor an asynchronous Node.js routine that suffers from memory leaks or race conditions.

Virtual Onsite Loop

Multiple focused sessions covering practical coding, system design, and behavioral discussions with peers and leaders.

What to demonstrate

  • Multiple focused sessions covering practical coding, system design, and behavioral discussions with peers and leaders
  • Depth in System Design

How to prepare

  • Answer aloud and timed: How do you structure feedback on a junior engineer's pull request to ensure it is constructive, clear, and actionable?
  • Answer aloud and timed: Given a sample application with a buggy SQL query execution layer, how would you optimize the query and restructure the application logic?

Where candidates lose points

Show Empathy in Code Reviews

When completing code review assessments, adopt a collaborative, guiding tone. Ask clarifying questions instead of making authoritative demands, and acknowledge good patterns alongside your change requests.

Prepare Your Career Narrative

The chronological interview requires a clear, detailed narrative of your career history. Be ready to explain the context, technical challenges, individual contributions, and lessons learned for every major project on your resume.

Embrace Conversational System Design

System design rounds at Slack are collaborative discussions. Talk through your assumptions, ask clarifying questions early, propose trade-offs explicitly, and adjust your design based on interviewer prompts.

Demonstrate Product & User Empathy

Slack values engineers who understand the end-user impact of technical decisions. Highlight how your engineering choices improve user latency, application reliability, or developer experience.

Questions & practice

Explain how you would refactor an asynchronous Node.js routine that suffers from memory leaks or race conditio

Medium · Code Review & Technical Refactoring

Explain how you would refactor an asynchronous Node.js routine that suffers from memory leaks or race conditions.

Approach

  1. Say what the runtime actually does before reasoning about the code.
  2. Name what is shared across threads and what owns each piece of state.
  3. Identify the window where an invariant is briefly untrue.
  4. Distinguish a value from a reference to it, and say which one you handed out.

Follow-up

  • What happens if two callers reach this at the same time?
  • Where could this allocate more than you expect?

Given an alphanumeric string, write an efficient algorithm to identify and count specific character patterns o

Medium · Algorithms & Practical Coding

Given an alphanumeric string, write an efficient algorithm to identify and count specific character patterns or token boundaries.

Approach

  1. Restate the input: its shape, its size, and what is guaranteed about it.
  2. Name the brute-force solution and its complexity before improving on it.
  3. Choose the data structure from the access pattern, not from familiarity.
  4. State the target complexity and say which constraint rules the naive version out.

Follow-up

  • How does this change if the input no longer fits in memory?
  • What is the worst case, and how likely is it on real data?

Implement a data structure that supports fast prefix searching for user autocomplete in channel messaging.

Medium · Algorithms & Practical Coding

Approach

  1. Restate the input: its shape, its size, and what is guaranteed about it.
  2. Name the brute-force solution and its complexity before improving on it.
  3. Choose the data structure from the access pattern, not from familiarity.
  4. State the target complexity and say which constraint rules the naive version out.

Follow-up

  • How does this change if the input no longer fits in memory?
  • What is the worst case, and how likely is it on real data?

Write a program to parse a raw text payload and output structured block kit elements while handling malformed

Medium · Algorithms & Practical Coding

Write a program to parse a raw text payload and output structured block kit elements while handling malformed input gracefully.

Approach

  1. Say what the runtime actually does before reasoning about the code.
  2. Name what is shared across threads and what owns each piece of state.
  3. Identify the window where an invariant is briefly untrue.
  4. Distinguish a value from a reference to it, and say which one you handed out.

Follow-up

  • What happens if two callers reach this at the same time?
  • Where could this allocate more than you expect?

Given a sample application with a buggy SQL query execution layer, how would you optimize the query and restru

Medium · Code Review & Technical Refactoring

Given a sample application with a buggy SQL query execution layer, how would you optimize the query and restructure the application logic?

Approach

  1. Name the grain you start from and join outward from it.
  2. Check whether any join is one-to-many before aggregating, or the sums inflate.
  3. Say which index the query would use, and what makes it unusable.
  4. Handle the rows that do not match: that is usually the actual question.

Follow-up

  • How does the query change if that join becomes one-to-many?
  • What happens to this when the table is ten times larger?

Given a dataset of user activity logs, write a script or SQL query to aggregate active channel engagement metr

Medium · Algorithms & Practical Coding

Given a dataset of user activity logs, write a script or SQL query to aggregate active channel engagement metrics.

Approach

  1. Name the grain you start from and join outward from it.
  2. Check whether any join is one-to-many before aggregating, or the sums inflate.
  3. Say which index the query would use, and what makes it unusable.
  4. Handle the rows that do not match: that is usually the actual question.

Follow-up

  • How does the query change if that join becomes one-to-many?
  • What happens to this when the table is ten times larger?

Design a real-time chat messaging system that supports individual DMs, channels, and online presence indicator

Medium · System Design & Architecture

Design a real-time chat messaging system that supports individual DMs, channels, and online presence indicators.

Approach

  1. Fix the scope first: who calls this, how often, and what they do when it fails.
  2. Name the read and write paths separately; they rarely have the same bottleneck.
  3. Choose a partition key and say what query it makes expensive.
  4. State the consistency you need, and where you are willing to be stale.

Follow-up

  • What breaks first when traffic grows ten times?
  • How does this behave when that dependency is down for an hour?

How would you design an API and backend database structure to power user handle autocomplete (@mention) in a

Medium · System Design & Architecture

How would you design an API and backend database structure to power user handle autocomplete (@mention) in a busy channel?

Approach

  1. Fix the scope first: who calls this, how often, and what they do when it fails.
  2. Name the read and write paths separately; they rarely have the same bottleneck.
  3. Choose a partition key and say what query it makes expensive.
  4. State the consistency you need, and where you are willing to be stale.

Follow-up

  • What breaks first when traffic grows ten times?
  • How does this behave when that dependency is down for an hour?

Walk through how you would architect a high-throughput notifications service capable of supporting millions of

Medium · System Design & Architecture

Walk through how you would architect a high-throughput notifications service capable of supporting millions of concurrent web and mobile clients.

Approach

  1. Fix the scope first: who calls this, how often, and what they do when it fails.
  2. Name the read and write paths separately; they rarely have the same bottleneck.
  3. Choose a partition key and say what query it makes expensive.
  4. State the consistency you need, and where you are willing to be stale.

Follow-up

  • What breaks first when traffic grows ten times?
  • How does this behave when that dependency is down for an hour?

Explain how you would optimize database queries and connection pooling for a PostgreSQL database under heavy w

Medium · System Design & Architecture

Explain how you would optimize database queries and connection pooling for a PostgreSQL database under heavy write loads.

Approach

  1. Fix the scope first: who calls this, how often, and what they do when it fails.
  2. Name the read and write paths separately; they rarely have the same bottleneck.
  3. Choose a partition key and say what query it makes expensive.
  4. State the consistency you need, and where you are willing to be stale.

Follow-up

  • What breaks first when traffic grows ten times?
  • How does this behave when that dependency is down for an hour?

How do you manage local application state synchronization and offline persistent storage for a desktop messagi

Medium · System Design & Architecture

How do you manage local application state synchronization and offline persistent storage for a desktop messaging application?

Approach

  1. Fix the scope first: who calls this, how often, and what they do when it fails.
  2. Name the read and write paths separately; they rarely have the same bottleneck.
  3. Choose a partition key and say what query it makes expensive.
  4. State the consistency you need, and where you are willing to be stale.

Follow-up

  • What breaks first when traffic grows ten times?
  • How does this behave when that dependency is down for an hour?

Identify performance bottlenecks, potential bugs, and security vulnerabilities in a provided code changeset.

Medium · Code Review & Technical Refactoring

Approach

  1. Clarify what is being asked and what a complete answer contains.
  2. State your assumptions explicitly before working the problem.
  3. Say what you would check first and why it is the highest-information step.
  4. Work from the requirement backwards to the design.

Follow-up

  • What assumption would you test first?
  • How would you know your answer was wrong?

How do you structure feedback on a junior engineer's pull request to ensure it is constructive, clear, and act

Medium · Code Review & Technical Refactoring

How do you structure feedback on a junior engineer's pull request to ensure it is constructive, clear, and actionable?

Approach

  1. Clarify what is being asked and what a complete answer contains.
  2. State your assumptions explicitly before working the problem.
  3. Say what you would check first and why it is the highest-information step.
  4. Work from the requirement backwards to the design.

Follow-up

  • What assumption would you test first?
  • How would you know your answer was wrong?

How would you design an in-memory cache with rate-limiting capabilities for API endpoints?

Medium · Algorithms & Practical Coding

Approach

  1. Say who the caller is and what they do when the call fails halfway.
  2. Define the identity of a request so a retry cannot double-apply it.
  3. Separate accepted, pending, failed and confirmed; they are different facts.
  4. Design the error taxonomy before the success shape; callers branch on it.

Follow-up

  • What happens if the caller retries after a timeout?
  • How does a client discover it is on an old version of this contract?

Walk me through a major technical outage or incident you experienced. What steps did you take to debug it, and

Medium · Behavioral & Empathy

Walk me through a major technical outage or incident you experienced. What steps did you take to debug it, and what post-mortem actions were implemented?

Approach

  1. Establish what changed and when, before forming any theory.
  2. Pick a bisection that eliminates candidates whichever way it turns out.
  3. Check the instrumentation before believing the symptom.
  4. Separate the trigger from the cause; the deploy is rarely the bug.

Follow-up

  • What would you look at first, and what would it rule out?
  • How would you tell a cause from a coincidence here?

Suggested practice checklist

Built from the rounds and topics Slack candidates report.

Day 1 — Map the Slack loop

  • Write out the reported sequence: Recruiter Phone Screen, Video Screen, Online Coding Assessment, Technical Assessment, Virtual Onsite Loop.
  • For each round, write one sentence on what it is judging, from the description above, and mark the one you are least ready for.

Deliverable: A one-page map of the 5 reported rounds, with the weakest marked.

Day 2 — Work System Design

  • Spend the session on System Design, which Slack candidates report being tested on.
  • Write one worked example in System Design and time yourself on it.

Deliverable: One timed worked example in System Design.

Day 3 — Work Backend Engineering

  • Spend the session on Backend Engineering, which Slack candidates report being tested on.
  • Write one worked example in Backend Engineering and time yourself on it.

Deliverable: One timed worked example in Backend Engineering.

Day 4 — Work Architecture Round

  • Spend the session on Architecture Round, which Slack candidates report being tested on.
  • Write one worked example in Architecture Round and time yourself on it.

Deliverable: One timed worked example in Architecture Round.

Day 5 — Answer out loud: System Design & Architecture

  • Answer aloud, timed: Design a real-time chat messaging system that supports individual DMs, channels, and online presence indicators.
  • Answer aloud, timed: How would you design an API and backend database structure to power user handle autocomplete (@mention) in a busy channel?

Deliverable: Spoken answers to 2 reported System Design & Architecture question(s), under time.

Day 6 — Answer out loud: Code Review & Technical Refactoring

  • Answer aloud, timed: Identify performance bottlenecks, potential bugs, and security vulnerabilities in a provided code changeset.
  • Answer aloud, timed: How do you balance recommending strict architectural patterns with maintaining team velocity during a code review?

Deliverable: Spoken answers to 2 reported Code Review & Technical Refactoring question(s), under time.

Day 7 — Answer out loud: Algorithms & Practical Coding

  • Answer aloud, timed: Given an alphanumeric string, write an efficient algorithm to identify and count specific character patterns or token boundaries.
  • Answer aloud, timed: Implement a data structure that supports fast prefix searching for user autocomplete in channel messaging.

Deliverable: Spoken answers to 2 reported Algorithms & Practical Coding question(s), under time.

Behavioural preparation

Behavioural rounds judge the decision you made and what it cost.

How do you balance recommending strict architectural patterns with maintaining team velocity during a code rev

Medium · Code Review & Technical Refactoring

How do you balance recommending strict architectural patterns with maintaining team velocity during a code review?

Approach

  1. Pick a story where you made the decision, not one where you watched it.
  2. State the situation in two sentences and spend the rest on the reasoning.
  3. Give the blast radius: what could have broken, and what you measured.
  4. Name the disagreement and how you resolved it with evidence.

Follow-up

  • What would you do differently if you ran that again?
  • How did you know your change caused the improvement?

Describe a time when you had to give difficult technical feedback to a peer. How did you structure your respon

Medium · Behavioral & Empathy

Describe a time when you had to give difficult technical feedback to a peer. How did you structure your response to maintain a positive working relationship?

Approach

  1. Pick a story where you made the decision, not one where you watched it.
  2. State the situation in two sentences and spend the rest on the reasoning.
  3. Give the blast radius: what could have broken, and what you measured.
  4. Name the disagreement and how you resolved it with evidence.

Follow-up

  • What would you do differently if you ran that again?
  • How did you know your change caused the improvement?

Tell me about a project where technical requirements were ambiguous. How did you establish alignment across st

Medium · Behavioral & Empathy

Tell me about a project where technical requirements were ambiguous. How did you establish alignment across stakeholders?

Approach

  1. Pick a story where you made the decision, not one where you watched it.
  2. State the situation in two sentences and spend the rest on the reasoning.
  3. Give the blast radius: what could have broken, and what you measured.
  4. Name the disagreement and how you resolved it with evidence.

Follow-up

  • What would you do differently if you ran that again?
  • How did you know your change caused the improvement?

How do you prioritize performance optimization or technical debt reduction against new product feature deliver

Medium · Behavioral & Empathy

How do you prioritize performance optimization or technical debt reduction against new product feature deliverables?

Approach

  1. Pick a story where you made the decision, not one where you watched it.
  2. State the situation in two sentences and spend the rest on the reasoning.
  3. Give the blast radius: what could have broken, and what you measured.
  4. Name the disagreement and how you resolved it with evidence.

Follow-up

  • What would you do differently if you ran that again?
  • How did you know your change caused the improvement?

Give an example of how you collaborated with a cross-functional team outside of engineering (e.g., product, de

Medium · Behavioral & Empathy

Give an example of how you collaborated with a cross-functional team outside of engineering (e.g., product, design, or operations) to deliver a strategic initiative.

Approach

  1. Pick a story where you made the decision, not one where you watched it.
  2. State the situation in two sentences and spend the rest on the reasoning.
  3. Give the blast radius: what could have broken, and what you measured.
  4. Name the disagreement and how you resolved it with evidence.

Follow-up

  • What would you do differently if you ran that again?
  • How did you know your change caused the improvement?