An AI interviewer for SQL, coding, product and case rounds. It follows your query, code and notes, asks why, and ends with a scorecard that quotes you. Free, no sign-up.
50 questions · 4 roles · 6 company collections · voice or typed
Zomato Checkout Funnel by Platform · SQL · 20 min
Conversation
Interviewer
What is the unit you're counting at each step, and how will you enforce step order?
You
Sessions, not events. Each step uses the first time the previous one happened…
Interviewer
3 of 4 datasets match. What's special about the zero-denominator one?
PostgreSQL
WITH eligible AS (
SELECT s.session_id, s.platform
FROM sessions s
WHERE s.platform IN ('android', 'ios')
), menu AS ( … )
SELECT platform,
ROUND(100.0 * orders
/ NULLIF(menu, 0), 1)
✓ Check answer
✓ Visible sample
✓ Out-of-order events
✓ Duplicate events
× Zero denominator and cutoff
Interviewer notebook
Output grain restated: one row per platform.requirement
Check answer: 3 of 4 datasets match.testing
Open threadHow does your query treat a platform with no menu views?
Fig 0.1 A SQL interview mid-way: the interviewer reacts to your latest check, not a script.
This is not a question bank. It isn't a leaderboard, a streak counter, or a list of questions someone swears they were asked at Google.
It's a room, a question, and an interviewer who is actually listening.
That's the whole idea. The rest of this page explains why.
Part 01The room
The problem was never the problem.
Interviews score how you reach an answer out loud, with someone in the loop. Silent practice doesn't train that.
Most preparation happens in silence: a problem, an editor, a green checkmark. Real interviews don't work that way.
Someone is watching you think. They interrupt. They ask why you chose a hash map, what happens when the list is empty, which number you would check first.
The skill being tested isn't only reaching the answer. It's reaching it out loud, under gentle pressure, with another person in the loop.
What you practise alone
✓ 214 problems solved
✓ 41-day streak
✓ Accepted · beats 92%
the gap
What the room evaluates
? Did you clarify the input before coding?
? Can you name the trade-off you just made?
? What does one row of your query mean?
? How did you use the hint you asked for?
Fig 1.1 Two lists, one gap.
Part 02The noise
Three things that get in the way.
Practice without a listener, rumours dressed as facts, and scores without evidence. Margin answers each one.
Force 01
Practice without a listener
Grinding alone builds pattern recall. It doesn't build the habit of narrating a decision while someone asks “why?”
In Margin a voice interviewer asks one question at a time and follows what's in your workspace: the failing test, the query grain, the branch of your issue tree.
Force 02
Rumours dressed as facts
“Asked at Amazon” tags, frequency charts with no source, casebooks passed around without dates. They feel precise and are rarely checkable.
In Margin every question carries one of four labels, and a label is only used when the evidence exists.
Official sampleThe company published it.
Reported questionA dated candidate report links to it.
Company-inspiredMargin wrote it using public business context.
General preparationRelevant skills, no company claim.
Why the catalog has no “reported” questions yet
No “asked at” tags or frequency statistics are invented. The current catalog has no reported or official questions, because none is backed by a dated source yet. Company context comes from public sources with review dates, and fictional numbers are labelled fictional.
Force 03
Scores without evidence
“7 out of 10” tells you how it went, not why. Without the why, you practise the same mistakes.
In Margin each interview type has its own rubric, and every score quotes what you said, wrote, or ran.
None of this needs to be complicated. It needs to be honest.
House rules, in large print.
Hints are yours to ask for. The interviewer never volunteers one, and each one is recorded on the scorecard.
No scores mid-interview. Evaluation stays private until you end the session.
Fictional numbers are labelled fictional. Company context comes from public sources with review dates.
Suggested times are guidance. The clock is there to help you pace, not to cut you off.
Part 03The margin
An interview, start to finish.
Pick a question and a tone. Work in a real workspace while the interviewer follows along. Leave with evidence, not a vibe.
Before
Choose the room. Check the source. Set the tone.
Start from SDE, ML & Data, Product, or Consulting, or from the company you're targeting. Every brief shows the skills tested, the workspace you'll use, and where the question comes from, with the date its source was reviewed.
Supportive, neutral, or challenging: tone changes the wording and the pacing. It never changes the tests, the evidence standard, or the scorecard.
During
Work where the interview happens.
Python with hidden tests. Real PostgreSQL with edge-case datasets. Notes for cases. A canvas whose text stays editable.
The interviewer sees the latest version of your work, and only speaks when you run, check, or ask.
After
A scorecard that shows its work.
SQL is scored on query correctness and relational reasoning, system design on architecture and trade-offs, consulting on structure and arithmetic. Objective results are pinned; everything else cites evidence.
Same for every tone: voice · tests · evidence standard · scorecard
Interviewer Walk me through your approach before you run it.
Interviewer Why DENSE_RANK here, and not ROW_NUMBER?
Interviewer What would make you reverse that recommendation?
Interviewer Stale after 20 seconds. What does the customer see then?
solution.py▶ Run tests
def two_sum(nums, target):
seen = {}
for i, v in enumerate(nums):
if target - v in seen:
return [seen[target - v], i]
seen[v] = i
7/7 tests passed · 3 visible, 4 additional
Query▶ Run query✓ Check answer
SELECT d.name AS department, r.name, r.salary
FROM (
SELECT *, DENSE_RANK() OVER (PARTITION BY dept_id
ORDER BY salary DESC) AS band
FROM employee) r JOIN department d ON d.id = r.dept_id
WHERE r.band <= 3
department
name
salary
Data
Asha
182000
Data
Ravi
175000
Design
Meera
140000
✓ Ties occupy ranks · ✓ Small and empty departments · ✓ Ties at every band
50 questions, every one with a source. Filters live in the address bar, so any view can be shared.
questions
Loading questions…
QuestionCompany/contextFormatTime
Personalized practice
Let your resume set the questions.
Upload one resume, add an optional role or job description, and Margin will prepare one grounded interview. Margin keeps your resume's text for up to 90 days so you can practise again; the uploaded file itself isn't kept.
Each collection pairs public context with practice questions. Labels say exactly what is known about each question; Margin never invents "asked at" tags or frequency statistics.
Your reports are saved with Margin and linked to this browser, so they show up only here. Open one to see the verdict, the feedback, and what to practise next. How we handle your data.
Run your code when you’re ready. The interviewer will see the result.
PostgreSQLLoading database…
Not run yet
Run query executes against the visible sample. Check answer also runs the additional datasets.
Check answer compares results (not query text) on every dataset.
Your notesSaved
Notes sync after a short pause without interrupting the interviewer. “Discuss my work” asks for feedback.
Synced
Pen strokes and text boxes stay editable objects. Click with Text to add a box; use Select to move, resize, or edit. The interviewer’s notes are labelled and never change your work.
00:00
Your interviewerGetting ready
Interview room
Ready to go in?
Turn on your microphone and say something. The ring should move.
Use headphones so the interviewer doesn't hear itself.
No transcript or notes in the room. You get both in the debrief.