Data Visualization and Dashboard Design Questions
Designing visuals and dashboards that communicate clearly. Covers chart-type selection, encoding choices, dashboard layout and hierarchy, avoiding misleading visuals, and designing for the intended audience and decision. Emphasizes effectiveness over decoration.
How should a dashboard handle missing or incomplete data in a metric? Describe both the visual convention (how you show missingness to the viewer) and the backend practice (imputation versus exclusion versus flagging), and when each is appropriate from a product-decision perspective.
Sample Answer
Direct answer
Handle missing or incomplete data on a dashboard with a clear visual convention (a distinct gap, hatch pattern, or explicit "no data" label, never silently interpolated as zero or omitted without a mark) paired with a deliberate backend choice (impute, exclude, or flag) made explicitly for the specific metric and business context, not a single default applied blindly everywhere.
Structured elaboration
- Visual convention: show a genuine gap in a line chart (a broken line, not one that connects straight through the missing period as if nothing happened), or a distinct visual marker (hatching, a "no data" label) on a bar or map, so missingness is never visually indistinguishable from a real zero value.
- Backend practice: exclusion: appropriate when the missing data is a small, random subset and excluding it doesn't bias the remaining aggregate; simplest and most transparent option when it's valid.
- Backend practice: imputation: appropriate when a reasonable estimate (e.g. carrying forward the last known value, or a model-based estimate) is genuinely useful for continuity, but must be clearly labeled as estimated wherever it's shown, since imputed values presented as real ones can silently mislead a downstream decision.
- Backend practice: flagging: showing the actual (possibly zero or partial) value alongside an explicit "incomplete data" flag, appropriate when even a partial number carries some signal but shouldn't be trusted as final.
- Choosing per product-decision context: for a metric feeding a high-stakes decision (e.g. a launch go/no-go), err toward exclusion or clear flagging over imputation, since a wrong imputed number could quietly bias that decision; for a lower-stakes trend view where continuity matters more than precision, a clearly-labeled imputation may be the more useful choice.
Worked example
A daily active-users chart tracking around 41,800 to 42,300 DAU has one day of missing data due to a tracking outage: DAU was 41,800 the day before the outage and 42,300 the day after, while the outage day itself recorded 0 rather than a real value. The chart shows a visible gap (a broken line, not a smooth interpolation connecting 41,800 straight to 42,300 as if nothing happened, and not a misleading drop to 0) with a "data unavailable Jun 14" annotation, while a separate lower-stakes weekly-trend view chooses to carry forward the prior day's value of 41,800 as an explicitly labeled estimate ("estimated, carried forward") to preserve visual continuity for that specific use case.
Trade-offs and pitfalls
Silently interpolating or zero-filling missing data without any visual or textual indication is the most damaging choice here, since it makes a real data gap indistinguishable from either a genuine trend or a genuine zero, actively hiding a data-quality problem from the viewer.
A dashboard user reports being misled by a visual; describe how you would investigate whether the issue is data, design, or user-expectation related. Provide a systematic troubleshooting checklist and mitigation steps for each root cause.
Sample Answer
Direct answer
Treat a "this dashboard misled me" report as an incident: separate whether the underlying data is wrong, the visual encoding is misleading, or the user's mental model of the metric doesn't match how it's actually computed, and investigate each in that order because a design fix cannot repair a data bug and vice versa.
Structured elaboration
- Data correctness: reproduce the exact number from source (query the warehouse directly) and compare to what the dashboard shows. If they disagree, it's a data/ETL bug, not a visualization problem.
- Design/encoding: if the number is correct, check for known misleading patterns: a truncated y-axis, a dual-axis chart with mismatched scales, an ambiguous color legend, or a chart type that doesn't match the comparison being made (e.g. a stacked bar hiding a decline in one segment).
- User-expectation mismatch: if the number and the chart are both technically correct, the issue may be a definitional gap, e.g. the user assumed "active users" meant something different than what's implemented. Check the metric's documented definition against what the user assumed.
Worked example
A stakeholder says "conversion rate looks wrong, it dropped 5 points overnight." Checklist: (1) query raw event counts for that day directly, confirm the drop is real in source data; (2) check whether a filter or default date range silently changed; (3) check whether the chart's y-axis rescaled, making a smaller real change look dramatic; (4) confirm the metric's denominator (sessions vs. unique users) hasn't changed.
Trade-offs and pitfalls
The biggest mitigation is prevention, not investigation: pin the metric's definition in a visible tooltip or footnote, avoid auto-scaling y-axes on metrics people track for stability, and add a "data as of" timestamp so staleness isn't mistaken for a real change.
Describe best practices for designing tooltips on an interactive dashboard: what fields or mini-metrics to include, how to avoid information overload, and when to include small inline visuals like sparklines. Give a concrete example tooltip for a KPI tile.
Sample Answer
Direct answer
A good tooltip shows the exact value with its unit, a comparison (change vs. a prior period or target), and one piece of context (e.g. a rank or a small trend), keeping to 3-4 pieces of information so it doesn't become a second chart the user has to read.
Structured elaboration
- What to include: the precise value (often more precise than what's shown on the visual axis), a labeled unit, a period-over-period or target comparison, and optionally a micro-visual (a tiny sparkline or bar) if it adds real context rather than decoration.
- Avoiding overload: cap the tooltip at a handful of fields; anything beyond that belongs in a drill-through view, not a hover tooltip that has to be readable in a couple of seconds.
- Inline vs. tooltip: put the information every viewer needs at a glance directly on the chart (labels, key annotations); reserve the tooltip for supplementary precision and context that most viewers don't need every time but some viewers occasionally do.
- Micro-visuals in tooltips: a small inline sparkline showing the last several periods' trend can be valuable in a tooltip when the main chart itself doesn't show history (e.g. hovering a single bar in a bar chart), but avoid stacking multiple mini-charts into one tooltip.
Worked example
Hovering a KPI tile labeled "Monthly Active Users": the tooltip reads "MAU: 1.24M; +8% MoM; 30-day avg: 1.19M," giving the exact value, a comparison, and one piece of useful context in three lines, rather than a dense block listing every dimension available in the underlying dataset.
Trade-offs and pitfalls
A tooltip crammed with 10+ fields defeats its purpose (a fast, glanceable supplement) and effectively becomes an unreadable mini-report; if that much detail is genuinely needed, that's a sign the interaction should be a drill-through to a dedicated view, not a bigger tooltip.
Design an approach for instrumenting and measuring dashboard usage across an organization's dashboards: which telemetry events you would collect (filter changes, clicks, time-on-view), the storage/aggregation strategy, privacy controls, and the analysis queries you would run to prioritize UX improvements.
Sample Answer
Direct answer
Instrument dashboard usage by capturing structured telemetry events (filter changes, clicks, time-on-view) into an analytics store, aggregate them into usage summaries per dashboard/widget, apply privacy controls (avoid capturing sensitive filter values verbatim where they could reveal individual-level detail), and run recurring analysis queries that surface which dashboards and widgets are actually driving engagement versus sitting unused.
Structured elaboration
- Event schema: a structured event per user interaction with fields like
dashboard_id,widget_id,event_type(view, filter_change, click, hover, export), aview_start/view_endtimestamp pair (from which time-on-view/dwell time is derived),user_id(or a pseudonymized identifier), and a per-eventtimestamp; keep the schema consistent across all dashboards so cross-dashboard analysis is possible. - Storage strategy: an append-only event log (similar to standard product-analytics event tracking) that can be aggregated later, rather than trying to compute summary statistics inline at write time.
- Sampling/aggregation approach: for very high-traffic dashboards, sampling raw events is acceptable for exploratory analysis, but core usage-count metrics (total views, unique users) should be computed from the full event stream, not a sample, since usage counts are exactly the kind of metric sampling distorts most.
- Privacy controls: pseudonymize or hash the user identifier where individual-level tracking isn't strictly needed, avoid logging the actual VALUES of any filter that could reveal sensitive information (e.g. a filter on a specific customer name), and apply a minimum-aggregation threshold before reporting any usage breakdown at a granular level that could re-identify an individual.
- Typical analysis queries: which dashboards/widgets have the highest and lowest engagement (to prioritize redesign or retirement), which filters are used most often (informing which should be more prominent), and time-of-day/day-of-week usage patterns (informing refresh-cadence decisions).
Worked example
An event log capturing every filter change and widget click across 200 dashboards reveals that 15% of widgets across the portfolio have had zero interaction in 90 days. That 15% figure feeds a dashboard-sprawl-remediation process: each zero-interaction widget is flagged to its dashboard's owner with a 30-day window to either justify keeping it (attach a specific use case or audience) or have it removed; owners who don't respond within the window have the widget automatically archived (removed from the live dashboard but recoverable for 90 days, not permanently deleted); and the full zero-interaction list is reviewed quarterly so genuinely low-frequency-but-real uses (a metric only checked at quarter-end, for instance) aren't caught by a single 90-day window. Separately, the same event log shows that a specific filter is used in over 80% of sessions on one dashboard, suggesting it should be promoted to a default rather than requiring a click to apply.
Trade-offs and pitfalls
Instrumenting extensively without a clear analysis plan produces a large volume of event data nobody actually queries; define the specific decisions this telemetry needs to inform (retirement, redesign, refresh-cadence) before building out the full event schema, so the instrumentation effort is targeted rather than collected "just in case."
You must present a rate metric (for example daily conversion rate) with uncertainty for each period. Describe how you would compute and display a confidence interval or moving-average band on a time series, and how you would determine and communicate whether an apparent decline is statistically meaningful rather than noise.
Sample Answer
Direct answer
Compute a confidence interval for a daily rate metric (e.g. a binomial proportion like conversion rate) using a standard proportion-CI formula, display it as a shaded band around the daily point estimate on the time series, and use the band's width (which naturally narrows as daily volume/sample size increases) to help a viewer judge whether an apparent decline is a real signal or just noise from a low-traffic day.
Structured elaboration
- Computing the interval: for a daily conversion rate (conversions / sessions), a standard approach is a normal-approximation or Wilson-score confidence interval on the daily proportion, using that day's session count as the sample size; days with fewer sessions get wider intervals, correctly reflecting their lower statistical reliability.
- Visualization: a shaded ribbon around the daily conversion-rate line (or error bars at each day, if there are few days to compare) shows the interval directly; days with unusually wide bands (low traffic) visually signal "interpret this day's value cautiously."
- Labeling for sample size and reliability: a small text annotation or a hover tooltip showing the day's raw sample size alongside its rate lets a viewer connect a wide interval to "this was a low-traffic day," rather than assuming the metric itself is simply noisy for no reason.
- Deciding whether a decline is meaningful: compare consecutive days' intervals for overlap; if two days' confidence intervals overlap substantially, the apparent decline is not distinguishable from noise at that sample size, and the chart (via the visibly overlapping bands) should make that conclusion available at a glance rather than requiring the viewer to do the comparison mentally.
Worked example
Using the same normal-approximation formula described above (p +/- 1.96 times the standard error), a conversion rate that drops from 8.2% (2,000 sessions) to 7.1% (150 sessions, a low-traffic day): the 7.1% band on the low-traffic day works out to roughly 7.1% +/- 4.1%, i.e. about [3.0%, 11.2%], which overlaps heavily with the prior day's 8.2% band of roughly [7.0%, 9.4%], correctly signaling that the apparent decline could easily be sampling noise from the smaller sample. It's tempting to assume the same 7.1% on an equally busy 2,000-session day would obviously read as a real decline instead, but computing that band the same way gives roughly [6.0%, 8.2%], which still overlaps the prior day's [7.0%, 9.4%] band by more than a full percentage point, not a clean separation. A two-proportion z-test on those same two 2,000-session days confirms it: z = (0.082 minus 0.071) divided by the square root of (0.0765 times 0.9235 times (1/2000 + 1/2000)) works out to about 1.31, below the 1.96 threshold for significance at the conventional 95% level, meaning the two days are not statistically distinguishable at that sample size either. The drop only becomes clearly non-overlapping once the sample is large enough to narrow both bands substantially: at 20,000 sessions per day, 8.2% narrows to roughly [7.8%, 8.6%] and 7.1% narrows to roughly [6.7%, 7.5%], no overlap, and the same z-test formula gives z of about 4.1, comfortably past the significance threshold. The real lesson is not that a 1.1-point drop at 2,000 sessions is meaningful; it's that it takes roughly 10x more traffic than 2,000 sessions before a 1.1-point drop clears the noise floor.
Trade-offs and pitfalls
Displaying a bare daily rate with no interval at all is the most common mistake, since it treats every day's estimate as equally reliable regardless of how much traffic actually informed it, which is precisely what leads teams to over-react to noisy, low-volume days. A second, subtler mistake is eyeballing whether two bands "look like" they overlap instead of computing the actual test: bands that look close can still sit right at the edge of statistical significance in either direction, so whenever the visual read is ambiguous, compute the two-proportion z-test directly (as above) rather than trusting how wide the shading looks on screen.
Unlock Full Question Bank
Get access to all Data Visualization and Dashboard Design interview questions and detailed answers.
Sign in to ContinueJoin thousands of developers preparing for their dream job.