Applied directly online via LinkedIn job portal. No referral.
Reached out to by recruiter via email to chat.
Then, phone interview (60 minutes):
- Behavioral questions (15 minutes)
- iOS code debugging (Hackerrank)
- Company-tagged leetcode question (medium)
Then, onsite interview (4 hours, 4 interviews, 60 minutes each):
1) Declare + define + implement Network Client API and use concurrency to deliver results (dispatch groups, semaphores, barriers, queues, session, etc) in expected manner.
2) Non company-tagged leetcode medium for one problem mixed with OOD (Create classes); variation of BFS
3) System design for Snap specific functionality, doing mock interviews with other candidates interviewing for iOS roles really helped here
4) Hit api, get data, build simple app with collection view and show data and images for each cell
Overall, not too hard and was pretty practical; I made some dumb mistakes that wasted time, but I think the interviewers saw that they were dumb mistakes and gave me grace. Either I fixed them soon after, or they gave me small hints along the way.
Know iOS concurrency well.