an unofficial guide to software engineering interviews

posting this before its completely finished so people can get started. last updated: 2026-06-22

a quick notes version of what to do, how to do, when to do. Some disclaimers out of the way:

Rough ordering of things

Typically, the entire process can take 3-6 months. You will study, apply, interview, fail, learn, and repeat. But with each failure, you should be getting great practice and get better at interviewing, increasing your chances of success when you start interviewing with harder companies you really want to work for. There are two streams: interview preparation, and job applications/scheduling. You can do a lot in parallel, but with a bias towards getting through the interview preparation stream first.

Interview preparation

Phase 1: Review data structures and algorithms

I like reading through the Cracking the coding interview chapters:

That's it. You don't need to grab the same book, but generally an overview of all of this is useful, no matter the source. I wouldn't bother with any of the technical questions or the advanced topic sections, since Gayle does a pretty bad job on anything that is slightly non-fundamental as those topics.

For the more advanced stuff, here are some videos I recommend:

Most questions are going to be graph-related, and the hardest questions are generally some variation of graph or DP, so a couple more additional resources for review wouldn't hurt:

Phase 2: System design study and Leetcode practice

If you have a lot of time, and actually care to be not only be good at interviewing but also successful at whatever comes next, read Designing Data Intensive Applications (2nd Edition). Else I would suggest going through one of the resources in: Tech Interview Handbook – System Design. I only have experience with Grokking the system design interview (I will have a mirror up for this soon, check back later).

At the same time, start on Leetcode, my go-to is Blind 75 (I do 50 questions, but you can do the full 75). Go through these questions multiple times, and at least once before your first technical screen.

I split my time between LC and studying system design. Prioritize LC, while studying system design once fatigued.

Phase 3: Review and repeat

While interviewing (phase 3 of Job Applications and later), keep repeating the same set of LC questions for practice, identify gaps in technical and system design rounds, and keep filling the gaps.

Job applications

Phase 1: Make a list

It may feel counter-intuitive to start with a list of companies before having a resume, but I have found it helps seeing job descriptions (JD) of roles that interest and excite me, to later use that context in anchoring my resume. One important caveat is you never really stop adding new companies to the list. Sifting through job sites more often than not ends up being a weekly thing you do, adding new companies and roles to your list as you go. But as an initial seeding step, make a 4-tiered list of companies:

  1. Target companies – You already know that you would work for them if you got an offer
  2. Tier 1 – The hardest of the interviews, the highest of the pays. Many times the companies that end up here and not in Target are ones that are in cities you don't want to relocate, or you find ethically gross.
  3. Tier 2 – Mid-sized companies. Typically tech-first companies that have been around a while, but doesn't pay as high as tier 1
  4. Tier 3 – any other companies, and early-stage startups if you don't want paper money.

A note on interviewing with companies you don't care to work for: the last time I was interviewing, I actually took an offer from a mid-stage startup I had no intention to work for going into the interviewing process. But I ended up liking the team and opportunities, and they even changed their original role to allow for remote so I didn't have to relocate. That happens a lot, so its a win-win for interviewers-interviewee. Worst/best case you get good practice, or you end up liking a company you wouldn't have considered otherwise.

Once you have your list, start going through the career page of each to find roles you would want to apply to, scan the JD to get an idea of skills in demand, and save it to your list.

Phase 2: Prep your resume

How to write a good resume is beyond the scope of this article, but write a great resume. When confused about how to frame or what to keep on your resume, remind yourself of all the JDs you reviewed in the previous step and draw inspiration from there. Get your resume reviewed. It can take weeks to have a good resume assuming you have good people reviewing it, so plan for it.

Phase 3: A/B resume, A/B self

Start applying to Tier 3 companies on your list. Don't do them all in one week. Test drive by applying to a few places, and see if you receive good response on your resume. If you see yourself get less than 50% acceptance, there may be something wrong with your resume, or that it isn't good enough for the role/level you are going for and its back to Phase 2.

Phase 4: Behavioral Preparations

Write up common questions that come up and your answers to each. This will come in handy as you learn how to effectively communicate during your interviews. Some starter questions:

Add more to this list as you see common questions come up.

Phase 5: Move up the tiers

Once you have solid grasp on technical, design interview, practiced stories, and a solid resume that gets accepted more often than not, keep applying to higher and higher tiers on your list. Expect to apply to at least 40 different roles, possibly 75 for your best chances. Have at least 10 onsites before expecting offers. It's luck and practice, and you want your best chances.

more to come

I sat down one afternoon and wrote this up without review. I will come back and update it time to time until its organized in a manner I can be proud of and move this to a more formal place. thanks for reading, and good luck!

extras: I found this random blind thread really useful, and took a lot of curated resources from there: 7 onsites 7 offers


To stay up to date, be sure to follow @[email protected] on the fediverse!

My social links: https://twit.dispersio.us/@sadman https://linkedin.com/in/sadmansk