Skip to content

Directing the AI: keep the plan, ask for one step at a time, and hand over what the step must fit

Plan the steps yourself, then ask for one at a time, handing over what that step's code must fit.

Predict first

Before you read: predict

Phase 2 of a practice AI-enabled round on ExamHall's proctor service (ExamHall is invented). The task: drop any candidate's proctor events beyond 5 a second, and count the drops. She has read the project's EventBus and decided on a sliding window per candidate.

Going by Hello Interview's report of Meta's AI-enabled round (read 2026-10-15), which first prompt fits how the candidates who did well used the assistant?

Pick one

The 30-second version

Keep the plan yourself: the steps and the approach. Ask for one step at a time, and give each ask what the code must fit: the interface it calls, the rules that change it, and a test that fails until the step is right. The assistant implements; you lead.

Plan the steps yourself, then ask for one at a time, handing over what that step's code must fit.

How it works

Step 1 of 12

The plan stays yours. Before the first prompt, choose the approach and split the task into steps. The assistant implements; you lead. [S1]
In the kitchen
  • The storyboard kept on her own desk → Your plan of steps (step 1)

Analogy: A hand-drawn animation studio, a key animator and her in-betweener

Rosa animates a short film's walk cycles. The storyboard stays on her desk; she hands her in-betweener one shot at a time. With each shot go the character's model sheet, so the drawings keep his proportions; the timing chart, twelve frames easing out; and last week's pencil test, where his foot slid along the floor. She does not write "make the walk better": she names the two key poses the twelve drawings run between.

At the animation desk With the assistant
The storyboard kept on her own desk Your plan of steps (step 1)
One shot per handover One step per ask (step 9)
The model sheet clipped to the shot The interface the code must fit (step 6)
The timing chart: twelve frames, easing out The rules that change the code (step 7)
Last week's pencil test, the foot sliding A test that fails now (step 8)

Breaks down when: an in-betweener handed no model sheet comes back and asks for one, while an assistant fills the gap with a guess and says nothing. Wrong inference: "if my ask leaves something out, the assistant will ask."

In real terms: before you send an ask, it names one step and carries what that step's code must fit.

What the sources support, and what they don't. S1 is Hello Interview's guide to Meta's AI-enabled round, built from candidates' reports and one quoted internal source, not Meta's own statement. S2 is Business Insider's report of an internal Google document on a pilot, confirmed by a Google spokesperson; the pilot may change. Both were read on 2026-10-15 and are valid as of 2026-10-15.

Try it

Answer first, then check. Nothing is saved.

Question 1 of 7

Phase 3 of an assisted round on a payments ledger: on the larger statement files her matcher, which compares every bank line with every ledger entry, is now too slow. She expects a map from transaction id to ledger entry to fix it.

Going by Hello Interview's report of Meta's round (read 2026-10-15), what does she ask the assistant next?

Pick one

Question 2 of 7

Phase 2 on a payments ledger. Her ask: “Write refundsAllowed(history, nowMs): true while the account has had fewer than 3 refunds in the last hour.” history is one account's refunds, each { atMs, status }, with times in milliseconds. The reply she pasted:

Which sentence, had it been in her ask, would the reply above break?

Code for this question
// refunds.mjsexport function refundsAllowed(history, nowMs) {  const hourAgo = nowMs - 3_600_000;  const recent = history.filter((r) => r.atMs > hourAgo && r.status === 'settled');  return recent.length < 3;}
Pick one

Question 3 of 7

Phase 2 again: block a refund once an account has had three refunds in the last hour, and show on the support dashboard how many refund requests were blocked today. She has planned four pieces, one ask each, and will run each reply's test the moment she pastes it, with nothing stubbed or faked:

  • refundAllowed(history, nowMs) decides from how many of the account's refunds fall in the last hour
  • blockedToday() is the dashboard's figure: how many refund requests were blocked since midnight
  • lastHourRefunds(history, nowMs) picks out the account's refunds from the last hour
  • onRefundRequested(event) blocks a refund request that the three-an-hour rule refuses, and counts each block

Put her four asks in the order that lets each reply's test run the moment it lands.

Your order

  1. 1empty
  2. 2empty
  3. 3empty
  4. 4empty

Tap the lines in the order you expect.

Question 4 of 7

Next step on the same ledger. The brief: settle(entries) returns each account's balance in pence; refunds are negative entries and count toward the balance, and a balance never goes below 0. The ticket behind this step: account a paid 500 pence and was then refunded 800. The current code:

She will send the ask “Make refunds count in settle” with one test attached.

Which test does she attach?

Code for this question
// settle.mjsexport function settle(entries) {  const out = {};  for (const e of entries) {    if (e.amountPence <= 0) continue;    out[e.account] = (out[e.account] ?? 0) + e.amountPence;  }  return out;}
Pick one

Question 5 of 7

The ledger's next step: flagged(entries) returns, sorted, the accounts whose refunds total more than 50,000 pence. Refunds are negative entries; payments do not count; a total of exactly 50,000 is not flagged. The project's sandbox/flag.mjs holds only a stub. ask.md is the ask you would send (the one step, the interface lines it must fit, the rules that change the code); flag.test.mjs is a node:test file to attach that fails on the stub and on any reply that gets one of the three rules wrong.

In 15 minutes, write ask.md and flag.test.mjs for this step.

Question 6 of 7

Chat app, assisted pair round. She asked: “Write muteUser(store, roomId, userId, untilMs): mute a user in a room until a time, and return how many users the room has muted.” She did not paste the project's room store:

The reply:

// mute.mjs
export async function muteUser(store, roomId, userId, untilMs) {
  const room = await store.getRoom(roomId);
  room.muted[userId] = untilMs;
  await store.saveRoom(room);
  return Object.keys(room.muted).length;
}

Run against makeRoomStore(), what does muteUser(store, 'r1', 'u9', 5000) do?

Code for this question
// room-store.mjsexport function makeRoomStore() {  const rooms = new Map([['r1', { id: 'r1', mutedUntil: new Map() }]]);  return {    async get(roomId) { return rooms.get(roomId); },    async put(room) { rooms.set(room.id, room); },  };}
Pick one

Question 7 of 7

A mock of the code-comprehension round in Google's pilot, as Business Insider reported it: an existing video-streaming service whose subtitle-sync test fails, with Gemini as the assistant. She has 20 minutes.

Going by that report and Hello Interview's guide (both read 2026-10-15), which plan fits what the round evaluates?

Pick one

Go deeper

Pro tip

Keep a three-line template in your notes and fill it in before you type to the assistant: “Step: ___. It must fit: ___. Rules: ___.” Any line you cannot fill is a decision you are about to hand to the reply.

Checked against the tools and docs as of 2026-10-15.