Now my turn to give back to the LC community...
Status: 6 years of data engineer experience in a pension fund (Canada)
Phone Screen
Bypassed as I was matched through TripleByte fast track. Also because I was matched through TripleByte, I'm not sure what level I was evaluated at. My guess is ICT2/3 based on the difficulty of the coding problems.
Virtual Onsite (6 rounds)
Round 1 (1 hr)
- Introduction
- Why Apple?
- Coding question: Implement HashMap
- Similar Problem: https://leetcode.com/problems/design-hashmap/
- I implemented it with array with Linked List as value to handle hash collision.
- A few follow-up questions were asked regarding pros/cons of my implementation, when to resize, test cases to cover, etc.
- In general, I think I did well in this round.
Round 2 (1 hr)
- Introduction
- Why Apple?
- Design question: Design Find My Friends
- I started off badly in this round and went all over the places with design in the beginning.
- The interviewer was super nice and asked many follow-up questions, which helped me organize my design.
- In general, I think this round didn't go very well, and could be one of the reasons of my rejection.
Lunch Break (1 hr)
Round 3 (1 hr)
- Introduction
- Favourite project. This question took a bit longer than I intended as the interviewer asked me many follow-up questions, which didn't leave much time for my coding question.
- Coding question: Implement Tic-Tac-Toe
- This round is a bit of both OOD and coding.
- Similar Problems:
- I started off by laying out the classes I was going to implement, i.e. Board, Player, Game, etc.
- The interviewer then asked me to just implement the place move method and calculate winner method in the interest of time.
- In general, I think this round went pretty well.
Round 4 (45 min)
- This round was interesting as the interviewer was a product manager instead of a software engineer.
- Introduction
- Situation where I convinced a product manager to prioritize tech debts over business requests.
- Scenario question: Given a business request to include movie ratings from Rotten Tomatoes in the Siri search results, how would I proceed to break down the request and deliver it to Production?
- I broke this project down into backend and data sourcing implementation, application layer implementation, and frontend design and implementation.
- Each part can be an epic/phase and be delivered to Production on its own without breaking or impacting other user functionalities.
- In general, I think this round went well too.
Round 5 (1 hr)
- Introduction
- Deep dive into a few points in my resume. Questions asked around my opinions in code reviews and Agile delivery methodology.
- Coding question: Implement a function to produce random results of N-face dice with a 6-face dice (sugar coated with game Dungeons & Dragons), i.e. assuming I only have a helper function
int randomInt1to6() to produce random integers between [1, 2, 3, 4, 5, 6], implement a function int randomInt1toN(int n).
- Similar Problem: https://leetcode.com/problems/implement-rand10-using-rand7/
- To be honest, I'm not good at math type of problems at all, so I totally bombed this question.
- I got stuck for a few min and the interviewer simplified the problem for me and made the helper function to produce a random double value between 1 and 6, i.e.
double randomNum1to6() instead.
- In the end, I was able to finally implement the simplified version with many trials and errors, but didn't have time to implement the original problem statement at all.
- My C# solution for the simplified problem:
public static int randomInt1toN(int n)
{
return (int)Math.Floor((randomNum1to6() - 1) / 5 * n) + 1;
}
- In general, this round went horrible, and is likely the main reason of my rejection.
Round 6 (45 min)
- This round was the hiring manager round and a purely behavioural round.
- Introduction
- Challenging project
- Situation where I was not able to meet timeline of a project.
- Situation where I had prioritization discussions with product managers.
- In general, this round could go either way as I'm generally not too sure about behavioural rounds.
Result: Reject
Preparation:
- Coding and Algorithms (~6 months):
- LeetCode (no premium purchased):
- 483 practice questions (150 Easy, 254 Medium, 79 Hard)
- 22 contests (I treated contests like mock interviews)
- Free weekly practice questions from Interview Cake
- Problem Solving Certification (Basic and Intermediate) on HackerRank
- System Design (~1 week):
- Behavioural (~2 days):
- I mainly prepared 4 responses and they were all used during this interview:
- Introduction
- Why Apple?
- Favourite project
- Challenging project
- Practiced them out loud with my wife.
I don't find a lot of good Apple posts here, so hope my experience here can be helpful for others :)