Don't feel overwhelmed by the interviewing process.
If you know how to prepare — and you take all necessary steps — you can tackle anything the interviewers throw at you. Which means that sooner or later, you’ll get one of those high-paying jobs, to start your coding career off on the right foot.
This is how you'll succeed, in a nutshell. Follow this roadmap for your coding interview preparation. Internalize the seven steps. Focus and execute them as well as you can. Get that high-paying Software Engineer job.
1. Prepare your portfolio
There's few things interviewers love more than when they can see with their own eyes the real-world results of your coding skills.
They know you're passionate about building and problem-solving
They see proof of mastery over your craft
They appreciate your discipline to see things through to completion
Tip:When you send in your resume, include your portfolio.
Designers do this — and engineers should, too: It'll make you stand out.
The more side projects you complete, the more likely you’ll learn how to code effectively and land a job:
Build a mobile app or web project. And have the source code ready to show. A portfolio full of real coding projects will raise your status above other interviewees.
Get GitHubbing. Provide your interviewer your Github username so they can see the projects you work with and how you work with them.
Do Hackathons. Having participated in a Hackathon is a great item to include on your resume — and to talk about during your interview.
Contribute to Open-Source projects. This shows you can work with a team and you can handle having your code reviewed.
2. Enter their sphere
The next step for you to go into your coding interview with unshakeable confidence:
Become an expert on THEIR company. And get in touch with them early on.
Check their "About us" page. Here you can learn about their history, self-image, and values.
See what they're posting on social media. From checking out their Twitter, Facebook or YouTube presence, you can glean more about their messaging and communication style.
Read recent articles about their company. This way you make sure you're up to date on what's happening in the company and their current business dealings.
Find your interviewers on LinkedIn. Find out as much as possible about their background. You can then use this information to better connect with them during the interview.
Get to know the company's team. Search for the people in the same branch. Send them a connection request and start engaging them! The result is that on the day of the interview you already know everyone.
Connect with recent interviewees. After introducing yourself, politely ask them for tips on the interviewing process. In many cases they'll be glad to help you out. They might even point you to the kinds of questions they were asked.
Now you know about their history and current events. You know what they value. And you've gotten to know your interviewers and potential future coworkers.
You've even learned how to best prepare yourself — from people who've recently gone through their interviews.
Each of these will give you an advantage going into your coding interview.
3. Think like a winner
Visualize success. Take the time to mentally rehearse your coding interview. Imagine how you'll solve problems proficiently, communicate confidently, and stay focused during the whole interview process.
Nothing to lose.Sure, every interview is a big opportunity. But even if you were to fail, there's more companies out there you can apply for. Go in with an attitude of abundance, and you'll find it easier to perform well — while staying calm and confident.
Don't stress about what's outside your control.Stressing about the result, stiff competition, or team dynamics is a waste of your inner resources, because it is outside of your control. Stay independent of the outcome. If you get the position, great; if not, no big deal—don’t take it personally, and prepare better for the next interview.
Persistence will pay off. If you're willing to do the real work and put in the time, you will succeed eventually. Even if you're not the greatest developer and have limited experience, with persistence you can land a good role. And once you do, it gets much easier from there.
4. master coding interview questions
Answering the technical questions well is of course a big part of getting the job offer. Follow this guide to to ace the technical part of your interview.
You won't crush your coding interview by just memorizing problems.
The goal is to understand things at a higher level.
You want to be able to take a problem you've never seen before, break it down, and analyze it. You get which patterns it follows. Then you know how to solve it. And you can explain your process to the interviewer step by step, with confidence.
That's how you solve coding questions effectively. That's how you impress at interviews.
A simple problem-solving process
Read the problem completely twice.
Solve the problem manually with 3 sets of sample data.
Optimize the manual steps.
Write the manual steps as comments or pseudo-code.
Replace the comments or pseudo-code with real code.
Optimize the real code.
Prepare for data structures & algorithms questions
It's one of the darling topics of interviewers and you'll hear a lot of questions about arrays in any coding interview, e.g. reversing an array, sorting the array, or searching elements on the array.
The key to solving array-based questions is having a good knowledge of array data structure as well as basic programming constructors such as loop, recursion, and fundamental operators.
Along with array and linked list data structures, a string is another popular topic on programming job interviews. I have never participated in a coding interview where no string-based question was asked.
A good thing about the string is that if you know the array, you can solve string-based questions easily, because strings are nothing but a character array.
So all the techniques you learn by solving array-based coding questions can be used to solve string programming questions as well.
A linked list is another common data structure that complements the array data structure.
Similar to the array, it is also a linear data structure and stores elements in a linear fashion.
However, unlike the array, it doesn’t store them in contiguous locations; instead, they are scattered everywhere in memory, which is connected to each other using nodes.
In order to solve linked list-based questions, a good knowledge of recursion is important, because a linked list is a recursive data structure.
Stack is a linear data structure similar to arrays and linked lists. The difference is that a stack doesn't allow random access of its elements. It can be conceptualized as a set of elements that can only be added or subtracted jointly and from one direction.
Queue is a linear data structure in which elements can be inserted only from one side of the list (called rear), and the elements can be deleted only from the other side (called the front).
Graphs are nonlinear data structures composed of multiple nodes and edges, or “vertices.” Graphs can represent networking architecture and can be deployed to solve practical problems. Broadly, they describe directed or undirected relationships.
Tree data structure is a data structure that allows you to store your data in a hierarchical fashion. Depending on how you store data, there are different types of trees, such as a binary tree, where each node has, at most, two child nodes.
Along with its close cousin binary search tree, it’s also one of the most popular tree data structures. Therefore, you will find a lot of questions based upon them, such as how to traverse them, count nodes, find depth, and check if they are balanced or not.
A key point to solving binary tree questions is a strong knowledge of theory, e.g. what is the size or depth of the binary tree, what is a leaf, and what is a node, as well as an understanding of the popular traversing algorithms, e.g. pre-, post-, and in-order traversal.
Maps in data structures are abstract data types that store key-value pairs in an array.
The key-value pair associates two pieces of data, and one piece, the ''key,'' can be used to look up the other piece, the ''value.''
A heap is a complete binary tree, and the binary tree is a tree in which the node can have utmost two children. Before knowing more about the heap data structure, we should know about the complete binary tree.
Algorithms
Depth-first search
Breadth-first seach
Binary search
sorting
dynamic programming
backtracking
divide&conquer
Depth-first search (DFS) searches graphs and trees by beginning at the root node and following each branch as far as it can before it backtracks. DFS may be used to detect cycles in a graph, to find a path, and to locate strongly connected components.
Breadth-first traversal (BFS) examines sibling nodes first and children nodes second. BFS may be used in peer-to-peer networking for finding the shortest path and even in web crawlers used in search engines.
Binary search is a search algorithm that finds the position of a target value within a sorted array. Binary search compares the target value to the middle element of the array. If they are not equal, the half in which the target cannot lie is eliminated and the search continues on the remaining half, again taking the middle element to compare to the target value, and repeating this until the target value is found. If the search ends with the remaining half being empty, the target is not in the array.
Sorting algorithm is an algorithm that puts elements of a list into an order.
A comparison operator is used to set the new arrangement of elements in the data structure.
Dynamic programming is an optimization technique used to solve problems where the same work is being repeated over and over.
A problem can be optimized using dynamic programming if it:
1. has an optimal substructure. 2. has overlapping subproblems.
If a problem meets those two criteria, then we know for a fact that it can be optimized using dynamic programming.
A backtracking algorithms tries to find the right output by considering every possible combination in search.
It does so one piece at a time, and deletes solutions that at any point don't meet the constraints.
A divide-and-conquer algorithm recursively breaks down a problem into two or more sub-problems of the same or related type, until these become simple enough to be solved directly. The solutions to the sub-problems are then combined to give a solution to the original problem.
How to practice coding questions
📆 Make your schedule
If you want to prepare to crush the coding interview:
Give yourself three months of focused study before you even apply for any jobs.
Set aside 2-3 hours per day and work on 2-3 coding questions during that time. By the end of three months, you'll have cracked around 200 problems.
You can then go into your interview with full confidence.
📝Practice solving questions out loud and on paper / whiteboard
In your practice, you want to get as close to the real thing as you can.
Get in the habit of mapping your solutions out visually, asking and answering questions, and talking through your process. This is what you'll be asked to do in your coding interview.
And if you've already been doing exactly that for several months: Guess what — you'll be able to execute it like clockwork.
📱Want a ready-made structure? Choose a coding interview prep platform
If you'd rather not deal with creating your own schedule, picking the best questions to practice, and looking up the best solutions, you might want to invest in a course or preparation platform.
Platforms like AlgoExpert guide you through your coding interview prepping process.
You get the most likely questions curated in an easy format, a built-in compiler to input your code right there, and solutions with step-by-step explanations.
Answer questions about your prior projects with examples
Understand the company so you can tailor your explanation why you want the gig, and why hiring you will add value
Ask interesting questions demonstrating your interest and passion
Prepare Behavioral Answers
Win over your interviewer with great answers to behavioral questions
Whenever you’re asked a typical behavioral question, you can structure a response using CAT, a framework invented by Saeed Gatson:
Circumstance.
Actions.
Takeaway.
Start off by talking about a circumstance you were in, then explain the actions you took to solve the issue, and finally describe your takeaway from the whole experience.
It helps to come prepared with a few circumstances in mind beforehand.
The “Tell Me About Yourself” Question
Use Saaed's NFL approach, which stands for Now, Former, Later.
Start off with what you're working on now.
Then talk about something you’ve done at a former job or project.
Finish up with goals you want to accomplish later at this given opportunity.
I've never not been asked this question in an interview. It’s pretty much guaranteed. You might as well ace it.
The Behavioral Traits They Look For
The right developer isn’t just someone who knows algorithms; it’s someone who communicates effectively and knows what it means to be part of a team.
What they look for in the behavioral interview can be summed up in The 4Ps:(credit: Saeed Gatson)
Problem-Solving Ability.
Passion for the Company.
Passion for Technology.
Personable Presentation.
In detail, they're looking for these traits:
Behavioral traits for coding interviews
Problem-solving
teamwork
manners
time management
body language
communication
handling the unknown
As an engineer, you need to be a problem solver. In the coding interview, you have plenty of time to demonstrate that. A common mistake is to try to start writing code as soon as possible.
You must resist this urge.
Make sure you take enough time to understand the problem completely before attempting to solve it. Another big mistake is trying to over-solve the solution on the first iteration.
Keep it simple, don’t try to get fancy.
New engineering roles are on bigger teams, so being able to work on a team and play for the team and be a team player, and not to be an individual contributor will make a big difference for you.
Convince the interviewer that you work well on a team by talking about past projects you did.
You will be interacting with many people inside the company -- even customers. That's why your interviewers will be screening you for social skills and awareness.
Aim to be courteous and empathetic (without being weak) during your interview, and you'll score highly on this front.
Showing you can work on your own time and get stuff done. Again, you can convey this by telling them your process for getting the coding projects in your portfolio finished.
Also, how you allocate time while solving the interview questions will give them hints as to your time management skills as well.
Set up, project your voice, open chest and be confident with everything you say. or at least try to be confident.
Aim for 'relaxed confidence' during your interview.
You're ready for what's coming. But you're not too attached to the outcome. That shows in how you carry yourself -- and a great personal presentation can win interviewers over.
Listen well. Be to the point in your answers. Don’t lie about your skills or projects!
Prepare questions for THEM. Adjust to your audience -- be perceptive and empathetic: Know who you’re talking to and how to tailor your conversation to them.
Show your passion for the company, for writing code, for finishing projects with your tone of voice.
Instead of freezing, you: Ask the right questions. Take a high-level view and see if you can chunk it down.
You'll be able to impress your interviewers if you can keep your cool under pressure, and stay optimistic and solutions-oriented, even if it's hard.
How to improve your soft skills before your coding interview
Social skills respond well to frequent practice.
Seek to put yourself into challenging social situations that require you to be charismatic:
Talk to new people. Try to win them over by being interesting and interested.
Look for any opportunity to speak publicly and take it.
Practice mock interviews with your friends, other programmers, and senior software engineers.
6. practice mock interviews
To be prepared to perform under pressure, simulate the real coding interview environment as much as you can. Mock interviews are the best way to do this.
Again, there's online platforms to help you do these mock interviews. There's two major options:
Pramp pairs you with a peer interviewing for the same types of jobs as you. You can use the platform for free to do your mock interview with peers.
Other interview platforms charge for their service, but instead of a peer mock interview, you get paired with real FAANG senior software engineers.
Do these many times before your coding interview, and you'll be prepared to breeze through it.
7. Prepare to negotiate
Don't forget to prepare yourself for a good outcome!
If you've followed all steps of the study roadmap so far -- then you've maximized your chances of receiving an offer, sooner rather than later.
And second, raises are based off of a percentage of your current salary. That is why it's critical to get a good salary when starting a new job and to negotiate as best as possible.
If you can raise your overall compensation by 10%—which is usually easily obtainable—you can possibly put yourself ahead by 2-3 years in terms of raises, which usually are around 2-3%, but might actually be 0%.
Don't be first to name a number
Don't say your current or past salary
Make counteroffers
Be careful moving down from what you want, always try to make them come up
All parts of the package are negotiable
Don't be afraid to take your time
That's a wrap on how to prepare for your coding interview!
For tips on how to act during your coding interview, check out my article with 17 coding interview tips.