The recruiter initially asked for a codility test (actually two of them) to be completed. I guess in many ways it would be good to carry out one of these a day, it would keep you sharp on solving algorithms, but to be fair, its only ever useful in an interview. I find in the real world a lot of problems can be solved through more creative thinking. I managed to scrape through this stage after fumbling one of the tests, but acing the other, they gave me more time to work on the one I struggled with and eventually I did OK. I then had a telephone interview with the hiring manager which involved logging into a collabedit session. The hiring manager came up with some coding scenarios, I think the one he came up with was a streaming video service, and asked me to design the database and OO structure of the solution, prototyping the code. This was actually quite good fun once I relaxed, but I feel essentially my DB side of things were weak, and so that let me down in the end.
I had no particular complaints from the technical side, but I would say they were severely let down by their recruiting team. They would not reply to my emails when asking them questions about the process, etc. They were not prompt at following up any conversations and actually advised me incorrectly on what I should look at for the final interview!!! After I was informed that they would not be pursuing (bare in mind, they did not phone me after the technical interview, they did not give me any time scales either), they then ignored all of my emails asking for feedback! Microsoft however gave a very nice amount of feedback.