My interview with Nvidia consisted of a phone interview, a programming test, being flown out for a day of interviews on-site, and then being flown back out to interview with a second team.
I applied for the job through a friend who works there. After interviewing with his manager I was asked to complete a programming question via e-mail within 30 minutes and send him the response. This question was designed to test my knowledge of memory management and the C programming language.
All arrangements were simple and handled over e-mail with the recruiting coordinator. They made a reservation for the rental car, hotel, and airline tickets, and I had to pay and submit the hotel and rental car for reimbursement along with gas and meal charges.
I interviewed with 7 people during my first trip out and was asked a variety of technical questions from programming, to systems architecture questions. I was also given a wide opportunity to learn about the company, the product I would be working on, and what the culture is like at Nvidia.
I was declined an offer from this team based primarily on the time frame that I would be available on and the fact that they were looking for someone to start almost immediately and to ramp up quickly, but I received an offer to interview with a second team within the company that was much more established.
For my second interview I met with 3 individuals from the new team and it was very similar to the first time. Plenty of technical questions and opportunity to ask about other aspects of the company.
I would highly recommend you be familiar with C, developing on multi-core systems, and have a very good base in UNIX systems programming.