I recently went through a failed interview, which, although not ending my chances for further interviews, impacted my levelling and cannot be considered a successful interview to me. However, in hindsight, this experience (along with any other form of failure) can make me stronger in many ways if appropriately handled. In this article, I will share the entire process and introspection, hoping it can be helpful to you.
System Design Interview
According to the current mainstream definition, this is a phase called the "System Design Interview," which involves various knowledge related to operating large-scale production systems. It includes estimating system load, identifying core and supporting systems, ensuring high system availability, load balancing, asynchronous message processing, and designing effective caching mechanisms (including but not limited to database caching, application caching, and static data caching).
This phase is challenging to prepare for because it is open-ended and relies on the interviewees' experience and knowledge accumulation. I prepared based on this mainstream definition. While I had some prior experience with system design, I have been focusing on frontend development and code design in recent years. So, I studied some up-to-date resources to recharge: I read Alex Xu's booklet and another book called "Grokking the System Design Interview." Additionally, I learned from various YouTube videos, such as how to implement a Twitter or a YouTube.
However, during the interview, there was a slightly unexpected turn: the interviewer told me to temporarily exclude the backend system and focus mainly on the frontend (as indicated by the red box in the image above). In other words, 90% of what I prepared was not utilized. You can imagine how the interview went. I relied solely on intuition throughout the process and missed some crucial scoring points.
Keep reading with a 7-day free trial
Subscribe to The Pragmatic Developer to keep reading this post and get 7 days of free access to the full post archives.