← TikTok Interview Insights

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

Senior
May 2026

Summary

TikTok software engineer interview that leaned heavily on infrastructure and reliability concepts. The questions covered a pretty wide surface area, from Kubernetes basics to distributed systems debugging, so it felt less like a coding round and more like a system design and SRE-flavored session.

Questions Asked (5)

Q1

What is the difference between a Pod and a Deployment in Kubernetes, and what does a Service do?

System DesignTechnical Trade-offs
Author's notes

Felt pretty solid on this.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by defining each resource at a high level, then contrast their roles: Pod as the atomic unit, Deployment as a controller for Pods, and Service as a stable network endpoint. Use a concrete example like a web app to illustrate how they work together, and highlight trade-offs such as self-healing and scalability.

Pro tip: Emphasize that Deployments manage Pods via ReplicaSets, enabling rolling updates and rollbacks, while Services abstract Pod IPs with selectors—this shows you understand the operational layer beyond just definitions.

1. Define Pod

Explain that a Pod is the smallest deployable unit, encapsulating one or more containers that share network and storage. Mention that Pods are ephemeral and not self-healing.

2. Define Deployment

Describe a Deployment as a higher-level controller that manages ReplicaSets, which in turn manage Pods. Highlight features like declarative updates, scaling, and self-healing.

3. Contrast Pod vs Deployment

Clarify that you rarely create Pods directly; Deployments ensure desired state, handle rolling updates, and provide rollback. Pods are the 'what', Deployments are the 'how many and how to update'.

4. Define Service

Explain that a Service provides a stable IP and DNS name for a set of Pods, using selectors to route traffic. Mention types like ClusterIP, NodePort, LoadBalancer.

5. Illustrate with Example

Walk through a simple scenario: a Deployment creates 3 Pods running a web server; a Service load-balances traffic to them. This shows how they interact in a real system.

Key Points to Mention

  • Pod is the atomic unit; Deployment manages Pods via ReplicaSets.
  • Deployments provide self-healing, scaling, and rolling updates; Pods do not.
  • Service provides stable networking and load balancing across Pods.
  • Service uses label selectors to dynamically target Pods.
  • Pods are ephemeral; their IPs change, so Services are essential for stable communication.
  • Deployments enable declarative management and rollback, crucial for production.

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

Q2

Walk me through how you would debug a Pod that won't start. What steps do you take and which kubectl commands do you use?

Root Cause AnalysisTechnical Trade-offs
Author's notes

This one I actually enjoyed.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by describing a systematic, layer-by-layer debugging process for a Pod that won't start, emphasizing the use of kubectl commands to inspect events, logs, and configuration. Highlight how you would interpret common error states and adjust your approach based on findings, while communicating clearly and efficiently.

Pro tip: Mention that you always check the Pod's events first with `kubectl describe pod` because it often reveals the root cause (e.g., image pull errors, scheduling issues) without needing to dig deeper. Also, note that you keep a mental checklist of common failure modes to speed up diagnosis.

1. Check Pod status and events

Use `kubectl get pod <pod-name>` and `kubectl describe pod <pod-name>` to see the current state and recent events. Look for error messages like ImagePullBackOff, CrashLoopBackOff, or scheduling failures.

2. Inspect container logs

If the container started but crashed, use `kubectl logs <pod-name>` (add `--previous` if it restarted) to see application errors. For multi-container pods, specify the container with `-c`.

3. Verify configuration and dependencies

Check the Pod spec for issues: `kubectl get pod <pod-name> -o yaml`. Look for misconfigured environment variables, missing ConfigMaps/Secrets, volume mount problems, or incorrect resource requests/limits.

4. Check cluster-level factors

Ensure nodes have capacity and are healthy: `kubectl get nodes`, `kubectl describe node <node-name>`. Also check for network policies, service account permissions, or admission webhooks that might block the Pod.

5. Iterate and resolve

Based on findings, fix the issue (e.g., correct image name, adjust resources, update ConfigMap) and redeploy. If needed, exec into a debug container or use `kubectl debug` to further investigate.

Key Points to Mention

  • Common Pod failure states: ImagePullBackOff, CrashLoopBackOff, Pending, and their typical causes.
  • kubectl commands: get, describe, logs, exec, debug, and how to use them effectively.
  • Importance of checking events and logs first to quickly narrow down the issue.
  • How to inspect and validate Pod YAML for misconfigurations.
  • Cluster-level checks: node status, resource availability, and network policies.
  • Systematic approach: start from the Pod, then move outward to nodes and cluster components.

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

Q3

Define SLO, SLA, and SLI. If your error rate is breaching the SLO, how do you respond and how do you prioritize?

Product Analytics & MetricsRoot Cause Analysis
Author's notes

I had the definitions down but the prioritization part got messy.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clearly defining SLI, SLO, and SLA with concrete examples, then outline a structured incident response process for SLO breaches that includes detection, triage, mitigation, and postmortem. Emphasize prioritization based on user impact, error budget burn rate, and business criticality.

Pro tip: Frame your answer around the error budget concept: it turns reliability into a data-driven trade-off between feature velocity and stability, which resonates with TikTok's fast-paced, metrics-driven culture.

1. Define the terms

Define SLI as a quantitative measure of service behavior (e.g., request latency, error rate), SLO as an internal target for an SLI (e.g., 99.9% availability), and SLA as a contractual agreement with consequences for missing SLOs.

2. Detect and validate the breach

Confirm the SLO breach using monitoring and alerting tools, and assess the scope, severity, and user impact. Check if it's a false positive or a real incident.

3. Triage and mitigate

