Skip to content

Task Breakdown

1️⃣ Vibe Coding (Live, 8–10 min)

Q1.

“Open a blank React component. Add an input and button. Disable the button when the input is empty.”
Watch for
controlled input
state setup
calm iteration

Q2.

“Now show a message below the input when the domain is invalid.”
Follow-ups
“Where should validation live?”
“Why here, not somewhere else?”

Q3.

“What happens if the user clicks the button twice very fast?”
Good answers
disable button
track request
ignore stale responses

2️⃣ SPF Task Deep Dive (5 min)

Q4.

“Walk me through your SPF Checker from input to result.”
Follow-up
“Which part was hardest?”
“What would you change if this grows?”

Q5.

“How did you handle these states?”
loading
no SPF found
API failure

3️⃣ React Fundamentals (5–6 min)

Q6.

“Why does React re-render when state changes but not when normal variables change?”

Q7.

“When would you use useEffect in your SPF Checker?”
Follow-up
“What happens if dependencies are wrong?”

Q8.

“Why are inputs usually controlled in React?”

4️⃣ JavaScript Core (Hoisting, Scope, Closures)

Q9. Hoisting

console.log(a);
var a = 10;
“What prints and why?”
Follow-up
“What changes with let?”

Q10. Scope

function test() {
if (true) {
let x = 5;
}
console.log(x);
}
“What happens here?”

Q11. Closures

function createCounter() {
let count = 0;
return function () {
return ++count;
};
}

const inc = createCounter();
inc();
inc();
“Why does this work?”
Follow-up
“Where would this appear in a React app?”

5️⃣ Async & Debugging (5 min)

Q12.

“Sometimes the SPF shown is for the previous domain. Why?”
Expected
async race
stale state
request ordering

Q13.

“If something doesn’t work, what’s your first debugging step?”
Good signs
console.log
isolate state
simplify

6️⃣ Bonus Knockout (Ask Only If Needed)

Q14.

“Can you explain this without running it?”
for (var i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 1000);
}
Follow-up
“How would you fix it?”
This reveals closure + hoisting + async instantly.

Want to print your doc?
This is not the way.
Try clicking the ··· in the right corner or using a keyboard shortcut (
CtrlP
) instead.