Applied for a staff SWE role at Perplexity, made it through the phone screen and then got an async coding assessment before the onsite. Here's what it looked like.
The OA was on their own platform, not HackerRank or Codesolver. Two problems, 90 minutes total.
Problem 1 was a graph traversal problem. Nothing exotic. BFS/DFS on a DAG, find the shortest path under certain constraints. Medium on LeetCode by most definitions. Took me maybe 25 minutes.
Problem 2 was trickier. String parsing + a simulation of a state machine. The tricky part wasn't the algorithm, it was reading the problem carefully. The edge cases were buried in the problem statement. I got the happy path fast but spent the rest of my time on edge cases, which I think is kind of the point.
No AI/ML-specific algorithms in the OA. No gradient descent, no embedding math. It was straightforward algorithmic coding. I'd say if you can solve LC mediums consistently in 30-35 mins you're fine. The hard problems aren't in the OA, they're in the onsite coding round.
Onsite coding was 45 minutes, one problem, engineer on the call. I got a problem that was sort of a mini-system design crossed with coding: implement a simplified version of a cache with LRU eviction plus TTL expiry. Classic but they extended it. After I coded the baseline they asked me to modify it so reads also reset the TTL. Then: what if you need to serialize this cache to disk. They never actually asked me to write the serialization code, just talked through it. Felt like the coding round was testing how I think about extensions, not just "write the solution."
TL;DR: OA is straightforward LC medium, onsite coding is more conversational and iterative. Focus on clarity of thought and talking through tradeoffs, not just grinding out the answer.