RecallDeck
Interview track

Data Analyst interview prep

A spaced-repetition deck of 265+ Data Analyst interview questions — organised by topic and difficulty, and resurfaced right before you'd forget. Preview a few cards below, then choose access to study the whole track on an Anki-style SM-2 schedule.

265 cards13 topics
See plans and start trial

7 days free on monthly or yearly · every feature included.

What's covered

Every topic in this track, grouped the way you'd study it.

SQL for Analytics

11 cards
SQL for Analytics

Statistics & Probability

11 cards
Statistics

A/B Testing & Experimentation

9 cards
Experimentation

Product & Business Metrics

10 cards
Metrics

Data Visualization & Storytelling

8 cards
Visualization

Python for Analysts (pandas & matplotlib)

10 cards
Python for Analysts

Analytical Case Studies

7 cards
Case Studies

Python

122 cards
Core LanguageData Model & InternalsConcurrency & AsyncStdlib, Typing & Testing

Databases

42 cards
SQL Fundamentals

Behavioral

35 cards
Behavioral

Sample questions

A few cards from the deck — reveal each answer, then choose access to study the full set on a schedule.

What are window functions and how do they differ from GROUP BY?

Short answer: A window function computes an aggregate over a "window" of rows but does not collapse them — every source row survives and gets its own value. GROUP BY instead folds each group into a single row.

In depth:

  1. GROUP BY — N rows in a group → 1 result row. Detail is lost.
  2. Window function — N rows stay N rows, with an aggregate (sum, rank, average, lag) added alongside.
  3. Syntaxfunc() OVER (PARTITION BY ... ORDER BY ...). PARTITION BY defines the groups, ORDER BY sets order within the window (needed for running totals and ranks).
-- Running total of sales per user
SELECT
  user_id,
  order_date,
  amount,
  SUM(amount) OVER (
    PARTITION BY user_id
    ORDER BY order_date
  ) AS running_total
FROM orders;

⚠️ Common mistake: trying to filter on a window function's result in WHERE — windows are evaluated after WHERE/GROUP BY, so wrap the query in a CTE/subquery and filter on the outside.

How do mean, median, and mode differ, and why is the median better for skewed data (income, latency)?

Short answer: The mean is the sum divided by the count and is sensitive to outliers. The median is the middle value of the ordered data and is robust to outliers. The mode is the most frequent value. For skewed data the median better reflects the "typical" observation.

In depth:

  1. Mean — good for symmetric data and downstream math (variance, regression), but a single outlier shifts it.
  2. Median — the 50th percentile; splits the data in half and barely reacts to extremes.
  3. Mode — the only one of the three that works for categorical data ("most common plan").
Metric When to use Outlier sensitivity
Mean symmetric data, downstream calculations high
Median skewed data: income, latency, prices low
Mode categorical data, most frequent value low

⚠️ Common mistake: reporting the mean for income or latency. A long right tail drags the mean upward, so it no longer describes the typical user — use the median.

How does an A/B test work end to end? Walk through the key steps.

Short answer: An A/B test is a randomized experiment: users are split at random into control and treatment, shown different versions, and compared on a single pre-chosen primary metric under a fixed decision rule.

In depth:

  1. Hypothesis — what you change, which metric it should move, and why.
  2. Metric and MDE — one primary metric plus a minimum detectable effect (MDE).
  3. Randomization — a random, stable split into control/treatment.
  4. Sample size and duration — compute and fix them before launch.
  5. Run to N — run until the sample is reached, without peeking at interim results.
  6. Analysis — compare the metric, compute the p-value and the confidence interval of the lift.
  7. Decision — ship or roll back per the pre-defined rule.
Hypothesis → Randomize → Run to N → Analyze → Decision
              │                                  │
       control / treatment              ship ✓ / rollback ✗

⚠️ Common mistake: changing the UI mid-test or stopping the moment it first looks 'significant' — both break the conclusions.

What makes a metric good, and how does a metric differ from a KPI?

Short answer: A good metric is measurable, comparable, understandable and hard to game, and above all actionable: it can drive a decision. A KPI is the same kind of metric but tied to a goal and a target value for a period; a KPI is a subset of metrics, not a synonym.

