
Illustration by Icons 8 from Ouch!
What I learned about coding interviews
Over the years in software engineering, I had heard a lot about the dreaded coding interview. Colleagues, managers and people I met at networking events made it clear how challenging technical assessments could be. I heard some fantastic stories, like interviewees switching their laptops to aeroplane mode to end an interview, to avoid the awkwardness of not knowing an answer.
With this information, I spent a lot of time preparing for technical interviews and wanted to share some resources that helped along the way.
Table of Contents
- Introduction
- Computer Science Fundamentals
- LeetCode
- System Design Interviews
- HackerRank AI Live Coding Assessment simulator
- Advanced React and Testing Resources
- Conclusion
Introduction
The focus of most technical interviews is Computer Science fundamentals, specifically around algorithms, data structures and computer architecture. If you understand these concepts, you can apply that core knowledge to the tasks you will face every day. For example, understanding queues will help explain how Netflix manages video buffering. If you know how to do a Binary Search, you may be able to work out how to reduce latency on database searches.
However, a growing number of hiring managers argue that strong Computer Science fundamentals don’t always translate into competence. For this reason, some companies will assess your skills for the job you are applying for. For example, if you are a React developer applying for a React role, you may be assessed on React fundamentals.
Tip Number One: Ask your recruiter or hiring manager what skills you will be assessed on.
Computer Science Fundamentals
As a software engineer, you should have a basic understanding of computer science fundamentals. This includes algorithms and data structures, computer architecture, operating systems, programming languages, and some mathematical foundations.
I covered Computer Science Fundamentals in my Apprenticeship and used concepts, like Big O, regularly when working with loops and array methods across the full stack.
One of the best resources I came across on this topic is The Self Taught Computer Scientist by Corey Althoff.
This book is really worth a read if you are new to Computer Science or just need to remind yourself of basic core concepts. It explains topics really well and includes easy to understand diagrams and pictures. It is a fantastic start on this topic.
This book was the sequel to The Self Taught Programmer by Corey Althoff. I’ve seen this highly recommended if you are brand new to programming.
Other resources I used to prepare:
Tip Number Two: Spend time understanding Computer Science fundamentals regardless of where you work in the stack.
LeetCode
LeetCode is a fantastic free website that provides technical interview preparation including algorithmic and data structure problems you can practice and solve.
In some live coding interviews, you will be expected to solve challenges similar to those on LeetCode, so you can think of it as an exam revision tool.
I found LeetCode a lot easier to navigate once I spent time brushing up on Computer Science Fundamentals, so I would advise starting there first.
NeetCode is a popular alternative with YouTube tutorials.
Tip Number Three: Spend time understanding Computer Science fundamentals before jumping into LeetCode.
HackerRank AI Live Coding Assessment simulator
HackerRank is used by many companies as a coding assessment tool but also offers an AI Live Coding Assessment simulator with 53 Practice Challenges. Each test was approximately £10 (at the time of writing) and emulated a real live coding experience with a pretend legacy codebase + challenges to complete within an hour.
I found the tool useful to mentally prepare for scenarios and questions that may have come up in a coding interview. You are also critiqued on how thoroughly you explain what you are doing, although this was a little challenging as you could not speak while you typed which ate into the allotted coding time.
All the same, this AI Live Coding Assessment simulator really helped me prepare for what to expect in live coding scenarios.
On the link above, if you click the button Developer, you will navigate to sign up for the live coding simulator.
Tip Number Four: Practising for live coding interviews is a must, whether you use this resource or practice with friends, it’s really important to get into the right headspace.
System Design Interviews
System Design interviews are a great opportunity to show everything you know about systems. Even if your role is mostly focused on the front end of the stack, you should have a basic understanding of how the system is deployed and hosted.
The best resource I read for preparing for System Design Interviews was the book aptly named:
System Design Interview – An Insider’s Guide, Volume 2
There is a formula to building systems, and this book breaks it down into real world concepts and examples.
Even with a background in system architecture, I found this book to be really useful. It helps you structure your thoughts and present a solution in the clear, methodical way. It’s less about learning what a microservice is, and more about learning how to design and talk through a complex system in a 45-minute interview slot.
This book is Volume 2 in the series. There is also a Volume 1 which I have read is highly recommended if you know very little about computer architecture:
System Design Interview – An Insider’s Guide, Volume 1 (Second Edition)
There is a lot to System Design and concepts can be difficult to digest. Earlier in my career, I came across this YouTube video which I think explained basic System Design concepts really well:
Tip Number Five: Spend time understanding System Design and practice designing some small systems yourself!
Advanced React and Testing Resources
The resources I am listing here have helped me become an exponentially better React developer. Whether you are preparing for an interview or just want to become better at your craft, I would advise checking out these courses.
To improve your React skills and learn advanced React practices:
To improve your testing ability and prepare for TDD focused interviews:
Testing JavaScript by Kent C. Dodds
Tip Number Six: It’s good to learn advanced skills for your day to day work and preparing for interviews. These courses are pricey, but worth it. You may be able to share resources with other engineers.
Conclusion
I hope that these resources can help you prepare for coding interviews, or become a better developer in general. To summarise, the tips outlined in the article are:
- Always clarify the scope of the assessment with your recruiter first.
- Master Computer Science Fundamentals.
- Use LeetCode like an exam revision preparation tool.
- Practice is non-negotiable. Use AI simulators or friends to get comfortable with the live-coding pressure.
- Don’t skip System Design, even if you’re a front-end developer, as it shows valuable holistic knowledge.
- Invest in advanced, specialised resources for your domain (like Epic React) to truly stand out.
Good luck and all the best 💪