Three-stage process consisting of a timed code test, phone interview and in-person interview. During the phone interview, one of the engineers asks you a variety of questions. These included describing OOP concepts, rating my skill level in different programming languages, expanding on my previous experience, etc. At the end you have a chance to ask the interviewer questions. During the in-person interview, you meet with different teams. This is to get an idea for where you could fit in. You also give a presentation on one of your past projects. Overall, it was a challenging experience and the questions could get pretty detailed. However, the company has very good engineers, and they do their best to offer you a position in a team you really like.