No matter who you are or how many times you’ve done it, the idea of a programming interview can be daunting. Do you know enough to pass? Will your solutions be good enough? What if you choke?
It’s okay if you’re nervous. In fact, I’d take it as a good sign: it means you really want to succeed!
In truth, interview preparation is more about building confidence than strictly expanding what you know, though that’s important too. Here are five things you can do to make sure you’re well-prepared and feel ready for the big day.
1. Study a Little Bit Every Day
The absolute best way to prepare, bar none, is to do a little bit of preparation work every single day between now and the interview. Even if you don’t have an interview lined up yet, get started. Every little bit counts.
Daily practice questions are a good place to start, but don’t neglect other aspects like researching companies and technologies or refining what you’re going to say about yourself in terms of your credentials and experience. All of that is covered later in this article.
It’s important that you set realistic but challenging goals with your daily practice. Don’t make the mistake of doing too little every day — you need to take it seriously! — but don’t cram too much either. That’s how you end up with mental burnout.
Even more important than that is to start early! Again, start RIGHT NOW if you’re able to. If the interview is several months away, maybe you can afford to wait a bit before starting, but we recommend starting at least six weeks out.
The ultimate aim is to prevent overworking yourself, which can be counterproductive and overwhelming.
2. Know What the Interviewer Wants
As soon as you have an interview lined up, it’s in your best interest to research the company as much as possible. Context is everything when it comes to productive preparation. After all, your end goal is to meet your prospective employer’s needs.
Start with the job listing. Is it for an MMORPG game development position? Then you ought to be familiar with the tools and frameworks used in that field. Same thing is true for the development of mobile apps, business suites, web frontends, server backends, or what have you.
If the information is available, you should also study the specific technologies used by the company itself. You don’t have to be an expert (unless the job listing calls for it) but you should know enough to hold a decent conversation on it.
Study the right languages and concepts. Some of the bigger companies will interview you using the language you’re most comfortable with, but others want to test your expertise with their chosen language whether it be Java, C#, Python, etc.
It’s up to you to know what they expect from you. This simple but crucial step could significantly improve your programming career opportunities.
3. Focus on Improving Weaknesses
There are a lot of things you need to know: data structures, algorithms, industry standard libraries and frameworks, and more. Nobody expects you to know everything, but you should be confident in the things you do know.
Commonly covered topics include:
- Nuances of certain programming languages, especially dynamic programming languages which have become popular lately. Understanding the principles of OOP is critical.
- Arrays, Linked Lists, Stacks, Queues, Heaps, Hash Tables, Binary Trees (including Binary Search Trees and Self-Balancing Binary Trees).
- Big O Notation (time and space complexities), Sorting, Searching, Recursion, Graph Theory and Traversals, Divide and Conquer, Greedy Algorithms.
- Patterns such as Singletons, Factories, Composition, Multiple Inheritance, Polymorphism, Decorators.
And, of course, field-specific topics depending on the position you’re applying to (i.e. SQL queries for databases or UDP/TCP for network programmers).
If some of these topics make you nervous, that’s what you should be practicing. Identify your weaknesses and strengthen them. That will end up being more helpful to you in the long run because it will build up your confidence.
Fortunately, there are plenty of web tools you can use to practice data structures and algorithms. Here are some of our favorites:
- Project Euler
- Code Wars
- /r/DailyProgrammer on Reddit
But don’t just rely on rote memorization. Programming interviews — the good ones, anyway — are meant to see how you approach problems, what your problem solving process looks like, and where the edges of your capabilities are. Data structures and linked lists are must have tools in your belt.
4. Mock Interviews Are Priceless
It’s one thing to study on your computer and type out code in your favorite IDE. It’s a completely different experience to write out your code on paper with pencil or on a whiteboard with marker — without Google as a backup.
Gives new meaning to the idea of writing better code.
Don’t underestimate the importance of mock interviews. Set them up to simulate the interview environment as closely as you can: no computers, no phones or tablets, a sheet of paper, a pencil, and a timer for 30–60 minutes.
By practicing in this way, the actual interview won’t feel like such a foreign experience, and this can really go a long way towards reducing nervousness and making sure you’re concentrating 100% on the questions before you.
There are even online services that offer mock programming interviews for free. They aren’t perfect, of course, but they can be very useful if you need the person-to-person practice.
5. Exercise, Meditate, Relax
This last tip isn’t programming-specific, or even interview-specific, but it could be the one that helps you the most. Confidence is best cultivated when you have a stable and robust mind, whereas a frenetic or insecure mind can be a massive obstacle.
Most importantly, take care of your physical health. I’m talking about both diet and exercise. I know it can be tough to make time to go to the gym or even just to run a lap around the neighborhood, but exercise is demonstrably good for your mind.
And then there’s the magical 3-minute exercise for fixing your posture. That can work wonders for confidence.
Mindful meditation is also good for you. It can be done without any kind of spiritual or religious component if you don’t want that. At its core, meditation is about being in the moment and being intentional about your thoughts.
We’ve shown how meditation can make you a better programmer, so give it some serious consideration. Even just 10 minutes a day can have big results.
And lastly, make sure you sleep well. Not just the night before your interview, but all throughout the preparation as well. Using apps like Flux and Night Shift along with basic relaxation techniques can help, and if they aren’t enough, you can try these smart sleep gadgets.
Don’t Worry, Failing Is Not the End
Even if you do everything perfectly and ace the interview, you may not get the job. In many cases, that’s more of a statement on the state of the industry than your value as a programmer.
It isn’t uncommon these days to have to interview several times before landing a job, so keep your chin up and stay at it. Each interview is a learning opportunity. You’ll get there soon enough.
What’s the worst part about prepping for a programming interview? Is there anything that really has you nervous or scared? Got any other tips worth sharing? Let us know below!