I was contacted by the recruiter via email, followed by two separate phone calls with someone from engineering. Both conversations involved writing quite a bit of code for most of the hour.
After that, I was invited on-site for a full day of "fun and games." The day started at 10 am and finished at 5 pm. I interviewed with 9 people that day; 7 out of the 9 were technical. The others were more cultural/behavioral.
It was a rough day. We went through all of the well-known data structures in every way possible, and more than once. Trees, lists, queues, stacks, heaps, hash tables – you name it. Traverse them, search them, reverse them, populate them, rearrange them, make them thread-safe. Use recursion. Use iteration.
By the end of the day, I felt like I had taken three SATs back-to-back. Frankly, I'd categorize most of the coding problems that I received as medium in difficulty, but the challenge was in the sheer quantity of them.
Personality types varied widely over the course of the day. Some people were more intense than others. On the whole, I walked away feeling like I know what the hardest software interview in the valley is like now.
The recruiter got back to me within a few days and informed me that the feedback was positive and that they wanted to schedule a final conversation between me and one of the execs. After that, they made me an offer.
I assume that the mileage varies as far as interviews go, depending on which team you're talking to. I wasn't expecting the gauntlet to this degree, although that's probably a good thing, because if I had known what was waiting for me, I'm not so sure that I would have had the confidence to go in there.
Software is hard, but writing software under pressure, knowing that a job offer (that you presumably want) is on the line is a different ball game entirely.
Know your data structures, people. Know your algorithms. Know the Big-O complexities of everything that you write, both spacial and computational. If you don't, you will bleed.
The good news is that making it through the coding part of the interview is very possible for most people who are willing to set aside 30 minutes every day to practice.
I've signed an NDA, so I'm going to abstain.
However, if you regularly practice your data structures and algorithms, you will be fine.
The key is to regularly practice.
The following metrics were computed from 40 interview experiences for the Apple Senior Software Engineer role in Cupertino, California.
Apple's interview process for their Senior Software Engineer roles in Cupertino, California is very selective, failing most engineers who go through it.
Candidates reported having good feelings for Apple's Senior Software Engineer interview process in Cupertino, California.