Remote data engineer interview questions and answers
Remote data engineer interviews usually have four parts: a SQL test, a Python exercise, a system design round where you sketch a pipeline, and a conversation about pipelines you've built and incidents you've handled. Interviewers care less about which tools you know and more about whether your pipelines would survive failures, late data and growth.
These are the questions that come up most, with what's behind them and how to answer.
Updated October 2026 by the WorkRemote careers team
On this page
About the role and your experience
Openers that check you understand the job and have done the work.
How do you work with analysts and data scientists who use your tables?
Why they ask
Data engineers who ignore their users build tables nobody uses.
How to answer
Talk about gathering requirements (grain, history, freshness), documenting tables, announcing changes in advance, and fixing what users complain about.
Show a sample answerHide the sample answer
I treat them as my customers. Before building, I ask what questions they're answering, how fresh the data must be and what grain they need. I document every model in dbt and give two weeks' notice in Slack before changing or removing a column.
Technical questions
What you know and how you'd do the work, often with a live task or test.
What is the difference between batch and streaming processing, and when would you choose each?
Why they ask
A basic design judgement. Streaming is more complex and expensive, so they want to see you don't reach for it by default.
How to answer
Batch processes data in scheduled chunks (hourly, daily); streaming processes events continuously within seconds. Choose streaming only when the business needs fresh data to act on, like fraud checks or live tracking; use batch for reporting and most analytics.
Show a sample answerHide the sample answer
For a finance dashboard that people check each morning, a daily or hourly batch is cheaper and easier to fix. For blocking a suspicious card payment, you need the event within seconds, so I'd stream it through Kafka. I'd ask how fresh the data really needs to be before choosing.
What does it mean for a pipeline to be idempotent, and how do you make one?
Why they ask
Jobs fail and get re-run constantly. Non-idempotent pipelines create duplicates and wrong numbers.
How to answer
Idempotent means running it once or five times for the same period gives the same result. Methods: overwrite a date partition instead of appending, use MERGE or upsert on a unique key, and make each run depend on its logical date, not the current time.
Show a sample answerHide the sample answer
If yesterday's load failed halfway and I re-run it, I shouldn't get double rows. I usually load each day into its own partition and overwrite that partition on every run, or MERGE on the transaction ID. The job takes its date from the scheduler's logical date, so a backfill for 3 March gives the same output whenever I run it.
Explain a star schema. What goes in a fact table and what goes in a dimension table?
Why they ask
Data modelling is core to the job and to how usable the warehouse is.
How to answer
A star schema has a central fact table of events or measurements (orders, payments) with foreign keys to dimension tables describing the who, what, where and when (customers, products, dates). Facts are numeric and narrow; dimensions are descriptive and wider. Mention the grain of the fact table.
Show a sample answerHide the sample answer
A
fct_orderstable at one row per order line, with keys todim_customer,dim_productanddim_date, plus measures like quantity and amount. Dimensions hold attributes like customer state or product category. Agreeing the grain first stops a lot of double counting later.How would you implement a type 2 slowly changing dimension?
Why they ask
History tracking comes up in almost every warehouse, for things like a customer's plan or address over time.
How to answer
Keep a new row for each change, with valid_from and valid_to dates and a current flag. On each load, compare incoming records to the current version; if tracked columns changed, close the old row and insert a new one. In dbt, snapshots do this for you.
Show a sample answerHide the sample answer
Each customer can have several rows: one per version, with
valid_from,valid_toandis_current. When someone moves from the Basic plan to Pro, I setvalid_toon the Basic row and insert a Pro row withvalid_tonull. Then finance can see which plan each customer had on the day they paid. In dbt I'd use a snapshot with the check or timestamp strategy.Write a query that keeps only the latest record for each customer from a table with duplicates.
Why they ask
Deduplication is a daily task, and it's an easy test of window functions.
How to answer
Use
ROW_NUMBER()partitioned by the key and ordered by the update timestamp descending, then keep row 1. Mention tie-breakers.Show a sample answerHide the sample answer
```sql
WITH ranked AS (
SELECT *,
ROW_NUMBER() OVER (
PARTITION BY customer_id
ORDER BY updated_at DESC, ingested_at DESC
) AS rn
FROM raw_customers
)
SELECT *
FROM ranked
WHERE rn = 1;
```In BigQuery or Snowflake I could also use
QUALIFY ROW_NUMBER() OVER (...) = 1and skip the CTE.How do partitioning and clustering reduce cost in BigQuery or Snowflake?
Why they ask
Warehouse bills are a real concern, and remote teams want engineers who watch them.
How to answer
Partitioning splits a table by a column (usually date) so queries filtering on it scan only the partitions they need. Clustering sorts data within storage by chosen columns so the engine can skip blocks. In BigQuery on-demand pricing you pay for bytes scanned, so less scanning means a smaller bill.
Show a sample answerHide the sample answer
On a large events table I'd partition by event date and cluster by customer ID. A query for last week's events for one customer then reads a tiny slice instead of the whole table. I'd also require a partition filter on that table so nobody runs a full scan by accident.
What is the difference between ETL and ELT?
Why they ask
Checks you understand how modern data stacks are built.
How to answer
ETL transforms data before loading it into the warehouse; ELT loads raw data first and transforms it inside the warehouse, usually with SQL and dbt. ELT became common because cloud warehouses are cheap and powerful, and keeping raw data lets you rebuild models.
Show a sample answerHide the sample answer
In ELT I'd land raw Paystack and app data in the warehouse as it is, then build clean models in dbt. If we find a bug in a model, I can rebuild from raw. ETL still makes sense when you must clean or mask sensitive data before it reaches the warehouse.
How do you handle late-arriving data?
Why they ask
Mobile events, bank settlements and partner files often arrive days late. Naive pipelines miss them.
How to answer
Process by event time, not load time; reprocess a rolling window (for example the last three days) on each run; use MERGE so updates replace old rows; and in streaming, use watermarks with an allowed lateness.
Show a sample answerHide the sample answer
Payment settlements from one provider can arrive two days late. So each daily run reloads the last three days of partitions using MERGE on the payment ID, and the finance model only marks a day as final after that window closes.
A Spark job that joins two large tables is very slow. How would you investigate?
Why they ask
Spark performance problems are common and expensive. They want to know you understand shuffles and skew.
How to answer
Check the Spark UI for long stages and uneven task times. Common fixes: broadcast the smaller table if it fits in memory, filter and select columns before joining, fix data skew (salting hot keys or using adaptive query execution), and choose sensible partition counts.
Show a sample answerHide the sample answer
I'd open the Spark UI and look at the join stage. If one task takes 40 minutes while the others take one, that's skew, maybe from a single merchant with millions of rows. I'd turn on adaptive query execution's skew handling or salt that key. If one side is small, a broadcast join avoids the shuffle altogether.
In Airflow, what is a backfill, and what can go wrong with one?
Why they ask
Backfills are routine and risky. This checks real Airflow experience.
How to answer
A backfill runs a DAG for past dates, for example after fixing a bug or adding a new table. Problems include tasks that aren't idempotent, using the current date instead of the run's logical date, overloading source systems with many parallel runs, and unexpected costs. Control concurrency and test on one date first.
Show a sample answerHide the sample answer
If I fix a bug in March's revenue model, I backfill March by running the DAG for each of those dates. It's only safe if each task uses its logical date and overwrites its own partition. I'd test one day, then limit active runs so we don't hammer the production database.
How do you make sure the data in your pipelines is correct?
Why they ask
Wrong data that looks right is the worst failure in data engineering.
How to answer
Describe layered checks: schema and type checks on ingestion; dbt tests for unique, not null, relationships and accepted values; row-count and freshness checks; and reconciliation against source totals for key tables. Alert the right people when they fail.
Show a sample answerHide the sample answer
Every model has dbt tests for primary keys and important columns. On top of that I check source freshness and compare daily row counts with the previous week, alerting if they move by more than a set percentage. For payments, I reconcile daily totals with the provider's settlement report, because finance trusts that number.
In Kafka, how is message ordering guaranteed, and what does 'at-least-once' delivery mean for you?
Why they ask
Streaming roles need you to understand Kafka's guarantees and their consequences.
How to answer
Ordering is guaranteed only within a partition, so messages that must stay in order need the same key. At-least-once means a message may be delivered more than once (for example after a consumer crash), so consumers must handle duplicates, usually with an idempotent write keyed on a unique ID.
Show a sample answerHide the sample answer
If wallet events for one customer must stay in order, I key them by customer ID so they land on the same partition. With at-least-once delivery, a consumer might see the same event twice after a restart, so I write with an upsert on event ID and the second copy changes nothing.
Behavioural questions
Past situations. Answer with a real example: what happened, what you did, what changed.
Tell me about a pipeline you built. What would you design differently now?
Why they ask
They want depth on real work and evidence that you learn from it.
How to answer
Describe the sources, the tools, the scale and who used it. Then give a specific, honest improvement, such as testing, idempotency or cost.
Show a sample answerHide the sample answer
At my current job I built the pipeline that brings transactions from our core banking database into BigQuery every hour, using Airflow and dbt, about two million rows a day. It works, but I built it to append, so re-runs caused duplicates twice. I'd design it with partition overwrites and MERGE from day one, and add reconciliation tests earlier.
Situational questions
Hypotheticals about problems you'd meet in the job.
The overnight load failed and the CEO's dashboard is wrong. The board meeting is at 9am UK time. What do you do?
Why they ask
Tests prioritisation, communication and calm under pressure.
How to answer
Tell stakeholders first so nobody presents wrong numbers, then find the failing step, fix or re-run it, verify the output, and confirm. Afterwards, write a short incident note and add a check that would have caught it earlier.
Show a sample answerHide the sample answer
First I'd post in the data channel and message the CEO's assistant that the dashboard shows yesterday's numbers and we're fixing it. Then I'd check the Airflow logs; if it's a source timeout, I'd re-run the failed task and verify totals against the source. Once it's correct, I'd confirm in the same thread. Afterwards I'd add an alert so we hear about failures at 4am, not 8am.
The warehouse bill doubled last month. How would you find out why?
Why they ask
Cost ownership is part of the job at remote startups watching every dollar.
How to answer
Use the warehouse's query history to rank queries and users by cost, look for new or changed jobs, full table scans, runaway dashboards refreshing too often, or a forgotten compute cluster. Fix the biggest items first and add budgets and alerts.
Show a sample answerHide the sample answer
In BigQuery I'd query the INFORMATION_SCHEMA jobs views to rank queries by bytes billed for the month. Often it's one dashboard refreshing every five minutes against an unpartitioned table, or a new model doing a full rebuild instead of an incremental one. I'd fix those, then set a budget alert so we see it next time.
Remote work questions
How you'll work from Nigeria with a team elsewhere: hours, power, internet, communication.
How do you handle on-call and handovers when the team is spread across time zones?
Why they ask
Remote data teams often share on-call duty. They want to know how you'll fit in.
How to answer
Be clear about which hours you can cover, how you document incidents and how you hand over unfinished work.
Show a sample answerHide the sample answer
Lagos is on London time or one hour ahead, so covering the early UK morning works well for me, and I'd be happy to take the slot before the business day starts. When I hand over, I write in the incident channel what broke, what I tried and what's still open, so the next person doesn't start from zero.
What is your setup for working remotely, given power and internet in Nigeria?
Why they ask
They need to know you'll be reachable during incidents and calls.
How to answer
Be specific: backup power, two internet providers, a phone hotspot, and that heavy jobs run in the cloud rather than on your laptop.
Show a sample answerHide the sample answer
I have an inverter and solar that keep my laptop and router running through outages, a fibre connection and a 4G MiFi on a different network. Pipelines run in the cloud, so a local outage doesn't stop jobs, and I can still log in from my phone to check Airflow if I need to.
Remote interview tips
Practise system design out loud. Sketch a pipeline on Excalidraw or Miro while talking: sources, ingestion, storage, transformation, orchestration, quality checks, consumers. Interviewers want to hear how you'd handle failures and late data, not just the boxes.
Have your repo ready. Share your portfolio pipeline's GitHub link and be ready to walk through the DAG, the dbt models and the tests on a screen share.
Warm up on SQL the same day. Do two or three window function and deduplication problems before the interview. It's the round people fail most often.
Confirm times in both zones. Write "10am BST / 10am WAT" or "9am ET / 2pm WAT", and double-check around the March and October clock changes.
Ask about on-call and data volume. Questions like "Who gets paged when the overnight load fails?" and "How much data do you process a day?" show experience and tell you what the job is really like.
Questions people ask
What SQL is asked in data engineer interviews?
Harder SQL than analyst interviews: window functions, deduplication, gaps-and-islands problems, incremental loads with MERGE, and questions about performance and query plans. Expect at least one timed SQL round.
Do data engineer interviews include LeetCode questions?
Sometimes. Some companies include an easy or medium coding question in Python, but most focus on SQL, data manipulation and pipeline design. Practise Python dictionaries, lists, file handling and APIs before algorithms.
What is asked in a data engineering system design interview?
You design a pipeline for a business need, such as daily reconciled payments or a real-time order feed. Interviewers look at your choice of batch or streaming, storage, modelling, idempotency, data quality, monitoring and cost.
How do I prepare for a data engineer take-home task?
Expect something like "ingest this API or file, model it and make it runnable". Use Docker, write tests, include a clear README and explain trade-offs. A small, working, well-documented solution beats an ambitious broken one.
Updated October 2026 by the WorkRemote careers team
Interview questions for roles close to data engineer
- Data Analyst
A data analyst pulls numbers out of a company's databases and spreadsheets, works out what they mean and reports it so managers can decide what to do. It is one of the more realistic remote jobs to land from Nigeria, because the work is all on a laptop and employers judge you on SQL, dashboards and a portfolio rather than where you live.
- Data Scientist
A data scientist uses statistics, machine learning and code (mostly Python and SQL) to predict outcomes and test what works, such as which loan applicants will default or whether a new feature lifts sales. You can do it remotely from Nigeria, but remote entry-level data science jobs are rare, so most people get in through a data analyst role, a strong portfolio or a master's degree.
- Machine Learning Engineer
A machine learning engineer takes models, including large language models, out of notebooks and into products: building the data pipelines, APIs, monitoring and infrastructure that let them run reliably for real users. It can be done fully remotely from Nigeria, but it is mostly a mid-level and senior job that people reach from software engineering or data science.
- Database Administrator
A database administrator (DBA) keeps a company's databases fast, backed up, secure and available, from tuning slow queries to restoring data after a bad deploy. Remote DBA work from Nigeria is realistic for experienced people, but it is rarely a first tech job, and many remote ads now fold the role into DevOps, site reliability or data platform engineering.