A 2.5 hour remote technical test, a second in-person technical interview (~1.5 hours), and a third in-person informative interview (~1 hour).
The remote test was done via email, with a written portion and programming portion. It was aimed to test the breadth and depth of my knowledge. I was unable to answer all the written questions, and couldn't finish all the programming questions in time, yet was still invited for further interviews.
The second interview was with three interviewers and consisted mainly of technical questions, especially C and C++. Many verbal questions, and a few short programming questions.
The third interview was with two interviewers and was more informative and personal.