- Published on
How Conquering the Big Tech Interview Transformed My Life
- Author
- Shared Anonymously
I wanted to take a moment to share my experience with a big tech interviews in the hopes that it will be helpful to the community and serve as my way of giving back. Coming from a non-prominent college in an overlooked corner of the world, from the start I knew I was facing an uphill battle. While going through the interview preparation I was employed full time while also having a side hustle - part time consultancy position. As you can imagine it was a mentally challenging period of my life, but it paid off. I put all my chips on passing the interview, as securing a job at a big tech company was my ticket out of my rapidly deteriorating home country. I still believe I would be only given one chance to pass the interview, kinda like "if you had one shot or one opportunity" (hold on Eminem) so there is high chance that contributed to me overpreparing for the interviews.
Ego and fear of failure
Let's get philosophical, feel free to skip :D When it comes to preparing for and facing big interviews, it is quite common for us to grapple with our ego and fear of failure. We often find ourselves in a constant struggle to protect our self-identity, afraid that any misstep or setback might undermine our confidence and tarnish our image. However, it is important to recognize that true growth and personal development occur when we embrace vulnerability and learn from our mistakes. It is essential to remember that interviews are not solely about preserving an ideal self-image; they are an opportunity for growth and self-discovery. By shedding our fear of failure and being open to taking calculated risks, we create space for personal and professional development. Each interview experience, regardless of the outcome, provides valuable lessons and insights that contribute to our growth as individuals. Embracing personal growth entails a willingness to reflect on our experiences, identify areas for improvement, and actively work towards enhancing our skills and knowledge. It requires an understanding that setbacks and challenges are not roadblocks but stepping stones towards success. When we approach interviews with a growth mindset, we are more resilient, adaptable, and better equipped to handle the ups and downs of the process. Understanding this was probably one of the hardest thing during my interview preparation.
As the interview drew nearer, I found myself engaged in a fierce battle with my own ego, gradually realizing that my worth as an individual extended far beyond the confines of a single interview. Only in the final weeks leading up to the pivotal moment did I manage to dial down my obsessive fixation, allowing myself to detach from the outcome and shift my focus towards personal growth and self-discovery. This profound shift in perspective became the key that unlocked my ability to perform at my best. By liberating myself from the clutches of ego-driven anxiety, I gained the clarity and freedom to showcase my true potential. Embracing a mindset that transcended the fear of failure, I embraced the notion that success or failure in the interview did not define my worth as an individual. Instead, it was the culmination of my journey, the knowledge and growth I had attained, and the resilience I had cultivated that truly mattered.
I have book recommendations, so if you're interested feel free to hit me up.
Motivation and preparing while (over)employed
Motivation is only the initial spark that gets that gets the engine running, while discipline is the fuel that keeps it running. Consistency and willpower are the things that will get you to the other side. I truly believe that willpower is like a muscle and the more you exercise it, the stronger it will get. Setting clear annual objectives and then breaking those into more granular (shorter-period) objectives will keep you sane and keep moving needle. I know it's super hard to reserve capacity for daily interview preparation while employed, but the things that worked for me is to put 90-180mins blockers in my personal calendar. I perform the best in early morning, so all of my preparation was done between 5:30-8am. Eventually that crunch period in the morning felt just like one of the daily tasks I have to do and I became better at switching from it back to my regular job backlog items. It might be a myth, but you will see it many times quoted (great book "Psycho-Cybernetics") that developing a habit takes around 21 days. My first advice it to stick to the preparation for 3-4 weeks. The first few days will be challenging, but after you have completed this initial sprint, preparation should become if not easy, than more natural/regular. Try leveraging small goals (e.g. 3 weeks of continuous work, whole category of problems completed and similar), because these mini-achievements keep your brain happy and fuel the fires of success. Once you scheduled the interview a mix of fear and motivation might arise, in my case it was like a cold shower (in a good way) and it really increased my energy to keep up until the very end.
Preparation/Study Plan
Treating the interview process as a personal project is a powerful mindset that can significantly impact your approach and ultimately increase your chances of success. When you view it as a project, you bring a sense of purpose, structure, and ownership to the entire experience. In most projects there are two phases: an explorative phase and an execution phase. I am huge fan of backward design, thinking about the end goal/outcome (e.g. passing an FAANG interview) and then working backwards and defining smaller and smaller objectives (atomic tasks, you can almost get done in an autopilot mode, well maybe not if it's a DP problem :D). The outcome will dictate your preparation process, for example if you know that your targeted outcome is passing Meta interviews, eventually you would converge to the process of solving most frequent Meta interview question (probably not optimal, but just an example of how the outcome defined the structure of your preparation). Now let me break down the whole interview process and list all resources I used:
Algorithms and Data Structures Interview
- “Cracking the Coding Interview” by Gayle Laakmann McDowell https://shorturl.at/uOTY3. The standard when it comes to interview preparation. It's easy to follow and can be a good handbook if you want to refresh your memory on the basics (e.g. fundamentals of hashing, linked list, and similar)
- “Elements of Programming Interviews” by Adnan Aziz, Tsung-Hsien Lee, and Amit Prakash https://shorturl.at/yAJMV Killer book, would recommend even if you're not preparing for the interviews just to see how the authors are breaking down the problem into easily understandable/atomic parts
- Steven Skiena's The Algorithm Design Manual - Can be considered an overkill, but no book has given me a deeper insight into algorithms (especially Graph problems, and great section on Dynamic Programming). It also contains a great end to end approach on how to tackle problems (questions about inputs, picking the right weapon/algorithm, analyzing performance and thinking about pros/cons and tradeoffs)
- If you're just starting check out https://shorturl.at/oGLV6 Especially if you want to brush your memory on data structures https://shorturl.at/dsvLM. The platform contains a list of 169 leetcode questions (covering the famous grind 75 list), and all patterns you will need for a Algorithms and Data Structures interview can be learned from it
- https://shorturl.at/jlT37 It's all about figuring out when and how to apply patterns, going through this list of questions should prepare you well to recognize, communicate and implement the patterns
- https://shorturl.at/xAJRV Great cheat sheet to go through for a quick memory refresher
- https://shorturl.at/bjuUW A good collection of questions broken down in categories, depending on how much time you have for the preparation it might be a good thing to try it out
- https://shorturl.at/jlvMR Might be an overkill since it's meant for people preparing for competitive programming contests, but there are few good explanation (e.g. segment trees, strongly connected components)
System Design
- https://shorturl.at/fyQV7 Designing Data Intensive Application by Martin Kleppmann is a must read. It's pure gold when it comes to learning resources and it will for sure make you a better engineer
- https://shorturl.at/cnIRS Database Internals by Alex Petrov. Another classic, if you have time I highly recommend it
- If you're just starting and just want to test the water check out this playlist https://shorturl.at/lmzW3 System Design Interview. It closely resembles the real interview experience and questions you will be asked.
- https://shorturl.at/kpBQ0 System Design Fight Club. Another good channel with a new question every Saturday. It's a bit on lengthy side, but I collected a lot of useful information from it
- If you want to dig deep into fundamentals (replication, consensus, quorums) the creator of Designing Data Intensive Application has his own channel https://shorturl.at/bdsH4. Not many people like the theoretical approach, but I would argue that for system design you have to nail your fundamentals first to be able to communicate and explain concepts during the real interview
- https://shorturl.at/CN458 MIT 6.824: Distributed Systems. My personal favorite, if you really go through the whole course you will be able to breakdown any system design interview question
- Grokking the system design interview It's a good resource, and a classic in interview preparation groups, but I would argue it doesn’t compare with the resource listed above
- https://shorturl.at/fLT27 Distributed systems for fun and profit. Short book listing most important concepts (CAP theorem, Consistency models, total order)
- https://shorturl.at/cnxX2 Free resource frequently shared, contains some good explanation, but I wasn't huge fan of interview question examples
- “System Design Interview” by Alex Xu https://shorturl.at/uG689. Contains good set of problems, and gets straight to the point. Good example of back-of-envelope calculations and how to use them to make design decisions
- https://shorturl.at/zAEF8 Great collection of frequently used battle-tested patterns when designing high scale distributed systems
1-1 mock interview platforms
- https://shorturl.at/ipKZ8
- https://shorturl.at/hjlT9
Behavioral questions and offer negotiation
- https://shorturl.at/gzNOT Few days should cover your preparation for the Behavioral interview, this youtube channel will provide you with a headstart (e.g. STAR method)
- Second step would be to investigate your target company leadership/culture principles and mold your stories to most common questions based on those principles. https://shorturl.at/fHPV2
- https://shorturl.at/pyEX5 Probably the best resource I found, rules laid out in the blog doubled my stock offer
One ring to rule them all
I took me around 18 months to cover all resources listed above, more than 300 problems on Leetcode (50% medium, 20% easy, 30% hard) and around 200 questions from the books. For the system design I whiteboarded more than 30 problems, but actually the thing that helped the most is documenting all solutions as if they would be checked later by the interviewer. The hardest thing was to organize and connect knowledge into an easy to follow guide that doesn't take 18 months to finish. It's a bit of self-promoting but in the last 7 months of my preparation I did an ETL (Extract, Transform and Load) on all the resources I covered and the end result were 2 platforms that went live this month:
- Guide to Algorithms and Data Structures Interviews - Covering over 200 questions with detailed explanations and time/space complexity analysis extracted from the resources listed above, broken down into patterns and tagged with Company/difficulty tags. The platform enables you to gradually progress and become better at recognizing and applying the patterns. Since the real interview can be super stressful I tried to define a meta-algorithm (yeah I know not the best name) which is a collection of mapping between key phrases of a problem to the corresponding pattern (e.g. find maximum subsequence -> dynamic programming, find the shortest path in a maze -> BFS…)
- Become the System Design Interview King - Covers all the fundamentals you need for this type of interview and collection of 17 real problems broken down into these fundamentals. The course is created to teach you how to break down the problem into manageable/atomic tasks that can be solved by known patterns/approaches.
More on https://shorturl.at/aN024
Also if you want to connect on Medium https://shorturl.at/iENT8
How passing the interview changed my life?
The journey of a thousand miles begins with one step.
First and foremost, the opportunity to secure the interview not only opened countless doors for my family and me, but it also stands as one of the proudest achievements of my life. However, what I soon realized was that the structured approach I applied during the job-seeking process began to permeate into other aspects of my life. This newfound discipline positively impacted my mental well-being through consistent meditation and enlightening literature. Additionally, my physical health flourished thanks to a dedicated weight training program. Moreover, my personal relationships flourished as I became more present for others and offered assistance in problem-solving. This transformative habit of breaking down tasks, effectively managing time, and embracing structure became a cornerstone that not only changed my life but also influenced those around me.
So, I encourage you to seize the opportunity, take that leap, and conquer your upcoming interview. Believe in your abilities, for I have no doubt that you can achieve greatness. If there is ever a moment when I can lend a helping hand, please do not hesitate to reach out. Thank you for taking the time to read this. Cheers!