Status: Undergrad, BS Systems Engineering Top 10 Uni in Africa
Position: Production Engineer Intern at Meta
Location: London, UK, Dublin, Ireland
Date: November 27, 2024 - February 5, 2025
I was just cold applying to roles at meta, someone sent the link for Production Engineering Internship for the US,I applied on 19th November, 2024 but then I thought that they should be hiring for their UK offices too, so I searched for that role in the UK, I found it and applied, then I later searched and applied for Software Engineering Internship because that was my aim.
The following week on 27th November, 2024, a recruiter reached out via email for Production Engineering Internship, Europe (London, UK and Dublin, Ireland). I felt like I was dreaming that I was talking to a Meta recruiter. She explained the role, the responsibilities and the entire hiring process, then she asked a few basic questions about my graduation date, availability for the internship and why I am interested in the role. I responded promptly and she sent the online assessment (20 MCQs on Linux fundamentals) the next day to my career profile which was to be taken within three business days.
I took the assessment on the third day 2nd December,2024 (luckily, I had the weekend to prepare) and she gave feedback the next day that I did well and I was to schedule my coding interview, I scheduled the interview to be a week away (12th December, 2024) and I started preparing.
First Round (Coding Interview - 45 minutes)
Preparing for this round was okay because the coding questions for PE are not as hard a SWE questions.
My interviewer didn’t exactly come off as nice, he also didn’t come off as not nice.
When the call started, he just went straight to telling me how the interview would go, no introductions.
Then he pasted the first question
Question 1: Top n words in a file.
So I am given a text file (e.g a book) and I was to print the top n most frequent words in that file.
I had seen this question before so I knew how to go about it, but I had to clarify a lot of things like, how do I get the value of n, how do we specify the filename (they were to be specified as arguments when running the script), how to handle errors, should I check for the availability of the file, how to handle the case where the number unique words were less than n. For all of these questions his response was good question (which made me feel good and think he wasn’t so bad after all) and for some of these questions he’d ask how I would handle the situations which gave me a sense of ownership and autonomy which I liked.
I explained my approach and asked if I could code it up which he obliged. Then when I got to the part where I was to get the top n words after counting frequencies, I don’t know why I implemented the sorting solution instead of heap, well I thought he’d ask if it could be optimized and then I’d give the heap solution because at the beginning of the interview he said its okay to start with a sub-optimal and we can then discuss how to make it better but then he just said “okay, let’s move to the second question”. I was thrown off and shocked because not only have I not given the optimal solution, I had not given the complexity analysis so I had to pull him back a bit and ask if he wanted me to explain the time complexity so he agreed and I derived it and then we moved to the second question.
Question 2: A slight variation of Friends Of Appropriate Ages
A group of centaurs (mythical half-human, half-horse creatures) all sign up for Facebook accounts at the same time.
They immediately start sending each other friend requests, in accordance with the ancient rules that have governed centaur friendship since the dawn of time:
I had not seen the question before and was thrown off by the problem statement and all it’s conditions, I had to read it like thrice to understand, I couldn’t come up with an optimal solution (again 😭) at this point I was so tensed so I decided to just use brute force to simulate the problem which was not really easy because the problem statement had unnecessary conditions which I didn’t realize until after the interview.
I asked a few clarifying questions before explaining my approach and then he was fine with It and I coded it up. I did a dry run with one of the examples to verify my solution, soon as my output matched the example output, I was so relieved and we concluded the questions, I didn’t even get to analyze complexity as we were out of time according to him (I didn’t want to have to analyze it too because it had O(n2) time complexity).
We then went into the questions I had for him and when I asked him for advice for starting out as a production engineering intern, his answer here again was “good question”
this portion of the interview was much better l because we had a good conversation.
Overall, coming out of this interview, I wasn’t feeling a 100 because I foolishly didn’t give the most optimal solution to the first question when I knew it and I solved the second question with brute force. I also felt like the interviewer was uninterested because he came off as just wanting to get the interview over with, so I was seriously praying for a positive feedback, I couldn’t even sleep well that night.
24 hours later, the recruiter reached out that the feedback was positive and we can move forward, I was too happy and relieved.
Then I had to schedule my final round which was Systems Interview (PE Basics).
I scheduled my interview for 6th January, 2025 so I would have ample time to prepare but then they rescheduled to 9th and finally 10th due to interviewer unavailability.
I was tensed while preparing because there as so much to cover but mock interviews helped a lot.
I had a friend who had gotten the offer already so he was really helpful
Final Round (Systems Interview - 45 minutes)
Interview day came and it went much better than I imagined.
I signed an NDA so I can’t disclose the questions.
My interview leaned more towards System design rather than operation systems, networking and trouble shooting. He only asked me like 5% of what I had learned about OS. Thank God I had prior systems design knowledge which allowed me to flow with him. We even went as deep as database schema design.
The interview was more of a conversation rather than an interview.
And for most of my questions, after answering, his responses were “Good”, one time he replied “Great!”, while answering he was always nodding in agreement while saying “yes” except when he asked me one question I didn’t know how to answer, but he was trying to guide me towards the answer by giving scenarios.
After answering the first question, he told me I answered it very well and then probed deeper.
Also, while answering one of his questions, I forgot the name of a system call, and I told him I wasn’t sure of it but I would look it up after the interview and he told me not to worry and he literally told me the system call was the listen system call. 10/10 interviewer fr. Top tier guy!
I left this interview with a much better feeling than the coding round.
I really thought I was going to get the offer but ended up getting rejected today 5th February, 2025. I guess it was due to headcount because I interviewed late, the role had closed a few days after my coding round in December which I was actually concerned about.
Overall, It was a cool experience even though I didn’t get the offer. Meta’s hiring process is up there, the careers page was very detailed and informative such that you could track your application status get resources as well.
10/10 hiring process really.
I’m more than happy to re-apply and re-interview for the role for the following year.