Status: 12years Exp
Position: Lead Engineer at a consultancy
Location: London
Date: Feb-March 2021
Talk with the recruiter (30mins):
This was possibly one of the most important discussions regarding the interview preparation. The recruiter helped me a lot in terms of setting the expectations for the interviews.
Tip: Treat this as an interview and a chance to ask any questions you might have regarding preparation. The recruiter will help you even with suitable interview resources and tips.
Technical phone screen (45 mins): I was asked two questions in this round:
Both of them were fairly easy to solve. The key here is to talk through the thought process. I tested the code as soon as I finished writing it without the interviewer prompting for it, this impressed him. Here is a nice video on how approach the problems and test:
Virtual Onsite (4 rounds):
Behavioral (45 mins): This round mainly focused on my personal experiences working in teams and technical problems in my previous jobs. The questions were fairly open ended and for each answer there were some followup questions. I wasn't asked any coding questions in this round, but it's not uncommon.
Tips: Being genuine and being self critical goes a long way in this interview. I found that just remembering significant projects from my CV and having a narrative from each of them was very helpful in terms of preparation for this round. And Yes, remember whatever you are bringing to the table, expect that more often than not there will be follow up questions spawning from the answers.
Note: My recruiter told me that if an interviewer doesn't get enough positive signals in the behavioral interview then even if the other interview responses are positive typically it ends up being a "no-hire" decision. Also it's quite rare to get a "2nd opinion" for this round as these interviews are typically taken by more senior engineers.
System/Product Design (45 mins): I was asked to design a file sharing system like Dropbox. During the requirement gathering I highlighted a potential security issue with auto-sync of the files when shared with other users. Though I didn't take this security feature for the design, I think the interviewer got impressed by it. Also he was impressed by my proposal of staggered scale up depending on data gathered from the usage trends of the service. I was able to drive the design discussion, with the interviewer asking occasional clarification questions. One of the questions were SQL vs NoSQL, I was able to give some high level key differences without getting lost in the details and wasting a lot of time. A good reference video here on this subject.
Tips and references: Keep the design high level, unless the interviewer wants to go deep into a subject and stay focused on the requirements. I can't stress more on how important it is to stay focused on the requirements and to design a working solution. There is a ton of materials and videos available in the internet for concepts and systems:
It's really important to understand the concept/technology in depth as it may give negative signals if one just name-drops a concept/technology but can't elaborate on them when probed deeper. At the same time it's beneficial to stay focused on the big picture during the interview. I found this video particularly helpful on how to keep the design simple and talk confidently without getting lost in details.
Coding 1 (45 mins): (Virtual) Onsite coding rounds are very similar to the phone screening one but with a higher bar. I was asked two questions in this round:
Coding 2 (45 mins): Two more coding questions again in this round:
Feedback: I received feedback from the recruiter the next day that all 4 rounds were positive and they were ready to put me through the review-board. I received the offer the following day.