Software Engineer applicants have rated the interview process at Apple with 3.5 out of 5 (where 5 is the highest level of difficulty) and assessed their interview experience as 50% positive. To compare, the company-average is 63.2% positive. This is according to Glassdoor user ratings.
Common stages of the interview process at Apple as a Software Engineer according to 2 Glassdoor interviews include:
One on one interview: 100%
Here are the most commonly searched roles for interview reports -
I applied through a recruiter. I interviewed at Apple in Jul 2016
Interview
I was initially contacted over LinkedIn by one of Apple's recruiters and scheduled a phone call. After that conversation, the recruiter thought I would be a better fit for a different team and redirected me to a second recruiter.
Initially, the second recruiter was very responsive. I was amazed at how quickly he got back to me (even late in the evening). More on this recruiter later...
I was then scheduled for an initial phone call with an Engineer on the team I was being considered for. The interviewer thought the phone call went well and I was asked to come onsite.
My experience onsite was largely positive. I enjoyed speaking with the engineers and the hiring manager. The role was for a devops position, so the questions encompassed both coding and questions about how to do things on the command line and how to automate tasks. The engineers and the hiring manager were very nice and respectful.
Now back to the recruiter. The recruiter was nice, but it sounded like he didn't even review my profile. After he escorted me to the interview room, we chatted for a few minutes before the first interviewer showed up. He told me about the team I was interviewing for and what their responsibilities were. He then asked questions like "So, are you technical? Do you code?". It didn't sound like he had reviewed my profile at all (I'm an experienced engineer with a decent amount of coding experience).
After I had finished the onsite, I wrote the recruiter a thank you email and he responded and said that I would have feedback the next day. I didn't hear from him the next day. A week later, I sent another email to follow up and did not receive a response. A few days after that, I received an offer from another company and I sent the recruiter one additional email to let him know and to see if they wanted to move forward or not, and again, I received no response.
Overall, the actual experience of speaking with the engineers was quite pleasant, but the recruiter was not very professional after the interview had concluded. I assume that Apple will not be moving forward, but I would have appreciated an explicit communication informing me of my status. Even a generic "We're not interested in moving forward at this time." would have been sufficient, but no follow up is somewhat disrespectful in my opinion.
Interview questions [1]
Question 1
Scripting questions and command line proficiency questions
I applied through a recruiter. The process took 6 weeks. I interviewed at Apple (Cupertino, CA) in Jun 2012
Interview
awesome . 1 interview with recruiter following by phone screen . After this screen assignment given at home followed by 2 days onsite interviews.
Over all good experience both offsite and onsite.
I applied through an employee referral. The process took 3+ months. I interviewed at Apple (Cupertino, CA) in Jul 2016
Interview
I was referred by an employee, and had a phone chat with the manager. This was followed by a phone screen, then a day with five 45 minute onsite interviews with lunch. Each interview was 2 on 1.
The process took three and a half months overall, but they assured me this was abnormally slow, due to WWDC and a large team reorg.
Good questions, interesting people and awesome discussions! I'd do it again just for fun!
Interview questions [1]
Question 1
A runtime has a struct Class { Class* super_class; struct { id_t method_name; void (*method_pointer); } methods*[]; }. How would you optimize for dynamic dispatch?
How do you familiarize yourself with a new, large codebase? How would you go about replacing a component in it?