MLOps Engineer interview questions
100 real questions with model answers and explanations for Senior candidates.
See a MLOps Engineer resume example →Practice with flashcards
Spaced repetition · Hunter Pass
Questions
I would join every label to feature values that were available at the original prediction time, not when the training job runs.
- Feast historical retrieval should match entity keys and event timestamps, with the label window starting 14 days after prediction so future transactions cannot leak into a row.
- I would retain event time and ingestion time, accept data up to a 48-hour watermark, and version corrections to already published partitions.
- A test would replay 10,000 entity-timestamp pairs in BigQuery and fail if any selected feature timestamp is later than its prediction timestamp.
Why interviewers ask this: The interviewer is checking whether the candidate can prevent temporal leakage while handling delayed labels and late data.
I would require a versioned FeatureView contract that makes semantics, ownership, freshness, and compatibility testable.
- The definition must name the entity key, type, unit, null policy, default, owner, source, and a freshness target such as 15 minutes.
- Type or semantic changes create a new version with a 30-day dual-read window; additive metadata changes can stay backward compatible.
- CI compares 10,000 representative rows from the warehouse and Redis, then blocks publication on schema mismatches or values outside the declared tolerance.
Why interviewers ask this: A strong answer treats a feature definition as an enforceable interface rather than informal catalog metadata.
I would keep history in the warehouse and materialize only current serving values into a partitioned online store.
- BigQuery or Snowflake holds the 50 TB history and runs point-in-time joins without forcing the online tier to retain old versions.
- Kafka and Flink materialize updates into Redis Cluster sized for 130,000 lookups per second, leaving 30% headroom above peak.
- Feast binds both paths to one definition; five-minute freshness checks and checksum samples over 1 million keys catch incomplete materialization.
Why interviewers ask this: The interviewer is evaluating whether the design separates historical and low-latency access while preserving one feature contract.
I would measure freshness at read time from the source event timestamp and make stale behavior explicit in the serving contract.
- Flink writes the event timestamp with each Redis value, and the client records source lag, processing lag, and served age separately.
- Prometheus evaluates the share of reads older than 60 seconds over rolling 10-minute windows and pages only after two consecutive violations.
- The model either uses a versioned fallback value or rejects the prediction after 120 seconds; silently serving an unmarked stale value is not allowed.
Why interviewers ask this: The question tests whether freshness is a measurable consumer contract with defined behavior when the target is missed.
I would isolate historical computation from online publication and promote only the latest valid value after validation.
- Spark writes month-sized offline partitions to shadow tables with pinned source snapshots and resumable partition IDs.
- Backfill compute uses a separate queue, while Redis writes are capped at 5,000 per second against a measured 20,000 per second spare budget.
- A cutover selects the newest event per entity and uses timestamp guards, so an old backfill row can never overwrite a newer streaming value.
Why interviewers ask this: A strong answer protects serving capacity and prevents historical writes from reversing online state.
I would publish a new feature version and migrate each model independently instead of changing the existing value in place.
- Feast exposes average_order_value_v2 while v1 remains available for at least 30 days with separate lineage and ownership.
- Both versions are materialized to Redis, and Evidently compares seven days of coverage, null rate, and PSI with a review threshold of 0.10.
- The three models move through separate Argo CD releases; v1 is deleted only after registry lineage shows zero training and serving consumers.
Why interviewers ask this: The interviewer is checking whether the candidate can evolve shared features without hidden behavioral changes.
I would reduce network round trips and precompute request-ready groups rather than issue 40 independent reads.
- Feast feature services define the exact 40-feature vector, and Redis stores co-read values under two or three entity keys instead of 12 remote calls.
- The budget reserves 3 ms for the client and network, 8 ms for Redis, and 4 ms of tail margin, with a hard 12 ms client deadline.
- Load tests at 60,000 RPS track Redis command latency, payload size, connection-pool waits, and hot-key rate before accepting the layout.
Why interviewers ask this: The question tests practical control of fan-out, payload shape, and a numeric feature-retrieval latency budget.
I would use model-approved fallbacks with explicit age and missingness, not convert every failed read into zero.
- The client keeps a bounded local cache for low-cardinality features and accepts values no older than 10 minutes only where the feature contract permits it.
- Missing online values map to versioned defaults from the training dataset and set missingness indicators the model saw during evaluation.
- A 20 ms deadline and circuit breaker stop retry storms; the degraded prediction rate is measured separately and must stay below 0.5% monthly.
Why interviewers ask this: A strong answer preserves semantic consistency and bounds latency while making degraded predictions visible.
I would deploy 116 replicas because 89 cover the measured peak and a 30% capacity reserve raises that to 116.
- The end-to-end budget allocates 8 ms to routing, 32 ms to inference, and 10 ms to queueing and tail variation.
- Replicas are spread across three zones with topology constraints, and each zone can lose 10 replicas without exceeding safe concurrency.
- Admission control rejects work when queue age passes 8 ms, because adding an unbounded queue would preserve throughput while breaking p99.
Why interviewers ask this: The interviewer wants a capacity calculation tied to failure reserve, latency allocation, and overload behavior.
I would sweep batch size and queue delay against production-shaped traffic and choose the fastest setting that stays inside 35 ms p99.
- Triton Model Analyzer tests batches 4, 8, 16, and 32 with queue delays from 0.5 to 4 ms, recording queue time, execution time, and achieved batch distribution.
- Inputs are bucketed by shape, because padding a mixed batch to the largest image can erase the throughput gain and raise memory use.
- I keep 20% throughput headroom and reject a setting if queueing exceeds 8 ms at 7,200 predictions per second, even when average latency looks good.
Why interviewers ask this: A strong answer connects Triton settings to measured batching, shape compatibility, and tail latency.
I would tune token scheduling and tensor parallelism from the real prompt and output distributions, not a fixed request batch size.
- Benchmark 4 and 8 H100 tensor-parallel layouts with production p50 and p95 prompt lengths, measuring TTFT, time per output token, KV-cache occupancy, and tokens per second.
- Set max_num_batched_tokens so prefill cannot starve decode, and separate interactive requests from batch traffic with distinct queues and concurrency limits.
- Keep KV-cache occupancy below 90% at peak and shed low-priority work when oldest queue age reaches 1.2 seconds, leaving 600 ms for prefill and network tail.
Why interviewers ask this: The interviewer is testing whether the candidate understands continuous batching, KV-cache pressure, and LLM-specific latency metrics.
I would isolate concurrency, queues, and scaling by model while keeping a shared routing contract.
- Popular models get dedicated warm Triton instance groups; rare models may share a pool only if their combined load and memory fit a tested limit.
- The router applies per-model deadlines, concurrency caps, and bounded queues, then routes by immutable model version rather than a mutable latest tag.
- Dashboards split RPS, p99, queue age, GPU memory, and rejection rate by model, and a noisy model loses its own capacity before consuming another model's reserve.
Why interviewers ask this: The question checks whether multi-model efficiency is balanced with resource and latency isolation.
I would scale on queue demand with scheduled warm capacity that covers the four-minute startup gap.
- Keep two warm GPUs for 300 RPS and add one replica per measured 150 RPS when oldest queue age exceeds 20 ms for two minutes.
- A forecast raises the minimum 10 minutes before the daily peak; scale-down waits 15 minutes to avoid unloading a model that will immediately return.
- Cap the fleet at 20 GPUs and shed low-priority traffic above 2,700 RPS, while comparing p99 and cost per million requests with a fixed-capacity baseline.
Why interviewers ask this: A strong answer accounts for startup time, leading load signals, warm reserve, and explicit overload behavior.
I would run complete regional serving stacks and keep model and feature reads inside the selected region.
- Each region normally handles about 13,300 RPS but is sized for 24,000, so the remaining two can absorb all traffic after one region is removed.
- The 60 ms budget assigns 15 ms to global routing and network, 15 ms to features, 20 ms to inference, and 10 ms to serialization and tail margin.
- The global load balancer removes an unhealthy region within 10 seconds, and quarterly load tests verify 40,000 RPS without synchronous cross-region calls.
Why interviewers ask this: The interviewer is checking the arithmetic of regional capacity, locality, failover time, and latency budget.
I would use deterministic cohorts and increase traffic only after both service and model metrics pass a fixed observation window.
- Route 1%, 5%, 20%, and 50% for 30 minutes each, keeping users pinned by account ID so comparisons are not contaminated by version switching.
- Roll back if p99 rises by more than 10 ms, errors exceed baseline by 0.2 percentage points, or the primary ranking metric drops more than 1%.
- Argo Rollouts moves an immutable model and image digest, while MLflow stores the exact baseline, candidate, thresholds, and decision as release evidence.
Why interviewers ask this: A strong answer defines traffic, sample windows, measurable gates, and deterministic rollback.
I would mirror eligible requests asynchronously and isolate shadow capacity from the response-serving path.
- The gateway publishes sampled request references to Kafka after the production response path, and a separate consumer calls the candidate with side effects disabled.
- Correlation IDs join baseline and candidate outputs for 3,000 RPS of paired analysis, while sensitive fields are removed before the mirror topic.
- Shadow workers have their own GPU quota and drop work when lag exceeds five minutes, because replay completeness is less important than production p99.
Why interviewers ask this: The interviewer is testing whether shadow evaluation stays comparable, privacy-aware, and isolated from serving latency.
I would stage immutable weights near the GPU nodes and keep readiness false until the runtime completes a real warm-up.
- A DaemonSet or image pre-puller caches the model digest on local NVMe, reducing the 90-second remote transfer to a measured load from local disk.
- Triton loads the model explicitly and runs 20 representative warm-up requests before the readiness probe admits traffic.
- Keep at least one spare warm node per zone; this costs idle capacity but is required because autoscaling cannot beat a 25-second target from a cold remote download.
Why interviewers ask this: A strong answer separates download, runtime initialization, warm-up, and the cost of meeting a strict readiness target.
I would use RawDeployment for the 70 ms endpoint unless measured Knative queueing and cold starts fit the budget.
- RawDeployment gives direct control of pods, HPA signals, disruption budgets, and warm replicas, which suits steady high-volume GPU traffic.
- Serverless mode is useful for sparse CPU models that tolerate scale-to-zero, but a 20-second model cold start cannot satisfy a synchronous 70 ms request.
- I would load-test both at the same 1,000 RPS profile and compare proxy overhead, p99, scale-up time, and cost before standardizing the runtime class.
Why interviewers ask this: The question tests whether a named serving abstraction is chosen from measured latency and traffic behavior.
I would declare both as tested deployment targets and route by queue headroom, not use CPU as an unverified emergency fallback.
- GPU handles the steady peak where batching lowers unit cost; CPU absorbs low-volume periods if its full path remains below 100 ms p99.
- The router sends work only to pools with queue age below 15 ms and preserves 20 ms for feature retrieval and network overhead.
- Compare dollars per million successful predictions at 100, 1,000, and 10,000 RPS, including idle GPU cost, before setting the crossover point.
Why interviewers ask this: The interviewer is checking whether latency compatibility and unit economics drive CPU and GPU routing.
It is only correct if the $18,000 includes all attributable work and the denominator is defined as successful production predictions.
- Include GPUs, CPUs, gateways, storage, network, licenses, and telemetry, and report idle or unattributed spend instead of silently spreading it.
- Keep failed, retried, shadow, and warm-up work in the numerator but outside the successful-prediction denominator, with separate rates for diagnosis.
- Also report cost per token or item when request sizes vary, because a cheap average can hide one cohort consuming most accelerator time.
Why interviewers ask this: A strong answer makes the numerator, denominator, and workload-size effects auditable.
Locked questions
- 21
You must train a 13B-parameter transformer with AdamW on 64 A100 80 GB GPUs. Would you use DDP or FSDP?
nlp - 22
A 70B FSDP job on 64 spot GPUs needs checkpoints under five minutes and restore on 32 or 64 GPUs. How would you implement it?
- 23
Twenty jobs request between 8 and 64 GPUs across four Kubernetes clusters. How would you avoid partial allocations and starvation?
kubernetes - 24
A 64-GPU training job shows 45% GPU utilization. What measurements would you take before adding hardware?
gpu - 25
How would you feed 128 H100 GPUs that need 80 GB per second of aggregate training data?
aggregation - 26
An eight-node job scales only 4.5 times over one node. How would you determine whether NCCL topology is the limit?
- 27
Spot GPUs are 60% cheaper but each GPU has a 10% hourly interruption rate. When are they worthwhile for training?
gpu - 28
Would you use elastic training for a job whose GPU count may change from 16 to 64 during a run?
gpu - 29
You need to run 2,000 hyperparameter trials with only 64 GPUs. How would you allocate the budget?
hyperparameters - 30
Three teams share 128 GPUs; one submits many 1-GPU jobs and another needs a weekly 64-GPU run. How would you set quotas?
gpu - 31
What must a run record contain so a training result can be reproduced six months later on another cluster?
- 32
What exactly identifies a model version in a registry when the same weights can run in several serving images?
model-servingregistries - 33
A team wants to promote model version 42 to production. What automated evidence would you require in MLflow?
experiment-tracking - 34
How would you trace a production prediction back to its training inputs without storing every raw request forever?
tracing - 35
A registered PyTorch model works in CI but fails on a CUDA runtime in production. What compatibility contract would have prevented it?
- 36
How would you guarantee rollback from model version 43 to 42 in under five minutes?
deployment-strategiesrollback - 37
The registry contains 10,000 versions and 80 TB of artifacts. How would you delete data without losing rollback or audit lineage?
rollbackartifactsregistries - 38
Two release pipelines try to move the production alias at the same time. How would you prevent a lost update?
pipelinesci-cd - 39
A numeric feature receives one million values per day. How would you detect meaningful drift without alerting on every statistical difference?
alertingiacdrift - 40
How would you monitor a categorical feature with 500 values and a long tail of rare categories?
monitoring - 41
An hourly partition must pass data-quality checks before entering the feature store. What tests and thresholds would you use?
mlopspartitioningtesting - 42
How would you detect train-serve skew for features computed through Feast offline and online?
train-serve-skewfeature-store - 43
Labels arrive after 21 days. How would you decide whether a live model is degrading before and after labels mature?
- 44
The global prediction distribution is stable, but a small country cohort may be drifting. How would you catch it without noisy alerts?
alertingiacdistributions - 45
A retraining workflow waits for warehouse data, trains on Kubernetes, and publishes to MLflow. Where would you use Airflow versus Kubeflow Pipelines?
kubernetesairflowci-cd - 46
A Kubeflow pipeline retries after the controller restarts. How do you prevent duplicate training and model registration?
ci-cdkubeflowpipelines - 47
You must backfill 365 daily pipeline partitions while normal daily runs continue. How would you schedule and validate it?
pipelinespartitioningvalidation - 48
What CI gates would you run before a model artifact can become a release candidate?
artifacts - 49
How would you implement model CD from an approved registry version to 100% production traffic?
registries - 50
A new model requires one additional input field. How would you test compatibility and keep rollback under five minutes?
deployment-strategiesrollback - 51
A fraud model's AUC falls from 0.84 to 0.76 when 21-day labels mature, but serving SLOs are healthy. What do you do?
slomodel-servingevaluation - 52
Checkout conversion drops 8% after a ranking-model release, while offline NDCG and latency are unchanged. How would you decide whether to roll back?
latencyrollback - 53
PSI reaches 0.35 for income in one country, but the global model metric is stable. How would you respond?
monitoring - 54
A daily train-serve skew check shows 4.2% feature mismatches after a preprocessing release; the limit is 0.2%. How do you find the boundary?
train-serve-skew - 55
An upstream producer changes transaction amounts from dollars to cents without a schema change, and model scores shift within 20 minutes. What do you do?
transactionsschema - 56
A binary classifier's positive rate jumps from 12% to 61% in one hour, while labels will not arrive for 30 days. What do you do?
- 57
A credit model keeps the same ROC AUC, but expected calibration error rises from 0.02 to 0.09. How would you handle it?
evaluation - 58
Overall recall is unchanged, but recall for a 6% user cohort falls from 72% to 54% after retraining. What decision would you make?
retrainingcohorts - 59
At 15,000 RPS, inference p99 jumps from 70 ms to 240 ms after a platform release while error rate stays low. Walk through your response.
- 60
Median latency remains 32 ms, but p99 rises from 95 ms to 310 ms for 2% of requests. What do you inspect first?
latency - 61
A Triton config change raises throughput 25% but moves p99 from 38 ms to 82 ms against a 60 ms SLO. Do you keep it?
configserving-toolsthroughput - 62
vLLM time to first token rises from 900 ms to 3.4 seconds when concurrency passes 80, but token throughput still looks high. How do you debug it?
tokensthroughputconcurrency - 63
A dependency slows down, clients retry three times, and serving traffic grows from 20,000 to 55,000 RPS in two minutes. How do you stabilize it?
resiliencemodel-servingdependencies - 64
One newly deployed model consumes 70% of a shared GPU and pushes four other models over their latency SLOs. What do you do?
latencygpudeployment - 65
Scale-up takes 110 seconds and causes 6% timeouts during a predictable morning peak. How would you reduce impact this week?
resilience - 66
Feature lookup p99 rises from 8 ms to 90 ms and consumes most of a 120 ms endpoint budget. How do you respond?
endpoints - 67
One serving region fails at 40,000 global RPS, and the other two reach 92% capacity. What actions do you take in the first ten minutes?
capacitymodel-serving - 68
GPU memory grows by 400 MB per hour after a runtime upgrade and pods OOM after 18 hours. How do you investigate?
memorygpu - 69
A canary passes latency and errors, but its online quality proxy falls 4% at the 20% traffic stage. What do you do?
proxydeployment-strategieslatency - 70
The production alias points to version 46, but half the pods still serve version 45. How do you recover without downtime?
- 71
A daily training pipeline grows from six hours to fifteen over one week with the same model code. How do you diagnose it?
pipelinesci-cd - 72
Training starts OOMing after average sequence length rises from 1,200 to 3,800 tokens. What do you change first?
tokens - 73
A 64-GPU job hangs at step 18,400 with no exception and all GPUs allocated. How do you debug it?
gpuerror-handling - 74
GPU utilization falls from 82% to 41% after a dataset refresh, while model compute time is unchanged. What do you inspect?
gpu - 75
A distributed checkpoint now takes 25 minutes, exceeding the five-minute target. How do you narrow it down?
distributed - 76
A spot training job restarts six times and is now 30% more expensive than on-demand. What decision do you make?
- 77
Airflow retries a submission and creates two 32-GPU training jobs for the same run. How do you contain and fix it?
airflowgpu - 78
A Kubeflow run finishes training, but remains Running for two hours and never registers the model. How do you debug it?
kubeflow - 79
A 365-day backfill takes all Spark slots and delays the daily training SLA by four hours. What do you do?
backfill - 80
A pipeline cache returns a model trained on yesterday's data after today's source partition was corrected. How do you prevent recurrence?
pipelinescachingpartitioning - 81
Replaying a six-month-old run changes accuracy from 91.4% to 89.8%. How do you find why?
- 82
A team begins publishing 800 GB checkpoints every 30 minutes and fills shared storage. How do you respond?
- 83
Monthly GPU spend rises from $120,000 to $260,000 without a product launch. How do you investigate and contain it?
gpu - 84
A training fleet averages 38% GPU utilization while jobs wait six hours for capacity. What changes would you test first?
capacitygpu - 85
A hyperparameter sweep launches 1,500 trials overnight and burns 9,000 GPU-hours with no better model. What do you change?
hyperparametersgpu - 86
One team splits work into hundreds of tiny jobs to dominate a first-come GPU queue. How would you correct the policy?
gpudata-structures - 87
You must cut serving cost per million predictions by 30% in six weeks without worsening a 90 ms p99 SLO. What do you try?
slomodel-serving - 88
The cloud bill shows 420 GPU endpoints, but the registry lists only 310 active deployments. How do you clean this up safely?
deploymentregistriesendpoints - 89
At 02:00, 75% of model endpoints start returning 503 after a certificate rotation. You are on call. What do you do first?
endpoints - 90
The model registry is unavailable for 40 minutes, but existing endpoints are healthy. What should on call preserve and disable?
registriesmodel-registryendpoints - 91
The online feature store is fully unavailable during peak traffic for 12 minutes. How do you run the incident?
mlopsincidentsfeature-store - 92
After regional failover, Europe serves model 31 while the US serves model 32, and outputs differ by 7%. What do you do?
- 93
A retry storm causes a 47-minute platform outage and 18 million failed predictions. What must the postmortem produce?
incidentsresilience - 94
A teammate proposes retrying every failed inference once per second for five minutes. How would you review that change?
resilience - 95
A mid-level engineer says, 'We need more GPUs' after p99 rises from 80 ms to 160 ms. How would you coach the investigation?
- 96
Three teams implement the same text preprocessing differently, causing 2% train-serve mismatches. How would you establish a standard?
- 97
A high-revenue team asks to bypass model CI for a launch in 48 hours. What would you allow?
- 98
A teammate wants to upgrade CUDA across 70 production models in one maintenance window. How would you change the plan?
- 99
A managed training vendor is down for six hours during a deadline, and moving one run would take two hours. Do you fail over?
procurementestimation - 100
A product owner wants to promote a model today, but a reviewer finds a 6% recall loss in one critical slice. How do you resolve it?