I was initially contacted by an HR recruiter, with whom I exchanged several emails and phone calls over the course of about a week. Following this, there was an online programming test and a call with the recruiter for the specific business unit I would be interviewing with. The programming test required identifying both the memory and time complexity of the implementation. There were two problems. I forget what they were exactly, but they were more complicated than fizzbuzz. This was followed by a technical phone screen that focused primarily on my work experience. Finally, I was invited to an all-day series of 5x 1-on-1 interviews. 2 of these had a very highly technical focus, centered on moderate-to-advanced (undergraduate, 3000 and 4000 level) CS algorithms and data structures. These required white-boarding actual code (as opposed to pseudo code). 2 others focused on mostly personality and team dynamics topics, and basic software development practices (discuss agile vs not, discuss TDD, communicating requirements, etc). The 5th interview was with HR and was simply a description of what would have come next in the process (offer, relocation details, salary and benefits, etc).