finished my Snap frontend SWE onsite about six weeks ago. this was for a mid-level role on one of their consumer product teams (not Snapchat core, more like a newer surface area). sharing everything i remember.
phone screen: one 45-minute coding round. vanilla javascript, no framework. they asked me to implement a debounce function from scratch, then a simple event emitter. no react, no typescript -- straight-up JS fundamentals. that surprised me. a lot of frontend interviews now are React-heavy, but Snap wanted to see that you actually know the language.
onsite rounds (4 technical + 1 behavioral):
JS/DOM round: implement a simplified version of querySelector. basically write a function that takes a CSS selector string and a DOM tree (given as a JS object) and returns matching nodes. this was hard. i got a working solution for simple tag selectors but didn't finish the attribute selector extension.
React/performance round: they gave me a slow React component -- lots of unnecessary re-renders -- and asked me to diagnose and fix it. useMemo, useCallback, React.memo, proper key placement. they also asked about virtualization for long lists. felt like the kind of thing you'd actually encounter on the job, which i appreciated.
algorithms round: one medium problem (sliding window). more standard, felt like a break compared to the DOM round.
cross-functional system design: not your typical backend system design. they asked me to design the architecture of a rich text editor (like a collaborative note-taking app). operational transform vs CRDT came up. i knew enough to have the conversation but not deeply enough to impress. study this if you're going into a frontend system design round.
behavioral: standard. tell me about a project you owned end-to-end, a time you disagreed with a PM, how you handle tech debt.
verdict: got an offer at L4. my sense is they value raw fundamentals and performance instincts over framework expertise. if you're a React-only dev who hasn't touched vanilla JS in years, block off some prep time for that.