Recruiter reached out via LinkedIn. Initial call was ~30 minutes covering background and motivation. Recruiter provided a prep doc that was very high-level — mentioned “communicate, time management, problem-solving” and noted: “This is more about reading and improving existing code than writing something from scratch.” Also: “You’ll be asked to transform mockups into a functional, scalable product that mimics the early stages of website development.” No specific coding prompt given. Python recommended but JS fine for frontend.
Phone screen was two back-to-back 60-minute rounds:
Round 1 — Coding: Given a messy function that processes Slack-style bot commands (/away, /meet, /givetaco) with global state. Task: refactor into clean OOD with separate Bot classes and a Conversation class. Had to pass provided test cases, then write my own. Follow-up: support multi-channel with an EventBus pattern where bots publish/subscribe to events. Finished refactoring and passed tests but only discussed EventBus verbally — ran out of time to implement.
Round 2 — System Design: Design an AI chatbot UI (like ChatGPT). Requirements: user auth, streaming AI responses (typing effect), no backend storage — all data client-side, conversation clears on refresh. Interviewer had frontend background and went deep on: Redux store shape, SSE vs WebSocket tradeoffs, localStorage schema and limits, token-based auth without server sessions, error handling for interrupted streams. Backend was secondary.
Heard back 3 days later, passed to onsite.