I initially applied online, and was contact by HR to do an online skills assessment test. The test was easy--it was multiple choice, and consisted of basic math problems, logic problems, and attention to detail. Each question was timed.
I completed this successfully, and was scheduled a phone interview. The interviewer asked about some projects that I had done, and after I mentioned a few, he made up many questions on the spot that related to my projects; why would such and such cause a problem, what if I had tried this instead, why wouldn't doing something a certain way make sense, etc. There was barely any feedback in either the positive or negative direction; the interviewer would often ask if I was sure about the answer I had given.
Following the phone interview, I was contacted for a timed technical test on a programming language of my choice. Difficulty of questions on this test varied very widely, though many were very high-level and heavy on nitpicky details. I assume this test was used mostly to gauge my level of knowledge of the language.
After completion of the test, I was contacted for an in-house interview.