After applying online, completing the standard IBM mini math/logic test, got an email about doing an interview in person at the office. This was about 3 weeks after applying. Set a time over email. Interview was about 2 hours, which is a fair bit for an internship position, but then again this was a fairly impressive position. It was a one-on-one interview in a meeting room with a dev from the team, the one that contacted me over email. Had a quick tour of the office before hand. Started off with some behavioural questions. I was nervous, it was my first ever interview for a tech job, and messed them up, starting the whole thing on a bad foot. From there, I was asked questions about my resume. Make sure to really be sharp on all the projects and what not you list, they will ask.
Got into some C questions pretty quick. Some questions about the general fundamentals of the language/advantages. Then some sample code was given on paper, in C, I was asked to find all the bugs in it. Then a few sample coding problems in C with pen and paper. Some fermi or back of the napkin questions after that. It was a lot of flipping back and forth from theory to application to fermi problems. Some questions about OS's, like multithreading, memory management, etc.