Assemble the incident response team, prioritize mitigation actions (e.g., rollback, scaling, failover) to restore service within the error budget, and communicate status to stakeholders.

4. Prioritize based on impact and burn rate

Rank issues by user impact, error budget burn rate, and business criticality. Focus on high-impact, fast-burning issues first, and consider pausing feature releases if the budget is exhausted.

5. Conduct postmortem and prevent recurrence

Perform a blameless postmortem to identify root causes, implement corrective actions, and adjust SLOs or error budgets if needed to better reflect user expectations.

Key Points to Mention

  • SLI, SLO, SLA definitions with examples (e.g., 99.9% availability SLO, 99.99% SLA with penalties)
  • Error budget concept and its role in balancing reliability with feature velocity
  • Incident response process: detection, triage, mitigation, communication, postmortem
  • Prioritization criteria: user impact, error budget burn rate, business criticality
  • Root cause analysis techniques (e.g., 5 Whys, fishbone) and blameless culture
  • Automated alerting and monitoring tools (e.g., Prometheus, Grafana, Datadog)

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

Q4

A distributed service is seeing elevated request latency. Walk me through how you'd investigate across the network, load balancer, database, cache, and the service itself. What metrics do you check and what experiments do you run?

System DesignRoot Cause AnalysisProduct Analytics & Metrics
Author's notes

This was the hardest question and honestly the most interesting.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the scope and impact of the latency issue, then systematically walk through each layer (network, load balancer, database, cache, service) using a top-down or bottom-up approach. For each layer, describe the key metrics you'd check and the experiments you'd run to isolate the bottleneck, emphasizing data-driven diagnosis and iterative hypothesis testing.

Pro tip: Always correlate metrics across layers and use distributed tracing to pinpoint the exact service and operation causing latency, rather than guessing. Mention the importance of establishing a baseline and comparing against it to identify anomalies.

1. Clarify and Scope

Ask clarifying questions to understand the latency issue: when did it start, what's the impact, is it affecting all requests or specific endpoints, and what's the expected latency? This helps narrow down the investigation.

2. Check High-Level Metrics and Traces

Look at overall service latency metrics (p50, p95, p99), error rates, and throughput. Use distributed tracing to identify which service or component is contributing most to the latency.

3. Investigate Each Layer Systematically

Starting from the network, check for packet loss, retransmissions, and DNS resolution times. Then examine load balancer metrics (request rate, latency, error rates, backend health). For the database, check query latency, slow queries, connection pool usage, and replication lag. For the cache, check hit rate, eviction rate, and latency. Finally, inspect the service itself: CPU, memory, GC pauses, thread pools, and external calls.

4. Run Targeted Experiments

Based on hypotheses, run experiments such as: canary deployments to test changes, load testing to reproduce, enabling debug logging, or using chaos engineering to simulate failures. Compare results to baseline to confirm root cause.

5. Mitigate and Prevent

Once root cause is identified, apply immediate mitigation (e.g., scaling, rollback, caching) and propose long-term fixes (e.g., code optimization, infrastructure changes, monitoring improvements).

Key Points to Mention

  • Use of distributed tracing (e.g., Jaeger, Zipkin) to pinpoint latency across microservices.
  • Key metrics per layer: network (latency, packet loss), load balancer (request rate, error rate, backend latency), database (query latency, slow queries, connections), cache (hit rate, eviction rate), service (CPU, memory, GC, thread pools).
  • Experiments: A/B testing, canary releases, load testing, chaos engineering, and profiling.
  • Importance of baselines and percentiles (p95, p99) rather than averages.
  • Consideration of external dependencies and third-party services.
  • Communication and collaboration with other teams (e.g., SRE, DBAs) during investigation.

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

Q5

Compare SQL and NoSQL databases. In what situations would you choose NoSQL over a relational database?

Technical Trade-offsData Modeling
Author's notes

Pretty standard.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by defining the core differences between SQL and NoSQL databases in terms of data model, schema, scalability, and consistency. Then, discuss specific scenarios where NoSQL is preferred, such as handling large volumes of unstructured data, need for horizontal scalability, and flexible schema. Finally, tie your answer to TikTok's scale and real-time data needs to show relevance.

Pro tip: Emphasize that the choice is not about one being better, but about trade-offs; mention that many large-scale systems use a polyglot persistence approach, combining both SQL and NoSQL databases where appropriate.

1. Define SQL and NoSQL

Briefly explain that SQL databases are relational, table-based, with fixed schemas and ACID transactions, while NoSQL databases are non-relational, distributed, with flexible schemas and BASE properties.

2. Compare key dimensions

Contrast them on data model, scalability (vertical vs. horizontal), consistency (strong vs. eventual), and schema flexibility.

3. Identify NoSQL use cases

List situations where NoSQL excels: large-scale, low-latency applications, unstructured or semi-structured data, rapid development with evolving schemas, and high write throughput.

4. Relate to TikTok's context

Connect to TikTok's needs: massive user base, real-time feeds, user-generated content, and global distribution, which often favor NoSQL solutions like Cassandra, MongoDB, or Redis.

5. Acknowledge trade-offs

Mention that SQL is still preferred for complex transactions and strong consistency, and that the best choice depends on specific requirements.

Key Points to Mention

  • Data model: relational vs. document, key-value, graph, column-family
  • Scalability: vertical scaling (SQL) vs. horizontal scaling (NoSQL)
  • Consistency: ACID vs. BASE, strong vs. eventual consistency
  • Schema flexibility: fixed schema vs. dynamic schema
  • Use cases: OLTP vs. big data, real-time web, IoT, content management
  • Examples: MySQL, PostgreSQL vs. MongoDB, Cassandra, Redis, Neo4j

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