- First contact
First Recruiter called to confirm. Asked salary expectation. HERE's where you shouldn't give a number, look for youtube videos on "how to negotiate your offer" for why)
Recruiter gives a very precise walkthrough of the whole process and gives you a lot of material to study and a timeline.
- Create profile
Next step you create a profile in their recruiting site and confirm availability for the interview. There are plenty of material to study there, even better than Leetcode because here you know what to expect.
- First Interview (45 mins, video conf)
1 easy problem
1 medium
Didn't hear anything for a week so I emailed the recruiter and they responded they liked me and my availability for a second round of interviews and you get passed to another recruiter.
- Second interview(s) round.
You have to schedule a full day for the next round.
Interview day 5 x 45 min interviews.
Coding: 2 x 45 min video conf with Sr Engineers from the department I was applying for.
2 question each, 1 medium 1 hard
Behavioral: 1 x 45 min with one of the managers of the org you're applying.
System Design: 2 x 45 min with Staff or higher Engineers (8+ years in Facebook)
The recruiter also gives you details on how to answer these System Design interview, be sure to read those PDF's they even can give you temporary codes for some practice sites.
- Resolution
I interviewed on Friday, on Monday Recruiter told me they'll review the application during the week and will let me know.
On Wednesday they told me my application is going to be reviewed and asked for a day when we can talk, we agreed on Thursday.
Thursday I was super ready to bring my negotiation skills as I was certain I was going to get an offer (otherwise why didn't they tell me on Monday right?)
Sadly it was to inform me I wasn't selected and I can re-apply within 6 months.
Overall process:
Everybody was super kind and welcoming 10/10 will apply again.
The recruiters were excellent and they know their stuff. They are super transparent and they tell you what to expect and give you all kinds of resources.
I studied 2 weeks, for 3 hrs every day for the coding and it seems it was still not enough. A colleague of mine said they studied for 6 months, they got the job.
So my recommendation:
- Do study, study hard and seriously (I know this is hard if you already have a job)
- Learn that process to solve questions by hearth, Facebook gives you at least two 30+ minutes long on what a successful coding session interview looks like
- The coding doesn't even have to compile, most of the time is ok if you say "here I create a `validate(input)` function that does xyz and the interviewer it's ok with that. Don't waste time typing how you get a sublist or something just call "`sublist = sublist(arr, i, j, etc)`"
- Do learn that O notation by heart is not that hard.
- Listen to the interviewer. Unfortunately in my case I was listening but couldn't come up with an answer "How would you improve this part here" Me: "uhmm well I would... (says something not really relevant)"
- On the System Design, focus on the meat, the relevant part of the problem, not so much on the scaffolding.
- Rehearse your behavioral answers with a human. The first time I practice I was just babbling, after a few rounds I was able to answer concisely and favorable (again, recruiter tells you to follow the STAR method)
- I would say spend 40% on coding interviews, 35% on System Design (gosh, I choked trying to multiply 50k x 1 million users x days x years ) and 25% behavioral.
I see a lot of people complaining about LeetCode type of questions, but they give you a guide with at least 20 problems, they explain you thoroughly how to solve them, and they give you a lot of time to practice. If you can’t learn that, maybe you’ll struggle in the real job.