I was initially given a written tests, consisting of 4 programming questions/problems. Makefiles and (not necessarily comprehensive) test cases were provided.The test was un-timed, but we were supposed to report how long we took in completing it. My test took roughly 4 hours.
We scheduled a phone interview about a week later. There were more technical questions, as well as the typical behavioral questions. At the end of the interview, I was asked to complete an implementation of one of the programming questions we discussed and send the result via e-mail.
Soon after, I had a similar second phone interview. Again, a mix of technical and behavioral questions, with a post-interview programming exercise.
I was invited to an on-site interview, which lasted for the entire day. I interviewed with 4-5 onsite software developers one-on-one, as well as with another developer in a different location via satellite and a group lunch. All of the interviews were technical (except for the lunch), with a mixture of brain-teasers, math problems, and programming exercises (using a notebook or whiteboard to write out solutions). Even during the video conference, I was grilled on material I'd mention on my resume.
Knight made me a very competitive offer within a few weeks of interviewing.
Overall, I was very happy with the entire process. All of the technical questions and tests were interesting without being overly burdensome, and I appreciated the extent to which they try to vet candidates. I was also very impressed with all of the employees I met. Overall, the atmosphere seemed relatively relaxed, but still meritocratic and productive.