just finished my Block frontend engineer interview and wanted to write it up while it's fresh. i'm a mid-level frontend, 4 YOE, primarily React.
the loop was five rounds total. here's the breakdown:
coding (two rounds) both were in a shared code editor. first round was pure JS: implement a debounce function, then a question about async/await execution order (they showed me code and asked what gets logged and when). classic but surprisingly hard to nail live.
second coding round was React-flavored: build a small component from scratch. i got "build a paginated list that fetches from a given API". they wanted hooks, loading states, error handling, the whole deal. tested whether i actually think about edge cases or just happy-path code.
CSS/layout round this surprised me. i got one dedicated round on styling and layout. they gave me a mockup of a payment confirmation UI and asked me to implement it with CSS grid and flexbox. they also asked about specificity, the cascade, and a question about CSS custom properties (variables). there was a brief question on accessibility: "this button has no label, how would you fix it and why does it matter?"
if you only prep algorithms and ignore CSS you will have a bad time here. block actually ships UIs people use at scale so they care.
system design (frontend-focused) design a real-time transaction feed. not server-side, but: how does the client consume updates (polling, SSE, websockets), how do you handle the list efficiently in the DOM as new items come in (virtualization), what do you do when the user is offline. this took a whole 45 minutes and went deep.
behavioral three questions. the one that caught me off-guard: "tell me about a time you pushed back on a design decision and how it went." have a real story here, not a manufactured one.
overall: more rigorous than average frontend loops. they clearly care about depth on the browser side, not just "can you use React." worth spending a day on fundamentals before going in.