I met with a recruiter on campus in early January, handed him my resume, and talked for roughly five minutes about the internship and interview process. He answered my questions and told me to apply online. I did as he said and heard via email that I'm getting interviewed about 2 weeks later.
The interview process consisted of two, one-hour phone interviews, each with the same structure: ~5 minutes talking about a project you did, ~10 minutes answering OOP questions (e.g. what is inheritance, dif between Abstract Class and Interface, what is overload and override) ~30-40 minutes coding up a solution to a programming question (most likely related to tree or linked list,) and the remaining time is left for asking questions.
I was asked one programming question in each interview. The first was a LinkedList question. I was supposed to write a method that accepted two LinkedList as parameters, both of which represent integers by following a specific format. The left most (i.e. first) node represents the leftmost digit and the rightmost (last) node represents the rightmost digit. For example, the number 1337 is represented as 1 -> 3 -> 3 -> 7. My method's function was to return a new list (in the same format) that represents the addition of the given lists. For example, if this method were passed in 4 -> 2 and 8 -> 8, it should return a new list containing 1 -> 3 -> 0.
During the second interview I was asked a BinaryTree question. I was asked to code a method that returned true if there if there is a path from the root to a leaf in which the values of each node add up to the given integer argument. For example, say this is the BinaryTree of Integers...
5
2 7
1 6
Then if this method is passed in 8, it should return true because 5 + 2 + 1 = 8, where 5 is the root and 1 is a leaf. But if 12 is passed in, it should return false because 5 + 7 = 12 BUT 7 is not a leaf node.
The interviews themselves weren't terribly difficult -- but that just means they're looking for HOW you solve the problem (thought process, style, thoroughness.) I recommend practicing by simulating a phone interview. Time yourself, code from start to finish (no peeking at solutions!) talking out loud, even get a fellow CS friend to give you a mock interview.
Two weeks after the interviews I was offered the job via email. I was asked when I wanted to start and which team I'd prefer to work on. I replied and a day later was put on the team I asked for and was officially hired!