Went through the Asana SWE interview process earlier this year targeting a mid-level role. Going to break down the coding rounds because I couldn't find good info when I was preparing.
Online assessment (OA): Two LeetCode-style problems, 90 minutes. One was clearly medium difficulty, graph traversal. The second was harder, felt like a medium-hard BFS/shortest-path variant. No system design, just pure algo. Platform was CodeSignal.
Pass rate feels selective. I did okay on the first and partial on the second and still moved forward, so I don't think it's a strict 100% completion threshold.
Onsite coding rounds: Two separate 45-minute coding sessions with engineers. Both were algorithm problems, again LeetCode-style. One was a tree problem (not just traversal, more about manipulating the structure). The other was a string/array problem that had a DP component if you wanted the optimal solution.
Critical note: they care a lot about code quality, not just getting it working. I was asked to clean up variable names mid-problem. The interviewer flagged that a working solution with messy code would not pass. So write production-quality code from the start, or plan time to refactor.
They also asked about time and space complexity for everything. Not optional. Practice explaining big-O while you code, not after.
What level to prep for: I'd say medium LeetCode consistently, with a few hards. The problems aren't the trick ones you see at FAANG. More "can you actually think clearly under pressure." No trick questions, no weird bit manipulation stuff in my rounds.
Time from OA to onsite offer decision was about 3 weeks total which felt fast compared to other places I was interviewing.
Happy to share more if anyone is prepping right now.