Register to get access to free programming courses with interactive exercises

How to prepare for an interview Employment

Employment

Having knowledge and demonstrating this knowledge in a job interview are two completely different things. Even experienced professionals often feel confused at job interviews and cannot show their best qualities.

This problem is even more acute for newcomers because the first interview for a programming job is a huge source of stress. During a job interview, even basic questions can cause a candidate to stutter.

It is impossible to completely take away the anxiety, but preparing for a job interview can reduce it. In this lesson, we are going to discuss how to prepare for the interview in the best possible way.

Set your priorities

Before you start a job search, think about what your priorities are for your next role. There aren’t any right or wrong answers here; it’s about what will make you feel happy and fulfilled personally.

The priorities of different people can differ considerably from one another. To determine your personal preferences, try to ask yourself such questions and answer them:

  • Are you looking for a diverse group of co-workers?
  • Are you hoping for a lot of upward mobility or a move into management?
  • What about work-life balance? How big of a deal is this?
  • Should a high salary be prioritized? Are there more important considerations?

It is important to recollect these priorities before attending an interview. They will help you think through the qualifying questions you can ask the interviewer.

Recall your achievements

Prepare or refresh a list of your latest and greatest achievements, strengths and interesting projects. For example, you won some hackathon or passed some challenging training, and contributed to some open source projects. If you have managed to do so, you should add a few sentences about that in your resume.

To make achievements look advantageous, they need to be clearly presented and described. The STAR method will help with that. It is one of the best practices in an interview when discussing a specific case. It consists of four parts:

  • Situation: describe the situation that you were in when you needed to accomplish
  • Task: Describe the challenge, and what needs to be done to get a positive result
  • Action: Describe the steps you took and the contribution. Talk about yourself rather than the team
  • Result: Describe the result of your actions

Let’s take a look at this example. There is a case, described with the help of STAR framework:

  • Situation: I noticed that there is one vulnerability in one of the open-source projects I used
  • Task: After a quick investigation, I realized that this was happening in some edge cases that are not covered by the current source code
  • Action: I prepared a pull request for this repository and sent it to the team for review
  • Result: The team merged my pull request, and then this issue was fixed. I received a lot of positive feedback from the open source community

Refresh your knowledge

The most common mistake at a job interview is that people come in unprepared. Let's imagine a candidate who put a bunch of different languages and frameworks on his resume:

  • He had been working with some technologies a long time ago. Since then, he has forgotten a lot and hasn't kept up with the updates
  • He had been working with other frameworks recently, but on a specific project with a limited set of technologies

Such a candidate presented a resume with a huge stack but didn’t refresh his knowledge on that. It’s risky because the interviewer can ask a question related to these technologies, and the candidate can't answer it.

To prevent this, take your time in the preparation and familiarize yourself with the latest updates of your language or framework. It's also important to refresh your fundamental programming knowledge, which we'll talk about in more detail below.

Data Structures

Most of the candidates are good at using programming for their daily-life research problems. But when it comes to a coding interview, one needs to brush up on the basics of different data structures. It’s crucial because most of the problems revolve around selecting the right data structure for the given problem.

Here is a list of essential data structures important for a coding interview:

  • Strings
  • Array
  • Linked List
  • Queue
  • Stack
  • Tree
  • Trie
  • Hash Table
  • Heap
  • Graph

To refresh your knowledge of these topics, you can take a look at some top coding interview questions on popular resources like LeetCode or HackerRank.

Algorithms

Algorithms are a big part of coding interviews. Whether you’re interviewing at Microsoft or Amazon, you’ll surely be asked some questions to test your knowledge of algorithms and their optimization.

Let's quickly take a look at some common algorithms that you’ll need to know for a software development interview:

  • Big O
  • Brute Force
  • Greedy algorithms
  • Sorting and Searching
  • Dynamic programming
  • Design
  • Math
  • BST
  • DFS
  • Backtracking

So check out all these algorithms and common tasks on them. It would be great if you solve ~ 10-15 problems for each of these algorithms.

