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:
- people have opinions, none of them right and all of them subjective
- what worked for one person with a specific set of skills, and specific market timing, may not work for another
- its always mostly luck, but for the ~25-40% time it isn't, you should be prepared
- this is geared towards SDE2+/senior/even staff roles. Leetcode is the same for everyone, while system design and story-telling expectations scale with seniority
- unfortunately being a good software engineer has little to do with being a good interviewee. my suggestion is to be honest and be a good software engineer first before you play the game and try to sell yourself than more than you are. Don't be like Neetcode.
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:
- Big O
- the entire Data Structures section (arrays, linked lists, stacks and queues, trees and graphs)
- Chapter on recursion and dynamic programming
- Chapter on sorting and searching
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:
- Kahn’s topsort: https://youtu.be/cIBFEhD77b4
- Dijkstra’s shortest path: https://youtu.be/pSqmAO-m7Lk
- Kruskal’s MST: https://youtu.be/JZBQLXgSGfs
- Union find: https://youtu.be/ibjEGG7ylHk
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:
- Graph problems: https://youtu.be/tWVWeAqZ0WU
- Dynamic programming: https://youtu.be/oBt53YbR9Kk
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:
- Target companies – You already know that you would work for them if you got an offer
- 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.
- Tier 2 – Mid-sized companies. Typically tech-first companies that have been around a while, but doesn't pay as high as tier 1
- 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:
- Tell me about yourself
- Why are you looking to change jobs?
- What are you looking for in a new role?
- Your best/most impactful project in the past year/recently?
- etc.
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