In depth:

  1. Actionable, not vanity — a metric should change someone's decision. If the number goes up but nobody knows what to do, it's a vanity metric.
  2. Comparability — prefer rates and ratios (conversion, retention %) over raw counts: they compare across periods and segments.
  3. Hard to game — ask "how could this be inflated without creating value?". "Clicks" are easy to game; "activated users" are harder.
  4. A precise definition — one numerator, one denominator, a fixed window and filters, or two teams will count it differently.
Property Metric KPI
What it is any measurable number a metric with a goal
Tied to a target not necessarily always (target)
How many many a chosen few
Example time on page activation rate ≥ 40% by Q3

⚠️ Common mistake: calling everything a KPI. KPIs are the 3–5 metrics a team is actually judged on; the rest are diagnostic metrics.

How do you pick the right chart type: bar, line, scatter, or pie?

Short answer: The chart type is dictated not by taste but by the kind of relationship in the data: comparing categories — bars, change over time — a line, correlation between two variables — a scatter plot, share of a few parts in a whole — a pie. When torn between a pie and anything else, almost always pick bars.

In depth:

First state which relationship you are showing, and only then choose the visual:

Relationship in data Chart type Why
Comparing categories Bar the eye compares length precisely; axis must start at 0
Change over time Line a line emphasizes trend and continuity
Correlation of X and Y Scatter reveals the cloud, clusters and outliers
Parts of a whole Pie / stacked only for 2–4 parts, summing to 100%
Distribution Histogram / boxplot shows shape, spread, tails
  • Bars — the workhorse for categories; the Y axis starts at zero, otherwise the height difference lies.
  • Line — only for an ordered continuous axis (time, days); never connect unrelated categories with a line.
  • Scatter — for "are X and Y related"; add a trend line if needed.

⚠️ Common mistake: a pie chart with 8 slices — the shares become indistinguishable; replace it with horizontal bars sorted by value.

How does a Series differ from a DataFrame, and how do you load and quickly inspect data?

Short answer: A Series is a one-dimensional labelled array (a single column); a DataFrame is a two-dimensional table of column-Series sharing a row index. You load data with pd.read_csv() / pd.read_sql() and inspect it with .head(), .info(), .describe(), .dtypes, .shape.

In depth:

  1. Series vs DataFramedf['col'] returns a Series; df[['col']] (double brackets) returns a one-column DataFrame. Both carry an .index.
  2. Loadingread_csv (file/URL), read_sql (a SQL query plus a connection), read_parquet (fast columnar format).
  3. Inspecting.head()/.tail() peek at the edges, .info() shows dtypes and null counts, .describe() gives stats on numeric columns, .dtypes lists types, .shape gives size.
import pandas as pd

df = pd.read_csv("sales.csv", parse_dates=["order_date"])
df.shape          # (10000, 8) — rows, columns
df.info()         # column dtypes and non-null counts
df.describe()     # count/mean/std/min/quartiles/max for numerics
df["revenue"].head()   # Series — a single column

⚠️ Common mistake: forgetting parse_dates= on load — the date column stays object (a string), so date arithmetic and resample() won't work.

Ready to make it stick?

Start your first session in under a minute. Your future self, mid-interview, will thank you.

Questions about this track

How should I prepare for a Data Analyst interview?

Study the concepts you'll be asked to explain, not just the ones you can code. RecallDeck's Data Analyst track gives you 265+ curated interview questions and resurfaces each one with an Anki-style SM-2 schedule right before you'd forget it — so the answers are still there under pressure on interview day.

What topics does the Data Analyst track cover?

The Data Analyst track is organised into the core areas Data Analyst interviews actually test, grouped by topic and by difficulty (Concept, Junior, Middle, Senior). You can preview the full outline and sample questions above before signing in.

Is spaced repetition effective for Data Analyst interview prep?

Yes. Actively recalling an answer and grading yourself honestly builds far more durable memory than re-reading notes. RecallDeck schedules each Data Analyst card to reappear at the moment you're about to forget it, so your daily reviews shrink while your recall holds.

Can I try the Data Analyst track before paying?

Yes. Monthly and yearly access include a seven-day trial of the complete Data Analyst track, the full SM-2 scheduler, statistics, flexible pacing, and cram mode. You can cancel online before the first charge.

Other interview tracks

RecallDeckSpaced-repetition interview prep