I interviewed with Nimble from India, as a potential candidate whose H1B they'd sponsor. I underwent the entire interview process from home. The folks from Nimble called on my cell and used online collaborative text tools (typewith.me, etc.) to see me code. The interview happened in 5 rounds over two days (effectively three days for me in India - Wednesday night, Thursday night, Friday morning). Spoke to four engineers at various levels in the team, the CTO, and the hiring manager's manager (director of engineering).
The questions ranged from applying operating system concepts (like page cache, buffering, etc), implementing a program to merge multiple log files, removing the root of a binary search tree to writing a synchronization system for a message queue with multiple-readers and a single writer and analyzing it, some basic C coding with arrays, pointers and indices, doing some non-standard sort using a given primitive, etc. All of it went reasonably well. There was one standout round when the interviewer asked me to explain what I was dong and what was so challenging about it. After a while, evidently unimpressed by my answers, he actually shouted on phone. This guy stood out because the rest of the folks spoke very professionally.