The intern hiring process contains four interviews in total. The first interview is often conducted by a recruiter. The recruiter will first chatted with you about your background. And then conduct a list of screening questions. Most of questions are very "simple" & "straightforward". He basically (I guess) had some answer with his hand and compare your answer against it. For example, how many bits of an integer? What is the time complexity of searching in a linked list? Do not try to explain your thought or partial answer because this is apparently just a screening, and he/she is a recruiter, not an engineer. I got stuck at few questions and I try to explained what I know and ask for more clarification/hint but apparently he can't give you a hint or any help. We just move on.
Once you passed the phone interview, the next step is a 45 minute phone interview. I was interviewed by a software developer. They starts with your resume, discuss projects you done, your publications(papers, etc.), and I feel that he is more interested in knowing who you are and what's your background. They will throw questions related to your resume and past projects. For example, he randomly picked one of my former project and ask for more details, my role in the team, etc. It's just like a regular "tech" interview, keep throwing you CS problem, in particular, algorithms & data structure. Interesting enough, I was not asked to "actually" write code for anything. My interviewer is happy with a high level pseudo-code and we move on.
Few days later the recruiter contacted me again and scheduled another 90 minutes back-to-back phone interview. The first interviewer is a senior engineer, and the second interviewer is a tech manager. They had a video skype meeting with me and we can see each other. (So don't be naked). The interview process is very tense. Both interviews started with projects you did before. Then, they try to understand why you are a good fit to the company (I guess). The tech parts involves lots of stuff. It's not (purely) code tests because they throw your many questions about operating system, databases, linux, python, etc. Yes, they were trying to push you to the limit. Also, I was asked to implement a "modified" data structure, so be prepared of writing codes. The coding problem is reasonable. No brain-teaser questions nor fancy questions that test your IQ. Of course, you have to write code neatly and quickly (not pseudo code).
These topics are covered in my interviews:
- operating system, process, multi threads, memory models
- database, in particular, SQL language
- scripting language: python (but I think answer in perl may be okay)
- data structure & algorithm: stack, linked-list, hashmap, tree, heap, etc.
- security (attacking, encryption, etc.)
- web standards/protocol: http, dns, tcp/ip, ssl, etc.
- recursion and/or dynamic programing
- linux knowledge/commands
To sum up, I think they tend to ask you "many" tech questions that can be answered in few minutes. So it's a "broad" test but not just a problem-solving "coding" test. Overall the interview process is very good. The only thing I don't really enjoy is that they interview you via Skype. In a large room without a headset device, the echo could be bad.