Day-Of Tactics
Live-coding moves, recovery patterns, and what to ask them. Reread the morning of the screen.
The morning of
- Reread the JD once. Underline "first analytics hire," "data debugging," "direct feedback."
- Reread 01-the-role. Have the framing fresh.
- Skim SQL composition discipline and debugging protocol.
- Open the drill sets (SQL, pandas) and skim the problems you've already practiced — don't try to learn new ones.
- Have a notes app open for the live-coding portion. Don't write in the chat unless asked.
- Water, scratch paper, pen. Close every unrelated tab.
- 15 minutes of walking before. Don't cram.
Live-coding moves
The opening move
When the interviewer shares the problem, do not dive in. The opening sequence:
- Restate the problem in your own words. ("So you want — for each customer — their longest streak of consecutive days where they had at least one GPU session?")
- Ask 1–2 clarifying questions. Edge cases. NULL handling. Tie-breaking. Output schema.
- State your approach in one sentence. ("I'll use the tabibitosan trick — subtract row-number from date to key consecutive runs.")
- Wait for the nod, then start typing.
This takes 60–90 seconds. It feels slow. It is not slow — it's what separates senior from junior. You're trading 60 seconds for the certainty that you're solving the right problem.
While coding
- Narrate. "I'm building the cohort table first…" One sentence per logical step.
- Name CTEs and variables descriptively.
per_customer_streak, nott2. - When you almost reach for a self-join, pause and mention the window-function alternative. Either approach is fine; the comparison is what scores.
- Catch your own NULLs as you go. "I'm using
NOT EXISTShere instead ofNOT INbecause the subquery might have NULLs."
After writing
- Trace one example row through out loud. Catches off-by-ones.
- Mention what would change at scale. "This would not scale to a billion rows because of the self-cross. At that point I'd push to BigQuery with date partitioning."
- Volunteer the alternative you didn't pick and why.
For the pandas portion specifically
- Write the vectorized version first.
- If you reach for
.apply, say why: "I'm using apply here because the function is complex enough that vectorizing would obscure intent. At larger scale I'd push to SQL." - Mention DuckDB as an option for SQL-on-DataFrames when the shape fits.
Traps to watch
The "obvious" wrong answer
SQL: "select where x > 5 from t where x > 5" type questions where the answer is obvious. Interviewer is testing whether you ask the question that exposes the trap — usually a NULL, a join cardinality, or a time-zone thing. Pause and ask.
The "what would change at scale?" follow-up
Always be ready. Have an answer like: "What I just wrote runs on the warehouse and would scale fine. If we were at 100B rows, I'd worry about [partition pruning / skew / approximate counts] and add [specific mitigation]."
The leading question
"Wouldn't this be cleaner with a subquery?" or similar. Be willing to disagree if your reason is good. "I'd actually keep the CTE — for review purposes the named CTEs read as an outline. Same result either way." Capitulating to every nudge reads as low conviction.
The behavioral curveball
"Tell me about a time you got direct feedback you didn't like." The JD called out direct-feedback culture. Have a real story ready: what the feedback was, why it stung, what you did, what changed.
The domain probe you can't answer
If they ask something specific about GPU economics or AI inference and you don't know — say so directly. "I haven't worked with that. My understanding from reading is [X]. What's the real picture?" Then listen. They'll often explain, which is signal you can use later in the loop.
Recovery patterns
You wrote a bug and saw it
Acknowledge immediately. "Wait — this is wrong, the inner join filters out customers with no sessions. Let me fix that." Visible self-correction is a positive signal.
You're stuck for 3+ minutes
Verbalize. "I'm trying to figure out whether to handle the tie-breaking by ROW_NUMBER or by adding a secondary sort key. I think ROW_NUMBER is simpler — let me go with that and we can discuss if you'd prefer the other." Silent stuck is the worst outcome.
You don't know the answer to a concept question
Three-part response. Name the gap precisely. Name the adjacent thing you know. Name how you'd find the real answer. "I haven't used HyperLogLog approximations in production. What I do know is that they're for approximate distinct counts in a window where exact is too slow. If this came up at work I'd verify the dialect support before recommending it."
The interviewer disagrees with your approach
Don't fold instantly. Ask one clarifying question to understand their framing. If you still think your approach is right, defend politely with the reasoning. If their framing is better, update visibly. Both moves score.
Questions to ask them
For the screen (technical interviewer)
- "What's a SQL or pandas pattern you wish more candidates were fluent in?"
- "What's the most recent analytical problem the team had to debug?"
- "How is the data stack today — what's working well, what's the biggest pain?"
For the hiring manager / co-founder round
- "What's a metric you're tracking that you suspect is wrong?"
- "What's the analytical question you're most uncertain about today?"
- "How does analytics partner with engineering on instrumentation?"
- "What does failure in this role look like at 90 days?"
- "What's the trajectory you imagine for this role over 12 months?"
For peer rounds
- "What's the working relationship like with leadership on data questions?"
- "What's a recent decision data influenced, or one you wish it had?"
- "What would you change about how the team operates if you could?"
Things Google could answer ("when was the company founded"). Vague culture questions. Compensation in technical rounds (save for the recruiter).
Closing statement
When asked "any final questions?" or "anything else?", have a 30-second close ready. Three beats:
- One specific thing that confirmed your interest. "What you said about [X] confirmed why this role caught me."
- One concrete thing you'd bring — not a résumé recap. "If I joined, the first thing I'd dig into is [specific question]."
- A clear ask. "What are the next steps and the timeline?"
Don't pad. Brevity is its own signal.
After the loop
- Thank-you email within 24h. One paragraph. Reference one specific thing from one round.
- Self-debrief: which rounds were strong, which were rocky. Add weak rounds to your drill list.
- Don't pester the recruiter. Loops typically resolve in 3–7 business days.
- If no: ask for substantive feedback. Most won't give much; the framing of the rejection sometimes tells you which round.
- If yes: negotiate. Always. Even senior roles have room.
Win or lose, the value of the loop is the calibration on what you can answer cold. The drill list grows. Each loop makes the next one easier.