I'm not sure about the order of these:
* They sent an algorithm challenge I could work in my own time. They sent Java class with method skeleton and unit tests. They judge this on both correctness and style of the solution.
* They invited me to solve a similar challenge in the office. Also, discussion about experience, personality, etc.
* They invited me to discuss the design and style of a piece of (working) code -- that they also sent in advance, so there was prep time. Another talk about personality match.
Overall it was a VERY positive experience. However, if you seem not to be a cultural fit, they reserve the right to stop the process. So your experience may differ...
I got an offer but chose a different one and I regret it now :-(