Status: Senior iOS 9 years of experience, BS. Computer Engineer
Position: E5 at Meta (iOS)
Location: London, UK
Date: March 2022
I won't give all info to fulfill my NDA
Interview process:
Phone interview:
Quick and easy question about iOS:
It is usually something related to core iOS concepts, if you are familiar with mobile development/ iOS it would be easy for you, it is very quick and I believe it took arround 2 minutes, as soon as the interview noticed that I had the knowledge about the topic he asked me to stop and that was enough.
Alg coding challenge:
If you want the job, just listen, pay premium and go through facebook questions. Simple as that.
They gave me one question, and I mentioned that I have seen the question previously (I did a round of interviews at Facebook while back).
Then he moved to another question and it was a very basic tree question, didn't took me longer than 10 minutes to explain and code the question.
iOS specific coding challenge (something that you face on your day to day):
I'm not sure if this is something new or not, as I didn't had it before.
The question is something that you face normaly at your day to day, so be prepared to awnser some questions because I believe he doesn't care about how you solve the issue, it was like arround 5-10 lines of code to solve, but he wants to know if you going to avoid most of the normal iOS issues, example: Threading, crash, optionals... something very very basic
The interview started arround 5 minutes late due some connectivity issues but ended with almost 10 minutes + 5 minutes (conversation) spare time. If you do a little study you'll nail this interview it is very very basic.
Onsite interview:
The format is known by everyone, 1 behaviour, 1 SD, 2 coding.
Alg coding challenge (1 & 2):
Once again I'll say the same thing I said before, TOP FACEBOOK QUESTIONS from leetcode and smile all the way.
I've only used leet code for my preparation, doing and re-doing the same question multiple times, after each interview I felt so great. I knew that I've done a good job and I was well prepared to all questions, and I believe one thing that was in my favor this time is that I'm very honest, when I get a question that I've done previously I tell the interview immediately, and they are usually very happy with it, as long as the question was not done on previous facebook interview they are ok with working out with the question.
Tip: codepad introduced a new feature that you can draw something and you and the interview can see it, so it was very very helpful to explain how to solve the issue.
I've done this everytime and it worked for me:
1: Understand the question and the concept behind the question, most questions will have a fancy story but it will be a tree, sort, graph... So the very first step is understand the concept of the issue.
2: Get to some solution, not coding, just explaining how you'll solve the issue, explain the space and time complexity and check if the interview is ok with the solution. (One of my question I've proposed a O(nlogn) since it was requiring a sort, and he said that he wants it to be in O(n), so after a couple of thinking I got a solution O(n). Do NOT start with coding, take the tips from the interviewer. Only start to code if you are stuck without any other idea, also happened to me on other question that they wanted me to do on space(1) and I only tought about space(n), I was losing some time and I said hey, I am unable to think about this other solution, let's proceed and then we can figureout how to improve. Note here: I endup not being able to turn my space N to space 1 and I got the offer.
3: Do the code and don't stop talking, everything you write explain what you're doing, they are not in your mind, so you need to tell why you're doing what you're doing. Try to modularize the functions, I found this way easier to run the step 4 later.
4: Run the code and try to find any bugs, be ready to followup questions. And if you see some possible issue (overflow numbers) say it, they like that.
System design:
What I love about Meta is that their system design is mobile based, I've not done other companies since 2019 and I found very bad for me to go through a backend SD while I've never done a backend SD in my life, I feel artificial and I don't think it is a good evaluation of your skills.
Do quick features on apps that you enjoy, how would you handle cache, storage, arch patterns, modularization, how to implement specific things, trade offs. If you have done any app from the ground you'll do good here, although I've not went through all screens from the app that they wanted me to go it was good, I had mixed idea of how I was in this meeting (this meeting is good if you do mock interviews, but I didn't had any friend trying to do the interview so I mocked myself.
Follow the cliche stuff:
Questions, and gathering details.
High level design just put out the modules
Zoom into the modules.
In my case I had an app with 4 screens so I create module for each, some screens had similar components so told then and skipped it for the sake of time.
I still don't know how to better be prepare for this one, it is basically you experience being evaludated.
igotanoffer that is quite nice.romantize your experience, enhance it put the core values in your mind. And if you target is E5+ Don't talk about difficult tasks, bugs, bla bla. Talk about conflicts with manager, how you improved the experience, how you change the app architecture, how you archive good results...All, you guys will be fine, just be ready and if you don't get the job now, it was a good experience and you'll got it later. I did the interview back in 2019 (Google, Amazon and Facebook) and at the time I felt like working on Facebook would be more enjoyable, I've liked the folks from Meta and the culture more than I had with the other companies. This time I focused it more on Facebook although I have some interviews for Amazon, Apple and Google coming on following weeks.
Cheers!