avatarSantal Tech

Summary

An experienced software engineer shares their successful strategy for securing multiple high-paying job offers, including a detailed list of resources used for technical interview preparation, coding practices, system design, and interviewing techniques.

Abstract

In 2022, the author of the web content underwent a series of interviews with nine tech companies, resulting in seven job offers, several of which exceeded $500,000 in total compensation. They attribute their success to a combination of strategic preparation, including working through coding problems on platforms like Neetcode and Leetcode, understanding coding patterns such as dynamic programming and binary search, and engaging with system design resources like the System Design Primer on GitHub and courses on Educative.io. The author emphasizes the importance of truly understanding the code rather than memorizing templates, and they recommend paid interview practice services like Prepfully to improve system design interview performance. Additionally, the author highlights the value of effective communication with tech recruiters, salary negotiation, and sharing personal interview experiences, as evidenced by their detailed accounts of interviews with companies like Two Sigma, Stripe, Square/Block, Rippling, and Datadog.

Opinions

  • The author believes that understanding the underlying principles of coding patterns is crucial for adapting to interview questions, rather than simply memorizing solutions.
  • They advocate for the use of well-structured templates, such as those for binary search, to tackle a wide range of problems efficiently.
  • The author suggests that familiarity with a company's tech blog can provide valuable insights into real-world applications of concepts like eventual consistency and CDNs.
  • They recommend investing in paid mock interviews, particularly for those aiming for senior or staff level roles, to enhance interviewing skills significantly.
  • The author stresses the importance of in-depth knowledge of chosen databases and tools, as interviewers may ask specific questions about data consistency and locking mechanisms.
  • They advise reading Patio11's salary negotiation post for effective negotiation strategies.
  • The author shares that their interview experiences, including both successes and failures, were instrumental in refining their approach to interviews and offer a realistic perspective on the process.

Every resource I used to get multiple >$500k software engineering offers

In 2022, I interviewed at nine companies and received seven offers; several of them offered total compensation over $500,000. Here is a list of all the resources I used to prepare for technical interviews.

Coding

A disclaimer: I don’t believe in memorizing templates without understanding what they do. While it helps to have a pattern you can apply to questions, you should really understand what the code is doing so you can easily adapt it in case the interviewer modifies the question.

  • https://neetcode.io/—This site offers excellent video explanations for commonly asked interview questions. I strongly suggest working through the problems section-by-section to get more practice with a given topic. However, only high-quality practice will make this site worth it; I recommend attempting each problem independently for at least 10 minutes before watching the video solution.
  • Dynamic programming patterns — the explanations here are sparse, but the author grouped different types of problems into categories so you can get more targeted practice.
  • Partition subset problem — multiple well-written solutions for this classic problem.
  • Binary search patterns — using a relatively simple template, you can solve almost every binary search question. The explanations here are well-written. Note, my Two Sigma interviewer wanted me to use Python’s built-in binary search (bisect.bisect_left) instead of writing binary search from scratch, so familiarize yourself with that library too.
  • Sliding window problems — a collection of sliding window questions and a generalizable approach to solving them.
  • This video on binary search gave me a different perspective on what binary search was doing and helped me understand the concept better.

System Design

I’m ranking these by increasing complexity; start from the top and work your way down.

I’d like to add a caveat that if you’re applying for senior or staff level roles, you should be able to discuss these topics in-depth. An interviewer might ask you about the specifics of how your chosen database handles locking or data consistency, so I’d recommend really learning about the tools you choose.

Interviewing Practice

Sure, you can have your friends give you practice interviews, but don’t discount the importance of actually doing paid interview practice. I’d say this single-handedly helped me improve my system design interviews the fastest. Check out my post The best $1,000 I ever spent: Prepfully software engineering mock interviews for more information.

The Other Stuff

My Interview Experiences

https://unsplash.com/photos/58Z17lnVS4U

For more articles like this, follow me on Medium. Not a member yet? Join the community. Want more software engineering interview guides and coding question tips? Check out all of my writing organized by topic in this article.

If you have any requests for what I should write, please let me know!

Software Engineering
System Design Interview
Technical Interview
Software Engineer
Google
Recommended from ReadMedium