The Data Foundry
Built by Data with Pranjal
All Practice
Choose a guided lab or practice track
SQL Lab
Interview SQL with real data and validation
Python Lab
Data engineering Python practice
PySpark Lab
Spark code review and production fixes
Airflow Lab
DAG incidents, retries, sensors, and backfills
AWS Lab
Service choices, architecture, security, and cost
System Design Studio
Architecture trade-offs and interview framing
The Data Foundry is improving every week. If something feels unclear, broken, or missing, tell us and we will use it to improve the platform.
Inspect the data, write the solution, run validation checks, and explain the production lesson.
Labs
75
In progress
0
Done
Free
20
Choose a question first
Open any Python question from the library. Once you choose one, the question navigator stays on the left so moving to the next lab is quick.
Implement the function for this coding task: Reverse a string.
Implement the function for this coding task: Check whether a string is a palindrome.
Implement the function for this coding task: Find the first non-repeating character.
Implement the function for this coding task: Check whether two strings are anagrams.
Implement the function for this coding task: Find the most frequent character.
Implement the function for this coding task: Longest common prefix.
Implement the function for this coding task: Compress a string with counts.
Implement the function for this coding task: Validate parentheses.
Implement the function for this coding task: Count vowels and consonants.
Implement the function for this coding task: Word frequency from a sentence.
Implement the function for this coding task: Remove duplicates while preserving order.
Implement the function for this coding task: Find the missing number from 1 to n.
Normalize raw payment status strings into success, failed, pending, and unknown buckets, then return the count for every bucket.
Read log lines and return unique job IDs from lines containing FAILED or ERROR. Job IDs may appear as job_id=... or job=....
Given event dictionaries, keep the first valid occurrence of every event_id and preserve arrival order.
For each record, identify required fields whose value is None or an empty string.
Aggregate quantities by sku. Inbound movements add stock; outbound movement types out, sale, and ship subtract stock.
Extract unique dates from paths containing dt=YYYY-MM-DD or date=YYYY-MM-DD.
Mask each valid email as first_letter***@domain. Invalid or missing emails should return None.
Count success-like statuses and return success percentage rounded to two decimals.