Question 1Coding
Here's a CSV export from a customer. Write a script that cleans it and loads it into our API.
Very close to real FDE work. They watch how you handle bad rows and failures.
“Engineering background. You're a genuine builder. Proficient in Python and at least one of TypeScript/JavaScript, Java, or Go; comfortable across data plumbing, APIs, and a bit of front-end when a demo needs it.”Forward Deployed Engineer · NinjaTech AI
The answerFour steps
- 1
Read with a proper CSV parser; check the header first
Say it like this
“I open it with Python's csv module, not a split on commas, and check the header before reading any rows. Excel exports often start with a BOM, so I read with utf-8-sig.”
Why it scores
Real parser and a header check. Quoted commas and BOMs break naive scripts.
- 2
Validate each row and collect errors, not crash on the first one
Say it like this
“Each row goes through a validate function that returns a clean record or a list of errors: missing email, bad date, duplicate ID. Bad rows go to an errors file with their line number, and the script keeps going.”
Why it scores
Collects errors instead of crashing. The customer gets a fix list, not a stack trace.
- 3
Send in batches with retries and a clear report at the end
Say it like this
“Then I post in batches of 100, retry 429s and 5xx errors with backoff, and finish with a summary: 18,000 read, 17,640 loaded, 360 rejected, and where to find them.”
Why it scores
Batches, retries and a final count. Sounds like someone who has loaded real data.
- 4
Write one or two quick tests for the parsing
Say it like this
“Last, two quick pytest cases: a row with a comma inside quotes, and one with a missing field.”
Why it scores
Tests aimed at the edge cases that actually break parsing.
StrongAll together
About a minute, out loud. The marked parts are the four steps; hover one to find it above.
Say it's 18,000 tenants from a property manager's Excel export. I open it with Python's csv module, not a split on commas, and check the header before reading any rows. Excel exports often start with a BOM, so I read with utf-8-sig.1 Each row goes through a validate function that returns a clean record or a list of errors: missing email, bad date, duplicate ID. Bad rows go to an errors file with their line number, and the script keeps going.2 Then I post in batches of 100, retry 429s and 5xx errors with backoff, and finish with a summary: 18,000 read, 17,640 loaded, 360 rejected, and where to find them.3 Last, two quick pytest cases: a row with a comma inside quotes, and one with a missing field.4
WeakThe answer that fails
Sounds fine. Common. Scores low.
“I'd load it with pandas, drop the rows with nulls, then loop through and POST each row to the API. If something fails, I'd log the error and fix it.”
Interviewer's note
Silently drops data, one request per row, no report. The customer can't tell what loaded and what didn't.
PracticeTwo minutes, then they push back
Your turn
Here's a CSV export from a customer. Write a script that cleans it and loads it into our API.
Answer like you're in the room: about two minutes, no notes. Say it out loud, even alone. It feels different from thinking it. Then check your answer against what interviewers score.