Similar to what a lot of people have shared here, the process has four steps. The first step is a 30-minute phone chat with the HR. No technical questions were in the first round. The second step is a timed coding challenge hosted on HackerRank. I was asked to solve two problems using knowledge of data structures (trees, hash tables, etc.) The third step is an hour-long phone screen with one of the engineers. Some questions were about projects on my resume. These questions can sometimes go really deep into implementation details and reasons behind design decisions. The majority of questions emphasized on the theories and concepts from the CS undergrad core curriculum: data structure, algorithms, OS, networking, compilers, and software engineering. The fourth and last step is on-site. In the morning there were three technical interviews, each taking about fifty minutes. An engineer came in with me resume, from which he or she found some starter questions. After the resume questions, the interviewer started to ask coding questions. Depending on the interviewer, the questions, and how much time was left, the questions could be whiteboard coding only, or whiteboard coding plus peer-to-peer real coding on a computer. After three technical sessions, two engineers took me to lunch, which was explicitly stated to be not a part of the evaluation. I got to chat with them and ask a lot of questions. After returning from lunch, I met with a manager, who introduced his team and task to me. It was only about 20 minutes, since he was on a rush for a meeting. Then I met the HR whom I have been contacting throughout the recruiting process. The HR asked me some last questions, but nothing technical or behavioral.