There has been no shortage of content detailing how interviewing in tech is broken. How it’s gotten much harder in the age of AI. I myself have been coding for around 10 years. 2023 was the hardest year yet in my career. Like many others I got laid off at the end of 2022 after tech went through an over hiring phase during Covid.
In 2023 it wasn’t that there weren’t opportunities, there were still plenty, it’s just that to get a job you had to compete with more qualified talent than at any other time since probably The Great Recession. Long gone were my junior days where I felt I mostly could get a job off of ‘good vibes.’ The coding tests were more challenging, more numerous, and I found that LeetCode challenges were becoming the norm.
I’m a frontend engineer. Up until this point in my career I’ve only worked at start-ups. Broadly speaking for frontend engineers, start-ups tend to not value LeetCode style problems. It’s not that they don’t have a place, in fact I’ve come to appreciate them. In the age of AI understanding time and space complexity is quite important when you are working with AI tools that can build and refactor components and large swaths of architecture.
I come from a non-traditional computer science background. When I transitioned into tech I spent a lot of time learning how to build things. Websites, layouts, components, etc. I learned on the job and took courses along the way. It felt like with all of this talent on the market companies wanted to filter for engineers coming from Big Tech. Given that those companies emphasize LeetCode problems so did most companies. I spent most of my days studying LeetCode, but I still failed the majority of my tech screens. After months of this experience I began to get depressed. I ended up going back to contracting. Over the course of the next year or so I had a couple of clients. One of them took me back to my roots building websites. The other was for a stealth start-up that needed someone to help with their frontend and UX.
At the time, I was happy to have something. I learned a lot about what it took to build a business and had the chance to expand my skills, but I still felt somewhat unfulfilled. I found some time to still study LeetCode and interview prep, but I’ve always found it hard to interview and work at the same time. Interviewing in our industry is so intense, that it often becomes a job on its own.
I tried many online courses, getting mentors, mock interviews, and paying for courses. I want to share what I found most helpful, in case it will help others. For whatever reason I find most of the study tips out there lump frontend and backend engineers together, and while there is overlap, it’s largely different.
Interview Cake
To solve LeetCode problems I can’t recommend Interview Cake enough. Interview Cake distilled how to break down LeetCode problems. It took several months of drilling these sort of problems before I slowly, began to realize I was making progress. I do think some of the problems here are a bit easier than problems I’ve come across on LeetCode, but honestly most interviews are going to give you easy and medium problems. So if you understand the process of how to think about and break down the problem you’ll be many steps ahead. Also, I noticed when I signed up in 2024 I paid $249 for 12 months. Today I can see it’s $349 so they must be doing something right.
LeetCode
A friend advised I work on LeetCode Top 150 problems from top to bottom. I got a little over 1/3 way through. I would recommend stopping after Stack, unless you are curious about learning more esoteric problems.
You may encounter a kind of a problem in an interview you haven’t seen before, but in my opinion unless you are targeting a specific company and you think it’s likely to come up I would optimize your studying for the types of problems you’re most likely to face. So for frontend that’s String, HashMap, Array, Stack, Two Pointers, Sorting, and maybe Matrices problems.
Once you know the common problem types, it’s important to also learn the algorithms and patterns used to solve them. Recognizing these patterns makes tackling unfamiliar questions much easier. Greedy algorithms, Two Pointers, Frequency Counter, and Binary Search problems came up somewhat frequently. Finally, make sure you understand all the JavaScript data structures and when to use each one. That knowledge can be the deciding factor between an almost-working solution and a clean, optimal one.
Mock Interviews
Interviewing is very performative so along the way you should absolutely do mock interviews just to get the nerves out and to practice being calm under pressure. I paid for several using Interviewing.io. They were certainly helpful, but I actually found the free ones I did with peers, both on interviewing.io and tryexponent.com to be more helpful. Why was it more helpful? It’s worthwhile being on the interview side of these mock interviews so you can see how other people approach these problems. Sometimes you may encounter someone who bombs and you’re reminded you aren’t the only one struggling. Sometimes you may encounter someone who is excellent and you learn a lot from their approach. Either way, it prepares you for the real thing. I also found the quality of the paid mock interviews to be inconsistent.
Use your favorite LLM to further your understanding
I feel like it goes without saying at this point, if you’re not using an LLM to complement your studying you are doing it wrong. Not only can an LLM give you hints and feedback, but it can answer just about any question you may have about the problem and proceed to break it down in detail. Make sure you spend time trying the problems on your own first, but spending subsequent time understanding it is key. I used ChatGPT 4o at the time, but at this point there are plenty of options that will probably work just as well.
Drill frontend problems
Just as I was finally making progress on LeetCode/data structure problems I started to notice in the fall of 2024 that the interviews were starting to revert to UI problem solving style interviews – e.g., hit this API, return the data, and do something with it. Fortunately, I found my problem solving abilities gained from LeetCode problems as well as becoming more proficient with data structures did help here. However, at first I struggled with these interviews a bit because I wasn’t drilling React problems enough. So make sure that you never get too far away from the actual work of a frontend engineer because some interviews are practical. GreatFrontend.com is helpful for these sorts of problems, but so is just drilling common frontend problems – e.g., todo lists, filtering a list, create a ratings component, etc.
System Design Prep
I didn’t spend too much time on Systems design prep. This interview often comes late in the process and varies per company. I felt I was able to lean on my knowledge from building features and releasing products over the years, but your mileage may vary. The GreatFrontend has a Systems Design playbook that is helpful. I also found a few articles and videos that covered Product Design to be helpful as well. If you’re unsure how you may fare in this round do a couple of mock interviews.
The future of interviewing
Nowadays, there are a couple of companies that help you cheat with LeetCode style problems by overlaying a chat interface on your monitor without the interviewer being able to see. I don’t have experience with using these so I can’t necessarily recommend them, but I find the invention and growing popularity of these tools both hilarious and inevitable. Many companies have become lazy with their interview process. Too often they don’t test for practical problems that emulate the day-to-day job and instead ask esoteric questions that can easily be answered by an LLM. These same companies want to hire less because they expect their engineers to use these tools to get more done. So, it’s only fitting that those same engineers would use those tools while interviewing.
It took me a while, but earlier this year I started a new role. The process was about a month and five intense interviews. Each round was different. I thought the company did a good job of assessing where I’m at as an engineer overall. I suspect as AI tools become the norm companies will revert to assessing how well rounded the engineer is rather than over indexing on how well they did on a LeetCode problem. I also think as knowledge essentially becomes free the soft skills and communication will help distinguish you as an engineer. And your ability to use AI tools of course.
Some companies now have an AI round where they will access how you use AI to solve problems. The landscape for AI is changing so quickly that I hesitate to give too much advice how to prepare for this round. Just do your best to keep up-to-date with how this technology is changing the landscape. Also, make sure you’re using AI in your day-to-day work.
Finally, make sure to keep calm and composed. I’ve had several interviews where I really felt the interviewer was testing my nerves under pressure, yelling at me and trying to throw me off. It seems odd, but your ability to remain calm in that moment can decide how far you make it in the process.
Final Thoughts & Advice
If you are struggling out there you’re not alone. The industry has been especially tough these past couple of years, but if you are able to play the long game and put in the work you’ll make it. Despite the challenges and changing landscape, it’s a really exciting time to be an engineer.
Top comments (0)