Sharing notes on the Cohere coding interview format after going through it earlier this year. There's not a ton of specific info out there so hopefully this helps someone.
They use a take-home style online assessment rather than a live coding screen (at least for my role and seniority level, mid-to-senior backend). The format was: 2 problems, 90 minutes, submitted via their internal platform. Standard languages supported, I used Python.
Difficulty level
Honestly moderate. Not easy, but I wasn't grinding LeetCode hard problems either. One problem was graph-adjacent (think BFS/DFS but applied to a real-world scenario, not a naked "traverse this graph" prompt). The other was about parsing and transforming structured text, which felt relevant to what they actually build. Time complexity questions weren't asked explicitly but they'd be obvious from the test cases hitting larger inputs.
What seemed to matter beyond correctness
I got feedback after the offer that code clarity and structure were noted positively. I had added brief comments explaining my approach, named variables descriptively, broke things into small functions. This felt like it mattered more than micro-optimizations.
Edge cases: I spent maybe 15-20 minutes just thinking through edge cases before writing code and added explicit handling for empty inputs, None values, etc. I think this was the right call.
One heads up
The problems weren't ripped straight from LeetCode. They're custom or at least lightly customized. Don't expect to recognize them. Focus on reasoning through the problem clearly instead of pattern-matching to a problem you've seen before.
After the OA there was about a 5-day wait before hearing if I'd move forward. The recruiter told me they review them manually, not just auto-graded, which tracks with the feedback I got.
Feel free to ask questions. This was for a mid-senior backend role (5 YOE at time of applying), not ML or infra specifically.