The interview process I went through consisted of three main rounds. Each round had its own unique challenges and requirements, all conducted in English.
1/ The first round was the Online Assessment:
This test included three questions: one easy, one medium, and one hard, with a total time limit of 75 minutes. I tackled this round confidently, solving all the questions in less than an hour, and was certain I had achieved a perfect score.
2/ The second round was the Screening Round which lasted an hour:
- The interviewer was very nice and we spent the first half of the time discussing my past experiences.
- For the second half, we moved on to live coding. I wrote a piece of code that ran successfully with the given example, and the interviewer accepted my optimized solution. I left this round feeling positive.
3/ Then came the On-site Round, which was divided into three one-hour interviews.
3.1/ The first interview was with a tech lead.
- We began by discussing my project experiences before moving on to a coding challenge.
- The task was to create a game with an action that needed to be optimized to O(1) complexity. Initially, I proposed a solution with O(log) complexity, but through our discussion, I was able to refine it to O(1). I felt confident that this met the criteria perfectly.
3.2/ The second interview:
- Started with another discussion about my experiences, during which I drew a diagram of one of my projects.
- The interviewer then presented a coding problem which I found quite easy.
- I completed the solution with a fully optimized idea, leaving 30 minutes to spare. The interviewer had nothing more to ask and requested that I write some test cases.
- After I finished, he still had no further questions, so I took the opportunity to ask him about the company.
3.3/ In the third interview:
- we talked about my past experiences with various companies. Although I couldn't remember the details of some older jobs, the interviewer assured me it was fine.
- We then moved on to a system design question. The task was to design a system similar to a social platform.
- I clarified the scope and focused on the essential use case the interviewer wanted.
- I explained the model design, API design, and overall architecture. The interviewer asked some follow-up questions, to which I responded by elaborating on load balancing, service discovery, scaling strategies, queuing, caching, database replication, and quorum strategies. We also discussed the trade-offs and failure modes.
- I felt that I had provided comprehensive answers with no significant gaps.
Overall, I thought the interview process went smoothly. However, three days later, I received a rejection email. This outcome was quite a shock to me. I wrote a review expressing my heartfelt respect for all the interviewers and the process, believing that the truth of my performance in the interview would be evident to them. While I understand the possibility of rejection, I believe the questions were already quite challenging and I had navigated them successfully, reflecting my long-term consistent learning.
It's a disappointing story, but I'm sharing it to illustrate the potential randomness and lack of clarity that can sometimes be part of the interview process. This experience also serves as a personal note and advice for others to be aware of these possible challenges.