System Design

If you are a mid or senior-level candidate, you may expect system design questions as part of your technical interview. The objective of system design interviews is to evaluate a candidate's skill at designing real-world software systems involving multiple components.

Understanding and mastering system design questions are crucial in practice before software engineering interviews. If you’re not properly prepared for these questions and concepts in your interview, you'll miss out on the opportunities of expanding your career with a better-paying position, or even with a great company.

Pass the interview

During the preparation phase, it is important to think about how you will present yourself to the recruiter. Let's consider a few tips that help show you more positively:

  • Explain your solutions. Please make sure to explain the thought process of why you are approaching the problems in this way. Listen actively. Demonstrate listening skills and ask clarification questions if needed. By listening, you can get a better sense of what your interviewers are interested in.
  • Show, don't tell. When it comes to answering behavioral questions in coding interviews, the difference between a good answer and a great answer comes down to showing rather than telling. For example, if you have contributed to open source projects in some way, show the interviewer that project and show your impact (pull requests, source code, demos, etc.).
  • Work with the interviewer like you're in the same team. The interviewer wants to know what it feels like to work with you, so make the interview feel collaborative.
  • Think out loud. For example, "Let's try doing it this way — not sure yet if it'll work." If you're stuck, just say what you're thinking. Say what might work. If you are talking about your solution, your approach or an algorithm, then the interviewer may ask leading questions to guide you to the correct or better solution. If you just keep silent, the interviewer will not be able to understand at what stage you are stuck and will not be able to help you with leading questions. ## Negotiate the offer

For most people, the reason they're finding a new job is to increase their salary, and salary negotiation is the last stretch in achieving that goal.

In most cases, there's room for negotiation on your offer and recruiters expect candidates to negotiate. The initial offer that you are given is never the best package that the company can offer. In most cases, you could always negotiate for more money, and some aspects of your salary are easier to negotiate than others.

With multiple offers in hand, you will be able to negotiate a better offer from every company.

Prepare to be rejected

Rejections are going to happen. That is expected, and it’s okay! Do not take it personally. Try not to over-analyze rejections. Take whatever feedback you get and decide whether you can use it to perform better in your next interview.

At times, the job hunt can be rough on your mental health. Make sure to take care of both your physical and mental self. Lean on friends, family, or mentors for support. Not every company or role will be the right fit for you, and that’s okay.

Conclusion

To summarize new knowledge from the lesson, let's revisit the most important insights for preparation:

  • Set your priorities: what you want to change or add to your new work or project
  • Refresh a list of your latest and greatest achievements, strengths and interesting projects
  • Refresh your knowledge of data structures, algorithms and system design
  • Check out interview tips and suggestions
  • Prepare to negotiate an offer
  • Rejections are going to happen. Do not take it personally!

Additional resources

  1. Cracking the Coding Interview: 189 Programming Questions and Solutions
  2. Grokking Algorithms
  3. Designing Data-Intensive Applications
  4. Leetcode. Top Interview Questions
  5. HackerRank

Are there any more questions? Ask them in the Discussion section.

The Hexlet support team or other students will answer you.

Sign up

Programming courses for beginners and experienced developers. Start training for free

  • 130 courses, 2000+ hours of theory
  • 1000 practical tasks in a browser
  • 360 000 students
By sending this form, you agree to our Personal Policy and Service Conditions

Our graduates work in companies:

Bookmate
Health Samurai
Dualboot
ABBYY
Suggested learning programs
profession
Development of front-end components for web applications
10 months
from scratch
Start at any time
profession
Layout with the latest CSS standards
5 months
from scratch
under development
Start at any time

Use Hexlet to the fullest extent!

  • Ask questions about the lesson
  • Test your knowledge in quizzes
  • Practice in your browser
  • Track your progress

Sign up or sign in

By sending this form, you agree to our Personal Policy and Service Conditions
Toto Image

Ask questions if you want to discuss a theory or an exercise. Hexlet Support Team and experienced community members can help find answers and solve a problem.