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
- Cracking the Coding Interview: 189 Programming Questions and Solutions
- Grokking Algorithms
- Designing Data-Intensive Applications
- Leetcode. Top Interview Questions
- HackerRank
<!DOCTYPE html>
<html class="h-100" data-bs-theme="light" data-mantine-color-scheme="light" lang="en" prefix="og: https://ogp.me/ns#">
<head>
<meta content="width=device-width, initial-scale=1.0" name="viewport">
<meta content="IE=Edge" http-equiv="X-UA-Compatible">
<link crossorigin="true" href="https://cdn.hexlet.io" rel="preconnect">
<meta content="aa2vrdtq64dub8knuf83lwywit311w" name="facebook-domain-verification">
<link href="/favicon.ico" rel="icon" sizes="any">
<link href="/favicon.svg" rel="icon" type="image/svg+xml">
<link href="/apple-touch-icon.png" rel="apple-touch-icon">
<link href="/manifest.webmanifest" rel="manifest">
<script>
//<![CDATA[
window.gon={};gon.ym_counter="25559621";gon.is_bot=true;gon.applications={};gon.current_user={"id":null,"last_viewed_notification_id":null,"email":null,"state":null,"first_name":"","last_name":"","current_program":null,"current_team":null,"full_name":"","guest":true,"can_use_paid_features":false,"is_hexlet_employee":false,"sanitized_phone_number":"","can_subscribe":true,"can_renew_education":false};gon.token="lBlwYCvucGXfh8SL22-OlJPZj0aaDLYxEo-MdBlTKADH3x1WCoVLhbiNO2Np8blVn3MBHVYSrD2wCkZnVI_32w";gon.locale="en";gon.language="en";gon.theme="light";gon.rails_env="production";gon.mobile=false;gon.google={"analytics_key":"UA-1360700-51","optimize_key":"GTM-5QDVFPF"};gon.captcha={"google_v3_site_key":"6LenGbgZAAAAAM7HbrDbn5JlizCSzPcS767c9vaY","yandex_site_key":"ysc1_Vyob5ZPPUdPBsu0ykt8bVFdzsfpoVjQChLGl2b4g19647a89","verification_failed":null};gon.social_signin=false;gon.typoreporter_google_form_id="1FAIpQLScNwxM8rjQRRWqW5G6dn6-0NvLUblFemy7EvA9VsJ7Ov5wXqA";
//]]>
</script>
<meta charset="utf-8">
<title>How to prepare for an interview | Employment</title>
<meta name="description" content="How to prepare for an interview / Employment: What should you do before an interview to do well?">
<link rel="canonical" href="https://hexlet.io/courses/employment/lessons/how-to-prepare-for-interview/theory_unit">
<meta name="robots" content="noarchive">
<meta property="og:title" content="How to prepare for an interview">
<meta property="og:title" content="Employment">
<meta property="og:description" content="How to prepare for an interview / Employment: What should you do before an interview to do well?">
<meta property="og:url" content="https://hexlet.io/courses/employment/lessons/how-to-prepare-for-interview/theory_unit">
<meta name="csrf-param" content="authenticity_token" />
<meta name="csrf-token" content="3mFi30hUuU52dRZtCthoJh2mFVgk0zq0ta7Eop3rnaSNpw_paT-CrhF_6YW4Rl_nEQybA-jNILgXKw6x0DdCfw" />
<script src="/vite/assets/inertia-CgrHVkgd.js" crossorigin="anonymous" type="module"></script><link rel="modulepreload" href="/vite/assets/chunk-DsPFFUou.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/preload-helper-C1cfMHAs.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/init-0bhwJkNI.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/ahoy-BXKrsWjp.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/analytics-Du9ljYPK.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/ErrorFallbackBlock-V3hfk_CP.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/RootLayout-CUZzAr0T.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Surface-DbDKujDz.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/gon-B-jV56Ol.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/mantine-DOJkeu70.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/utils-ClTF9s_T.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/routes-mvvEXZQ8.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/index.esm-DATLpQdV.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Modal-BhY0AP_c.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Textarea-P1s4q94S.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/exports-BsSGGK2I.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/dayjs.min-Bfba02I7.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/client-CYyKzrjQ.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/react-dom-SJZekO2j.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/useTranslation-bo78L81P.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/compiler-runtime-BhqaZ6vG.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/jsx-runtime-DlXMvSuQ.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/react-CFtMU8gd.js" as="script" crossorigin="anonymous">
<link rel="stylesheet" href="/vite/assets/application-BhDYOUva.css" />
<script src="/vite/assets/application-ZyVHkzwO.js" crossorigin="anonymous" type="module"></script><link rel="modulepreload" href="/vite/assets/chunk-DsPFFUou.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/autocomplete-BokUl44d.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/routes-mvvEXZQ8.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/createPopper-gQnwoPhY.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/js.cookie-CB1F2-VC.js" as="script" crossorigin="anonymous"><link rel="stylesheet" href="/vite/assets/application-BhDYOUva.css" media="screen" />
<!-- Google Tag Manager - deferred -->
<script>
// dataLayer stub сразу — пуши работают до загрузки скрипта
window.dataLayer = window.dataLayer || [];
// Сам скрипт — отложенно после load
window.addEventListener('load', function() {
setTimeout(function() {
dataLayer.push({'gtm.start': new Date().getTime(), event: 'gtm.js'});
var j = document.createElement('script');
j.async = true;
j.src = 'https://www.googletagmanager.com/gtm.js?id=GTM-WK88TH';
document.head.appendChild(j);
}, 1500);
});
</script>
<!-- End Google Tag Manager -->
</head>
<body>
<!-- Google Tag Manager (noscript) -->
<noscript>
<iframe height="0" src="https://www.googletagmanager.com/ns.html?id=GTM-WK88TH" style="display:none;visibility:hidden" width="0"></iframe>
</noscript>
<!-- End Google Tag Manager (noscript) -->
<header class="sticky-top bg-body">
<nav class="navbar navbar-expand-lg">
<div class="container-xxl">
<a class="navbar-brand" href="/"><img alt="Hexlet logo" height="24" src="https://hexlet.io/vite/assets/logo_en_light-FS-yL6XB.svg" width="96">
</a><button aria-controls="collapsable" aria-expanded="false" aria-label="Menu" class="navbar-toggler border-0 mb-0 mt-1" data-bs-target="#collapsable" data-bs-toggle="collapse">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="collapsable">
<ul class="navbar-nav mb-lg-0 mt-lg-1">
<li class="nav-item dropdown">
<button aria-haspopup class="btn nav-link" data-bs-toggle="dropdown" type="button">
All courses
<span class="bi bi-chevron-down align-middle ms-1"></span>
</button>
<ul class="dropdown-menu">
<li>
<a class="dropdown-item d-flex py-2" href="/courses"><div class="fw-bold me-auto">Everything</div>
<div class="text-muted">8</div>
</a></li>
<li>
<hr class="dropdown-divider">
</li>
<li class="dropdown-item">
<b>Popular categories</b>
</li>
<li>
<a class="dropdown-item py-2" href="/courses_backend-development">Backend Development
</a></li>
<li>
<a class="dropdown-item py-2" href="/courses_devops">DevOps
</a></li>
<li>
<a class="dropdown-item py-2" href="/courses_frontend-development">Frontend Development
</a></li>
<li>
<a class="dropdown-item py-2" href="/courses_testing">Testing
</a></li>
<li>
<hr class="dropdown-divider">
</li>
<li class="dropdown-item">
<b>Popular courses</b>
</li>
<li>
<a class="dropdown-item py-2" href="/programs/frontend">Frontend Developer
</a></li>
</ul>
</li>
<li class="nav-item dropdown">
<button aria-haspopup class="btn nav-link" data-bs-toggle="dropdown" type="button">
About Hexlet
<span class="bi bi-chevron-down align-middle"></span>
</button>
<ul class="dropdown-menu bg-body">
<li>
<a class="dropdown-item py-2" href="/pages/about">About company
</a></li>
<li>
<a class="dropdown-item py-2" href="/blog">Blog
</a></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://special.hexlet.io/hse-research" role="button"><span class="translation_missing" title="translation missing: en.layouts.header.results">Results</span>
</span></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://career.hexlet.io" role="button"><span class="translation_missing" title="translation missing: en.layouts.header.career">Career</span>
</span></li>
<li>
<a class="dropdown-item py-2" href="/testimonials">Testimonials
</a></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://t.me/hexlet_help_bot" role="button"><span class="translation_missing" title="translation missing: en.layouts.header.support">Support</span>
</span></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://special.hexlet.io/referal-program/?promo_creative=priglasite-druzei&promo_name=referal-program&promo_position=promo_position&promo_start=010724&promo_type=link" role="button"><span class="translation_missing" title="translation missing: en.layouts.header.referal_program">Referal Program</span>
</span></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://special.hexlet.io/certificate" role="button"><span class="translation_missing" title="translation missing: en.layouts.header.certificates">Certificates</span>
</span></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://hh.ru/employer/4307094" role="button"><span class="translation_missing" title="translation missing: en.layouts.header.vacancies">Vacancies</span>
</span></li>
<li>
<span class="dropdown-item d-flex external-link" rel="noopener noreferrer nofollow" data-href="https://b2b.hexlet.io" data-target="_blank" role="button"><span class="translation_missing" title="translation missing: en.layouts.header.teams">Teams</span>
</span></li>
<li>
<span class="dropdown-item d-flex external-link" rel="noopener noreferrer nofollow" data-href="https://hexly.ru/" data-target="_blank" role="button"><span class="translation_missing" title="translation missing: en.layouts.header.college">College</span>
</span></li>
<li>
<span class="dropdown-item d-flex external-link" rel="noopener noreferrer nofollow" data-href="https://hexlyschool.ru/" data-target="_blank" role="button"><span class="translation_missing" title="translation missing: en.layouts.header.private_school">Private School</span>
</span></li>
</ul>
</li>
</ul>
<ul class="navbar-nav flex-lg-row align-items-lg-center gap-2 ms-auto">
<li>
<a class="nav-link" aria-label="Switch theme" href="/theme/switch?new_theme=dark"><span aria-hidden="true" class="bi bi-moon"></span>
</a></li>
<li>
<span data-target="_self" class="nav-link external-link" data-href="/u/new" role="button"><span>Sign up</span>
</span></li>
<li>
<span data-target="_self" class="nav-link external-link" data-href="https://hexlet.io/session/new" role="button"><span>Sign in</span>
</span></li>
</ul>
</div>
</div>
</nav>
</header>
<div class="x-container-xxxl">
</div>
<main class="mb-6 min-vh-100 h-100">
<link rel="preload" as="image" href="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MTIzNTMsInB1ciI6ImJsb2JfaWQifX0=--f1948fb0c5a45a6d76671a1a32b8cf6f0b53ee57/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Software%20code%20testing-cuate.png"/><link rel="preload" as="image" href="/vite/assets/development-BVihs_d5.png"/><div id="app" data-page="{"component":"web/courses/lessons/theory_unit","props":{"errors":{},"locale":"en","language":"en","httpsHost":"https://hexlet.io","host":"hexlet.io","colorScheme":"light","auth":{"user":{"id":null,"last_viewed_notification_id":null,"email":null,"state":null,"first_name":"","last_name":"","current_program":null,"current_team":null,"full_name":"","guest":true,"can_use_paid_features":false,"is_hexlet_employee":false,"sanitized_phone_number":"","can_subscribe":true,"can_renew_education":false}},"cloudflareTurnstileSiteKey":"0x4AAAAAAA15KmeFXzd2H0Xo","vkIdClientId":"51586979","yandexIdClientId":null,"formAuthToken":"Sc3D-p-msRaAeS46XZm2cPsTViXh-AdxaEGolI_EXrkaC67Mvs2K9udz0dLvB4Gx97nYfi3mHX3KxGKHwhiBYg","topics":[],"lesson":{"exercise":null,"units":[{"id":6733,"name":"theory","url":"/courses/employment/lessons/how-to-prepare-for-interview/theory_unit"}],"links":[],"ordered_units":[{"id":6733,"name":"theory","url":"/courses/employment/lessons/how-to-prepare-for-interview/theory_unit"}],"id":2943,"slug":"how-to-prepare-for-interview","state":"approved","name":"How to prepare for an interview","course_order":160,"goal":"What should you do before an interview to do well?","self_study":null,"theory_video_provider":null,"theory_video_uid":null,"theory":"\n\nHaving 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.\n\nThis 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.\n\nIt 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.\n\n## Set your priorities\n\nBefore 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.\n\nThe priorities of different people can differ considerably from one another. To determine your personal preferences, try to ask yourself such questions and answer them:\n\n* Are you looking for a diverse group of co-workers?\n* Are you hoping for a lot of upward mobility or a move into management?\n* What about work-life balance? How big of a deal is this?\n* Should a high salary be prioritized? Are there more important considerations?\n\nIt is important to recollect these priorities before attending an interview. They will help you think through the qualifying questions you can ask the interviewer.\n## Recall your achievements\n\nPrepare 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.\n\nTo 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:\n\n* **Situation**: describe the situation that you were in when you needed to accomplish\n* **Task**: Describe the challenge, and what needs to be done to get a positive result\n* **Action**: Describe the steps you took and the contribution. Talk about yourself rather than the team\n* **Result**: Describe the result of your actions\n\nLet’s take a look at this example. There is a case, described with the help of STAR framework:\n\n* **Situation**: I noticed that there is one vulnerability in one of the open-source projects I used\n* **Task**: After a quick investigation, I realized that this was happening in some edge cases that are not covered by the current source code\n* **Action**: I prepared a pull request for this repository and sent it to the team for review\n* **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\n\n## Refresh your knowledge\n\nThe 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:\n\n* 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\n* He had been working with other frameworks recently, but on a specific project with a limited set of technologies\n\nSuch 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.\n\nTo 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.\n\n### Data Structures\n\nMost 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.\n\nHere is a list of essential data structures important for a coding interview:\n\n* Strings\n* Array\n* Linked List\n* Queue\n* Stack\n* Tree\n* Trie\n* Hash Table\n* Heap\n* Graph\n\nTo refresh your knowledge of these topics, you can take a look at some top coding interview questions on popular resources like LeetCode or HackerRank.\n\n### Algorithms\n\nAlgorithms 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.\n\nLet's quickly take a look at some common algorithms that you’ll need to know for a software development interview:\n\n* Big O\n* Brute Force\n* Greedy algorithms\n* Sorting and Searching\n* Dynamic programming\n* Design\n* Math\n* BST\n* DFS\n* Backtracking\n\nSo 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.\n\n### System Design\n\nIf 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.\n\nUnderstanding 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.\n\n## Pass the interview\n\nDuring 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:\n\n* **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.\n* **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.).\n* **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.\n* **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.\n## Negotiate the offer\n\nFor 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.\n\nIn 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.\n\nWith multiple offers in hand, you will be able to negotiate a better offer from every company.\n## Prepare to be rejected\n\nRejections 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.\n\nAt 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.\n## Conclusion\n\nTo summarize new knowledge from the lesson, let's revisit the most important insights for preparation:\n\n* Set your priorities: what you want to change or add to your new work or project\n* Refresh a list of your latest and greatest achievements, strengths and interesting projects\n* Refresh your knowledge of data structures, algorithms and system design\n* Check out interview tips and suggestions\n* Prepare to negotiate an offer\n* Rejections are going to happen. Do not take it personally!\n\n## Additional resources\n1. [Cracking the Coding Interview: 189 Programming Questions and Solutions](https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/0984782850)\n2. [Grokking Algorithms](https://www.amazon.com/Grokking-Algorithms-illustrated-programmers-curious/dp/1617292230)\n3. [Designing Data-Intensive Applications](https://www.amazon.com/Designing-Data-Intensive-Applications-Reliable-Maintainable/dp/1449373321/ref=pd_lpo_2?pd_rd_i=1449373321&psc=1)\n4. [Leetcode. Top Interview Questions](https://leetcode.com/explore/interview/card/top-interview-questions-easy/)\n5. [HackerRank](https://www.hackerrank.com/)\n"},"lessonMember":null,"courseMember":null,"course":{"start_lesson":{"exercise":null,"units":[{"id":6731,"name":"theory","url":"/courses/employment/lessons/how-to-find-vacancies/theory_unit"}],"links":[],"ordered_units":[{"id":6731,"name":"theory","url":"/courses/employment/lessons/how-to-find-vacancies/theory_unit"}],"id":2941,"slug":"how-to-find-vacancies","state":"approved","name":"Job search — how and when","course_order":140,"goal":"Learning about six job search staples","self_study":null,"theory_video_provider":null,"theory_video_uid":null,"theory":"\n\nGetting or changing a job is a full-time job itself in the US. You’ll need to check the web posts and open positions 2-3 times a week and apply for relevant positions. Find and engage with responsible recruiters and be ready for the interviews and almost the same questions from all the companies/recruiters/hiring managers.\n\nThey say you need to apply/send up to 50 resumes daily to be invited to two or three interviews. But let’s stay sane and find a job smarter, not harder.\n\nIn this lesson we will see six observations on the US IT job market:\n\n1. What type of job you are looking for\n2. Where (websites, east/west coast)\n3. With whom (agencies, referrals, on your own)\n4. When (seasons)\n5. Why (motivation)\n6. What to say/not to say at the interview\n\n## Types of jobs\n\nFirst, you need to choose the type of employment that will suit you best. There are three types of employment you can pursue:\n\n* Full-time — 40 hours a week, 4 weeks a month with benefits. Benefits usually include a 401k pension plan, medical insurance, vacations and so on\n* Contract — the same working hours as with a full-time job but no benefits\n* Part-time — less than 40h a week, and the hours are agreed upon in each case. Part-timers receive all the benefits as full-time employees\n\nDepending on the type you choose the job search strategy.\n\nPeople usually tend to choose a full-time job because of the benefits. You don’t need to think about vacations and insurance, everything is already organized by an HR specialist. Also, there’s a feeling that it’s more stable. On the other hand, a contractor's job has higher salary rates in comparison with a full-time job. The salary's attracting, but you don't forget that have to compensate for the absence of a 401k program, insurance and vacations by yourself.\n\nWith any type of employment, You can be fired unexpectedly. If you are a full-time employee you will receive salary compensation equal to several months of work, depending on the company it can be from 2 to 6 months. Most companies have a two-week notice, so you have some time to find a new job without a huge gap between the employment. If you are a contractor, your leave will be effected immediately.\n\nBut let’s talk about the full-time job more closely. It’s a more common scenario in the US.\n\n## Job search platforms\n\nWhen you have decided on the type of employment, you have to choose the company according to your other preferences: tech stack, products, projects, company values, mission, etc. Then you find the role which you pursue and apply.\n\nTo find the right company, you can go to these sources:\n\n- LinkedIn - a professional network, is widely used on the East and West coasts\n- Dice.com - a platform, used on the west coast (for example, in Washington or California)\n- Indeed.com - a platform with job descriptions from tech companies\n\nAlso, you can do your search of the top companies in the US. You can google search for \"type 50 top IT companies in the US\" and find listings similar to these:\n\n* [Top 50 IT companies in USA](https://www.techasoft.com/post/top-50-it-companies-in-usa)\n* [Top 50 Companies for software engineers that want to move to the US](https://outtalent.com/us50/index.html)\n* [The Top 100 Software Companies of 2022](https://www.thesoftwarereport.com/the-top-100-software-companies-of-2022/)\n\n## Ways to make the search faster\n\nThere are lots of approaches in a job search but I’d like to talk about the fastest ones.\n\n### Friends\n\nIn this scenario, your friend or former co-worker refers you to the company you want to work for.\n\nPros:\n\n* Your application will be considered faster. The majority of companies encourage employees to recommend the best talent and put such candidates on a priority list if their experience fits the open role requirements\n* Your friend or ex-colleague may receive a bonus\n\nCons are none known.\n\n### Agencies\n\nYou cooperate with the agency which proposes you to different companies. They cost nothing as the employer will pay them for their service in case they hire you.\n\nPros:\n\n* It saves you lots of time\n* You get access to really interesting companies\n\nCons:\n\n* A company can reject your CV but promise to come back to you in six months. In that case, they will pay the fee to the agency for half a year. It’s pricey, somewhere between 15-25% of the annual salary\n\nA list of agencies can be found [here](https://resumespice.com/list-of-top-engineering-staffing-agencies).\n\n### Recruiters\n\nYou apply for the role by yourself. Then in a couple of days, you find a recruiter of that company on LinkedIn, connect with them and write a short introduction message attaching your CV and asking about your application status. Also, you can ask for the name of the responsible recruiter who you can contact. If there’s no reply on the third day, don’t shy away and send a follow-up message to the same recruiter.\n\nIn case this recruiter didn’t respond after your follow-up message, you can always find another recruiter on the website and connect with them.\nIt’s a normal practice to engage with recruiters on LinkedIn this way. But don’t forget the magic words - please, and thank you work everywhere.\n\nAn observation: If you search for a new job constantly, you will be in different stages with different companies. It is less stressful. But it also means that with company A you will have your first technical interview while with company B you are at the last Manager interview. And when you receive a job offer from B you won’t be able to compare the compensation part from A as most of the job offers have an expiration date.\n\nAt the same time if you look for a job purposefully — it’s more stressful and usually takes 2-3 months minimum.\n\n### Other ways\n\nIf you are looking for an internship or entry-level role, virtual job fairs are a good option:\n\n* [New York Tech Hiring Events](https://www.eventbrite.com/e/new-york-tech-career-fair-exclusive-tech-hiring-event-tickets-146584912419)\n* [Job fairs Tips and Tricks](https://www.builtinnyc.com/guides/nyc-job-fairs-tips-tech-startup-job-seekers)\n\nAlso, you can try [Handshake](https://joinhandshake.com). They are partnered with 90% of the nation’s colleges, universities, trade schools, and community colleges to power their career services department. Good for looking for a first internship or entry-level position.\n\nStartups also like to hire junior specialists. And taking into account that you can work remotely from any part of the USA, the variety of companies is pretty wide for you these days.\n\nWhen you choose the company/companies you’d like to work for, check their Career or Job field. If the company has internship programs it will be there. Please, also check entry-level or Associate roles in the company.\nDon’t be upset if you didn’t find anything. Check their websites in a month or two. Keep an eye on it.\n\n## Seasons\n\n\"When\" is also an important topic. Your strategy can fail or slow down during certain periods of the year.\n\nWe’d say August is one of the slowest months as the majority of Americans go on vacations with family and friends. Nobody starts new projects, which means no new roles. Existing roles and candidates are processed slowly and the Project Managers and other stakeholders including responsible recruiters are also on vacation. This means the interview process will be stretched out to several weeks.\n\nSeptember is known as the financial month of the year - it’s the time when most companies plan their budgets and projects for the next year. This means they activate hiring processes for current projects and future ones.\nAnd “winter holidays mood” starts with Thanksgiving and ends up in the mid of January.\n\nThis doesn’t mean you shouldn’t look for a job and apply for open positions during these times. It just means that there will be fewer responses in comparison with other months.\n\n## Motivation\n\nStrong motivation will help you present yourself at the interview with the recruiter or hiring manager. This is the part you should fill in on your own - we can only advise you to answer the questions in detail:\n\n* Why do I want to work in this company?\n* In what area do I want to develop my career?\n* What motivates me to work\n\nThere is a good chance that human resources will ask you these questions, so it is worth preparing for them.\n\n## Interview\n\nThere are different hiring processes in different companies. We’ll mention three steps or interviews which will happen to you:\n\n1. General interview with the recruiter or hiring manager\n2. Technical interview where your technical skills will be checked\n3. Manager interview — can also be technical but usually they check soft skills and if you fit the team and company\n\nIf you are at the first round with the recruiter, they ask questions about your motivation — what you are up to these days and why. The most common answers are:\n\n* Just finished the course on *a topic* and looking for a real project to utilize my skills\n* Looking for growth opportunities and new challenges\n* Contract comes to an end (if you already have experience)\n* Looking for a stable company\n* Looking for a company to build meaningful products and grow professionally\n\nThere might be questions about your experience (if applicable) or your strongest skills. Usually, it means technical skills: like Java, frameworks, AWS, Azure, GCP etc. In the end, you can add something nice about yourself like “and I’m also a team player” if it’s true. Or that you are an excellent individual contributor. Tell them what you can bring to the company.\n\nThere are also questions about your:\n\n* Notice period (when you can join the company)\n* Location\n* Salary expectations\n\nDon’t be afraid to name the salary as a range:\n\n* From a comfortable minimum (to cover your monthly payments and needs)\n* To an attractive optimum\n\nAfter you name your range you can ask about the position rate and if you fit the role’s range. If you ask about the range before you name yours it won’t look nice. In any case, all the salaries are individual and depend on the experience and expertise you have and your presentation skills.\n\nAt this first interview ask about details of the role and responsibilities, the next steps, how engineers are growing in the company, and why your interviewer works in that company. Thus you get the inside information on the company and make up your mind whether you want to work for it or it’s better to pass.\n\nQuestions on how engineers are growing in the company, and why interviewers work in that company are relevant and good for any type of interview.\n\nAvoid asking questions about the benefits at technical or manager or project interviews. And my best advice on how to prepare for the interview: have a good rest the night before and be in your best mood.\n\n### Mistakes\n\nLet's discuss the most common ones:\n\n* Applying for senior roles, having only junior skills\n* Googling at the interview, unless it's allowed by the interviewer. You can always ask the interviewer about “googling skills” and try to turn it into a joke\n* Being unprepared at a job fair. Always have your resume prepared and share it with the recruiters and hiring managers\n\n## Conclusion\n\nNow you know getting or changing a job is a full-time job itself indeed. Let the energy and enthusiasm stay with you.\n\nAnd use your common sense. Build a brand of yourself. Stay yourself. In 15-20 years you become a seasoned professional and no matter in which company you work everyone will know — you can do anything with this technology and it’s fun to work with you on the same team.\n"},"id":291,"slug":"employment","challenges_count":0,"name":"Employment","allow_indexing":true,"state":"approved","course_state":"not_finished","pricing_type":"free","description":"For an inexperienced developer, finding a job is often a daunting task. Sometimes, difficulties arise due to having poorly written résumé, improper attitude to job positions, and other factors. This course provides guidelines and job-hunting advice based on the real world on how to build resumes and portfolios, so that Hexlet students and graduates can improve their odds of finding employment.","kind":"basic","updated_at":"2026-01-20T11:46:34.706Z","language":"other","duration_cache":4500,"skills":["How to create an amazing resume to attract employers","How to evaluate vacancies and respond to them","How to find interesting offers with help from the community"],"keywords":[],"lessons_count":5,"cover":"https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NzU5NywicHVyIjoiYmxvYl9pZCJ9fQ==--013ca67b14fa84ae467e9c50975f177f61f11ac7/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJwbmciLCJyZXNpemVfdG9fZmlsbCI6WzYwMCw0MDBdfSwicHVyIjoidmFyaWF0aW9uIn19--6067466c2912ca31a17eddee04b8cf2a38c6ad17/image.png"},"recommendedLandings":[{"stack":{"id":15,"slug":"frontend","title":"Frontend Developer","audience":"for_beginners","start_type":"anytime","pricing_model":"purchase","priority":"low","kind":"profession","state":"published","stack_state":"finished","order":1,"duration_in_months":10},"id":22,"slug":"frontend","title":"Frontend Developer","subtitle":"","subtitle_for_lists":"","locale":"en","current":true,"duration_in_months_text":"10 months","stack_slug":"frontend","price_text":"from $49","duration_text":"10 months","cover_list_variant":"https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MTIzNTMsInB1ciI6ImJsb2JfaWQifX0=--f1948fb0c5a45a6d76671a1a32b8cf6f0b53ee57/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Software%20code%20testing-cuate.png"}],"lessonMemberUnit":null,"accessToLearnUnitExists":true,"accessToCourseExists":true},"url":"/courses/employment/lessons/how-to-prepare-for-interview/theory_unit","version":"1656487db0d1dd5f33634fe1070e57e55135cbeb","encryptHistory":false,"clearHistory":false}"><style data-mantine-styles="true">:root, :host{--mantine-font-family: Arial, sans-serif;--mantine-font-family-headings: Arial, sans-serif;--mantine-heading-font-weight: normal;--mantine-radius-default: 0rem;--mantine-primary-color-filled: var(--mantine-color-indigo-filled);--mantine-primary-color-filled-hover: var(--mantine-color-indigo-filled-hover);--mantine-primary-color-light: var(--mantine-color-indigo-light);--mantine-primary-color-light-hover: var(--mantine-color-indigo-light-hover);--mantine-primary-color-light-color: var(--mantine-color-indigo-light-color);--mantine-spacing-xxl: calc(4rem * var(--mantine-scale));--mantine-font-size-xs: 12px;--mantine-font-size-sm: 14px;--mantine-font-size-md: 16px;--mantine-font-size-lg: clamp(16.0000px, calc(15.2727px + 0.2273vw), 18.0000px);--mantine-font-size-xl: clamp(16.0000px, calc(14.5455px + 0.4545vw), 20.0000px);--mantine-font-size-display-3: clamp(32.0000px, calc(26.1818px + 1.8182vw), 48.0000px);--mantine-font-size-display-2: clamp(36.0000px, calc(25.8182px + 3.1818vw), 64.0000px);--mantine-font-size-display-1: clamp(40.0000px, calc(25.4545px + 4.5455vw), 80.0000px);--mantine-font-size-h1: clamp(28.0000px, calc(23.6364px + 1.3636vw), 40.0000px);--mantine-font-size-h2: clamp(24.0000px, calc(21.0909px + 0.9091vw), 32.0000px);--mantine-font-size-h3: clamp(20.0000px, calc(17.0909px + 0.9091vw), 28.0000px);--mantine-font-size-h4: clamp(16.0000px, calc(13.0909px + 0.9091vw), 24.0000px);--mantine-font-size-h5: clamp(16.0000px, calc(14.5455px + 0.4545vw), 20.0000px);--mantine-font-size-h6: 1rem;--mantine-primary-color-0: var(--mantine-color-indigo-0);--mantine-primary-color-1: var(--mantine-color-indigo-1);--mantine-primary-color-2: var(--mantine-color-indigo-2);--mantine-primary-color-3: var(--mantine-color-indigo-3);--mantine-primary-color-4: var(--mantine-color-indigo-4);--mantine-primary-color-5: var(--mantine-color-indigo-5);--mantine-primary-color-6: var(--mantine-color-indigo-6);--mantine-primary-color-7: var(--mantine-color-indigo-7);--mantine-primary-color-8: var(--mantine-color-indigo-8);--mantine-primary-color-9: var(--mantine-color-indigo-9);--mantine-color-red-0: #ffeaea;--mantine-color-red-1: #fed4d4;--mantine-color-red-2: #f4a7a8;--mantine-color-red-3: #ec7878;--mantine-color-red-4: #e55050;--mantine-color-red-5: #e03131;--mantine-color-red-6: #e02829;--mantine-color-red-7: #c71a1c;--mantine-color-red-8: #b21218;--mantine-color-red-9: #9c0411;--mantine-color-violet-0: #fce9ff;--mantine-color-violet-1: #f1cfff;--mantine-color-violet-2: #e09bff;--mantine-color-violet-3: #d16fff;--mantine-color-violet-4: #be37fe;--mantine-color-violet-5: #b51afe;--mantine-color-violet-6: #b009ff;--mantine-color-violet-7: #9b00e4;--mantine-color-violet-8: #8a00cc;--mantine-color-violet-9: #7800b3;--mantine-color-indigo-0: #edecff;--mantine-color-indigo-1: #d6d5fe;--mantine-color-indigo-2: #aaa9f4;--mantine-color-indigo-3: #7b79eb;--mantine-color-indigo-4: #5451e4;--mantine-color-indigo-5: #3b37e0;--mantine-color-indigo-6: #2d2adf;--mantine-color-indigo-7: #1f1ec7;--mantine-color-indigo-8: #1819b2;--mantine-color-indigo-9: #0c149e;--mantine-color-cyan-0: #dffdff;--mantine-color-cyan-1: #caf5ff;--mantine-color-cyan-2: #99e8ff;--mantine-color-cyan-3: #64daff;--mantine-color-cyan-4: #3ccffe;--mantine-color-cyan-5: #24c8fe;--mantine-color-cyan-6: #00c2ff;--mantine-color-cyan-7: #00ade4;--mantine-color-cyan-8: #009acd;--mantine-color-cyan-9: #0085b5;--mantine-color-green-0: #e9fdec;--mantine-color-green-1: #d7f6dc;--mantine-color-green-2: #b0eab9;--mantine-color-green-3: #86df94;--mantine-color-green-4: #62d574;--mantine-color-green-5: #4ccf5f;--mantine-color-green-6: #3fcc54;--mantine-color-green-7: #2fb344;--mantine-color-green-8: #25a03b;--mantine-color-green-9: #138a2e;--mantine-color-yellow-0: #fff7e2;--mantine-color-yellow-1: #ffeecd;--mantine-color-yellow-2: #ffdc9c;--mantine-color-yellow-3: #ffc966;--mantine-color-yellow-4: #feb93a;--mantine-color-yellow-5: #feae1e;--mantine-color-yellow-6: #ffa90f;--mantine-color-yellow-8: #ca8200;--mantine-color-yellow-9: #af7000;--mantine-h1-font-size: clamp(28.0000px, calc(23.6364px + 1.3636vw), 40.0000px);--mantine-h1-font-weight: normal;--mantine-h2-font-size: clamp(24.0000px, calc(21.0909px + 0.9091vw), 32.0000px);--mantine-h2-font-weight: normal;--mantine-h3-font-size: clamp(20.0000px, calc(17.0909px + 0.9091vw), 28.0000px);--mantine-h3-font-weight: normal;--mantine-h4-font-size: clamp(16.0000px, calc(13.0909px + 0.9091vw), 24.0000px);--mantine-h4-font-weight: normal;--mantine-h5-font-size: clamp(16.0000px, calc(14.5455px + 0.4545vw), 20.0000px);--mantine-h5-font-weight: normal;--mantine-h6-font-size: 1rem;--mantine-h6-font-weight: normal;}
:root[data-mantine-color-scheme="dark"], :host([data-mantine-color-scheme="dark"]){--mantine-color-anchor: var(--mantine-color-text);--mantine-color-dimmed: #495057;--mantine-color-dark-filled: var(--mantine-color-dark-5);--mantine-color-dark-filled-hover: var(--mantine-color-dark-6);--mantine-color-dark-light: rgba(105, 105, 105, 0.15);--mantine-color-dark-light-hover: rgba(105, 105, 105, 0.2);--mantine-color-dark-light-color: var(--mantine-color-dark-0);--mantine-color-dark-outline: var(--mantine-color-dark-1);--mantine-color-dark-outline-hover: rgba(184, 184, 184, 0.05);--mantine-color-gray-filled: var(--mantine-color-gray-5);--mantine-color-gray-filled-hover: var(--mantine-color-gray-6);--mantine-color-gray-light: rgba(222, 226, 230, 0.15);--mantine-color-gray-light-hover: rgba(222, 226, 230, 0.2);--mantine-color-gray-light-color: var(--mantine-color-gray-0);--mantine-color-gray-outline: var(--mantine-color-gray-1);--mantine-color-gray-outline-hover: rgba(241, 243, 245, 0.05);--mantine-color-red-filled: var(--mantine-color-red-5);--mantine-color-red-filled-hover: var(--mantine-color-red-6);--mantine-color-red-light: rgba(236, 120, 120, 0.15);--mantine-color-red-light-hover: rgba(236, 120, 120, 0.2);--mantine-color-red-light-color: var(--mantine-color-red-0);--mantine-color-red-outline: var(--mantine-color-red-1);--mantine-color-red-outline-hover: rgba(254, 212, 212, 0.05);--mantine-color-pink-filled: var(--mantine-color-pink-5);--mantine-color-pink-filled-hover: var(--mantine-color-pink-6);--mantine-color-pink-light: rgba(250, 162, 193, 0.15);--mantine-color-pink-light-hover: rgba(250, 162, 193, 0.2);--mantine-color-pink-light-color: var(--mantine-color-pink-0);--mantine-color-pink-outline: var(--mantine-color-pink-1);--mantine-color-pink-outline-hover: rgba(255, 222, 235, 0.05);--mantine-color-grape-filled: var(--mantine-color-grape-5);--mantine-color-grape-filled-hover: var(--mantine-color-grape-6);--mantine-color-grape-light: rgba(229, 153, 247, 0.15);--mantine-color-grape-light-hover: rgba(229, 153, 247, 0.2);--mantine-color-grape-light-color: var(--mantine-color-grape-0);--mantine-color-grape-outline: var(--mantine-color-grape-1);--mantine-color-grape-outline-hover: rgba(243, 217, 250, 0.05);--mantine-color-violet-filled: var(--mantine-color-violet-5);--mantine-color-violet-filled-hover: var(--mantine-color-violet-6);--mantine-color-violet-light: rgba(209, 111, 255, 0.15);--mantine-color-violet-light-hover: rgba(209, 111, 255, 0.2);--mantine-color-violet-light-color: var(--mantine-color-violet-0);--mantine-color-violet-outline: var(--mantine-color-violet-1);--mantine-color-violet-outline-hover: rgba(241, 207, 255, 0.05);--mantine-color-indigo-filled: var(--mantine-color-indigo-5);--mantine-color-indigo-filled-hover: var(--mantine-color-indigo-6);--mantine-color-indigo-light: rgba(123, 121, 235, 0.15);--mantine-color-indigo-light-hover: rgba(123, 121, 235, 0.2);--mantine-color-indigo-light-color: var(--mantine-color-indigo-0);--mantine-color-indigo-outline: var(--mantine-color-indigo-1);--mantine-color-indigo-outline-hover: rgba(214, 213, 254, 0.05);--mantine-color-blue-filled: var(--mantine-color-blue-5);--mantine-color-blue-filled-hover: var(--mantine-color-blue-6);--mantine-color-blue-light: rgba(116, 192, 252, 0.15);--mantine-color-blue-light-hover: rgba(116, 192, 252, 0.2);--mantine-color-blue-light-color: var(--mantine-color-blue-0);--mantine-color-blue-outline: var(--mantine-color-blue-1);--mantine-color-blue-outline-hover: rgba(208, 235, 255, 0.05);--mantine-color-cyan-filled: var(--mantine-color-cyan-5);--mantine-color-cyan-filled-hover: var(--mantine-color-cyan-6);--mantine-color-cyan-light: rgba(100, 218, 255, 0.15);--mantine-color-cyan-light-hover: rgba(100, 218, 255, 0.2);--mantine-color-cyan-light-color: var(--mantine-color-cyan-0);--mantine-color-cyan-outline: var(--mantine-color-cyan-1);--mantine-color-cyan-outline-hover: rgba(202, 245, 255, 0.05);--mantine-color-teal-filled: var(--mantine-color-teal-5);--mantine-color-teal-filled-hover: var(--mantine-color-teal-6);--mantine-color-teal-light: rgba(99, 230, 190, 0.15);--mantine-color-teal-light-hover: rgba(99, 230, 190, 0.2);--mantine-color-teal-light-color: var(--mantine-color-teal-0);--mantine-color-teal-outline: var(--mantine-color-teal-1);--mantine-color-teal-outline-hover: rgba(195, 250, 232, 0.05);--mantine-color-green-filled: var(--mantine-color-green-5);--mantine-color-green-filled-hover: var(--mantine-color-green-6);--mantine-color-green-light: rgba(134, 223, 148, 0.15);--mantine-color-green-light-hover: rgba(134, 223, 148, 0.2);--mantine-color-green-light-color: var(--mantine-color-green-0);--mantine-color-green-outline: var(--mantine-color-green-1);--mantine-color-green-outline-hover: rgba(215, 246, 220, 0.05);--mantine-color-lime-filled: var(--mantine-color-lime-5);--mantine-color-lime-filled-hover: var(--mantine-color-lime-6);--mantine-color-lime-light: rgba(192, 235, 117, 0.15);--mantine-color-lime-light-hover: rgba(192, 235, 117, 0.2);--mantine-color-lime-light-color: var(--mantine-color-lime-0);--mantine-color-lime-outline: var(--mantine-color-lime-1);--mantine-color-lime-outline-hover: rgba(233, 250, 200, 0.05);--mantine-color-yellow-filled: var(--mantine-color-yellow-5);--mantine-color-yellow-filled-hover: var(--mantine-color-yellow-6);--mantine-color-yellow-light: rgba(255, 201, 102, 0.15);--mantine-color-yellow-light-hover: rgba(255, 201, 102, 0.2);--mantine-color-yellow-light-color: var(--mantine-color-yellow-0);--mantine-color-yellow-outline: var(--mantine-color-yellow-1);--mantine-color-yellow-outline-hover: rgba(255, 238, 205, 0.05);--mantine-color-orange-filled: var(--mantine-color-orange-5);--mantine-color-orange-filled-hover: var(--mantine-color-orange-6);--mantine-color-orange-light: rgba(255, 192, 120, 0.15);--mantine-color-orange-light-hover: rgba(255, 192, 120, 0.2);--mantine-color-orange-light-color: var(--mantine-color-orange-0);--mantine-color-orange-outline: var(--mantine-color-orange-1);--mantine-color-orange-outline-hover: rgba(255, 232, 204, 0.05);--app-cta-gradient: linear-gradient(90deg, var(--mantine-color-blue-9) 0%, var(--mantine-color-cyan-7) 100%);--app-color-surface: #2e2e2e;}
:root[data-mantine-color-scheme="light"], :host([data-mantine-color-scheme="light"]){--mantine-color-anchor: var(--mantine-color-text);--mantine-color-dimmed: #495057;--mantine-color-red-light: rgba(224, 40, 41, 0.1);--mantine-color-red-light-hover: rgba(224, 40, 41, 0.12);--mantine-color-red-outline-hover: rgba(224, 40, 41, 0.05);--mantine-color-violet-light: rgba(176, 9, 255, 0.1);--mantine-color-violet-light-hover: rgba(176, 9, 255, 0.12);--mantine-color-violet-outline-hover: rgba(176, 9, 255, 0.05);--mantine-color-indigo-light: rgba(45, 42, 223, 0.1);--mantine-color-indigo-light-hover: rgba(45, 42, 223, 0.12);--mantine-color-indigo-outline-hover: rgba(45, 42, 223, 0.05);--mantine-color-cyan-light: rgba(0, 194, 255, 0.1);--mantine-color-cyan-light-hover: rgba(0, 194, 255, 0.12);--mantine-color-cyan-outline-hover: rgba(0, 194, 255, 0.05);--mantine-color-green-light: rgba(63, 204, 84, 0.1);--mantine-color-green-light-hover: rgba(63, 204, 84, 0.12);--mantine-color-green-outline-hover: rgba(63, 204, 84, 0.05);--mantine-color-yellow-light: rgba(255, 169, 15, 0.1);--mantine-color-yellow-light-hover: rgba(255, 169, 15, 0.12);--mantine-color-yellow-outline-hover: rgba(255, 169, 15, 0.05);--app-color-surface: #f1f3f5;--app-cta-gradient: linear-gradient(90deg, var(--mantine-color-blue-filled) 0%, var(--mantine-color-cyan-5) 100%);}</style><style data-mantine-styles="classes">@media (max-width: 35.99375em) {.mantine-visible-from-xs {display: none !important;}}@media (min-width: 36em) {.mantine-hidden-from-xs {display: none !important;}}@media (max-width: 47.99375em) {.mantine-visible-from-sm {display: none !important;}}@media (min-width: 48em) {.mantine-hidden-from-sm {display: none !important;}}@media (max-width: 61.99375em) {.mantine-visible-from-md {display: none !important;}}@media (min-width: 62em) {.mantine-hidden-from-md {display: none !important;}}@media (max-width: 74.99375em) {.mantine-visible-from-lg {display: none !important;}}@media (min-width: 75em) {.mantine-hidden-from-lg {display: none !important;}}@media (max-width: 87.99375em) {.mantine-visible-from-xl {display: none !important;}}@media (min-width: 88em) {.mantine-hidden-from-xl {display: none !important;}}</style><div style="position:absolute;top:0rem" class=""></div><div style="max-width:var(--container-size-xl);height:100%;min-height:0rem" class=""><style data-mantine-styles="inline">.__m__-_R_5ub_{--grid-gutter:0rem;}</style><div style="height:100%;min-height:0rem" class="m_410352e9 mantine-Grid-root __m__-_R_5ub_"><div class="m_dee7bd2f mantine-Grid-inner" style="height:100%"><style data-mantine-styles="inline">.__m__-_R_rdub_{--col-flex-grow:auto;--col-flex-basis:91.66666666666667%;--col-max-width:91.66666666666667%;}@media(min-width: 48em){.__m__-_R_rdub_{--col-flex-grow:auto;--col-flex-basis:83.33333333333334%;--col-max-width:83.33333333333334%;}}</style><div style="min-width:0rem;height:100%;min-height:0rem;display:flex" class="m_96bdd299 mantine-Grid-col __m__-_R_rdub_"><style data-mantine-styles="inline">.__m__-_R_6qrdub_{margin-top:0rem;padding-inline:var(--mantine-spacing-xs);width:100%;}@media(min-width: 48em){.__m__-_R_6qrdub_{margin-top:var(--mantine-spacing-xl);width:80%;}}@media(min-width: 62em){.__m__-_R_6qrdub_{padding-inline:var(--mantine-spacing-xl);}}</style><div style="margin-inline:auto;max-width:var(--mantine-breakpoint-xl)" class="__m__-_R_6qrdub_"><div style="color:var(--mantine-color-dimmed)" class="m_4451eb3a mantine-Center-root" data-inline="true"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;margin-inline-end:calc(0.125rem * var(--mantine-scale));color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-lock "><path d="M5 13a2 2 0 0 1 2 -2h10a2 2 0 0 1 2 2v6a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2v-6"></path><path d="M11 16a1 1 0 1 0 2 0a1 1 0 0 0 -2 0"></path><path d="M8 11v-4a4 4 0 1 1 8 0v4"></path></svg></div><p style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Employment</p></div><h1 style="--title-fw:var(--mantine-h1-font-weight);--title-lh:var(--mantine-h1-line-height);--title-fz:var(--mantine-h1-font-size);margin-bottom:var(--mantine-spacing-xl)" class="m_8a5d1357 mantine-Title-root" data-order="1">Theory: How to prepare for an interview</h1><script type="application/ld+json">{"@context":"https://schema.org","@type":"LearningResource","name":"How to prepare for an interview","inLanguage":"en","isPartOf":{"@type":"LearningResource","name":"Employment"},"isAccessibleForFree":"False","hasPart":{"@type":"WebPageElement","isAccessibleForFree":"False","cssSelector":".paywalled"}}</script><div class=""><div style="--alert-color:var(--mantine-color-indigo-light-color);margin-bottom:var(--mantine-spacing-lg);font-size:var(--mantine-font-size-lg)" class="m_66836ed3 mantine-Alert-root" id="mantine-_R_remqrdub_" role="alert" aria-describedby="mantine-_R_remqrdub_-body" aria-labelledby="mantine-_R_remqrdub_-title"><div class="m_a5d60502 mantine-Alert-wrapper"><div class="m_667f2a6a mantine-Alert-icon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-rocket "><path d="M4 13a8 8 0 0 1 7 7a6 6 0 0 0 3 -5a9 9 0 0 0 6 -8a3 3 0 0 0 -3 -3a9 9 0 0 0 -8 6a6 6 0 0 0 -5 3"></path><path d="M7 14a6 6 0 0 0 -3 6a6 6 0 0 0 6 -3"></path><path d="M14 9a1 1 0 1 0 2 0a1 1 0 1 0 -2 0"></path></svg></div><div class="m_667c2793 mantine-Alert-body"><div class="m_6a03f287 mantine-Alert-title"><span id="mantine-_R_remqrdub_-title" class="m_698f4f23 mantine-Alert-label">Full access to materials</span></div><div id="mantine-_R_remqrdub_-body" class="m_7fa78076 mantine-Alert-message"><div style="--group-gap:var(--mantine-spacing-md);--group-align:center;--group-justify:space-between;--group-wrap:wrap" class="m_4081bf90 mantine-Group-root"><p class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Sign up and get access to this and dozens of other courses</p><a style="--button-height:var(--button-height-xs);--button-padding-x:var(--button-padding-x-xs);--button-fz:var(--mantine-font-size-xs);--button-bg:linear-gradient(45deg, var(--mantine-color-blue-filled) 0%, var(--mantine-color-cyan-filled) 100%);--button-hover:linear-gradient(45deg, var(--mantine-color-blue-filled) 0%, var(--mantine-color-cyan-filled) 100%);--button-color:var(--mantine-color-white);--button-bd:none" class="mantine-focus-auto mantine-active m_77c9d27d mantine-Button-root m_87cf2631 mantine-UnstyledButton-root" data-variant="gradient" data-size="xs" href="/u/new"><span class="m_80f1301b mantine-Button-inner"><span class="m_811560b9 mantine-Button-label">Sign up</span></span></a></div></div></div></div></div><div class="paywalled m_d08caa0 mantine-Typography-root"><p><img style="--image-object-fit:contain;width:auto" class="m_9e117634 mantine-Image-root" src="/rails/active_storage/blobs/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NzYxMSwicHVyIjoiYmxvYl9pZCJ9fQ==--de76221be4f74e48ee3980b55a6effe0fc9b1f06/employment-02.jpg" alt="Employment" loading="lazy"/></p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<h2 id="heading-2-1">Set your priorities</h2>
<p>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.</p>
<p>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:</p>
<ul>
<li>Are you looking for a diverse group of co-workers?</li>
<li>Are you hoping for a lot of upward mobility or a move into management?</li>
<li>What about work-life balance? How big of a deal is this?</li>
<li>Should a high salary be prioritized? Are there more important considerations?</li>
</ul>
<p>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.</p>
<h2 id="heading-2-2">Recall your achievements</h2>
<p>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.</p>
<p>To make achievements look advantageous, they need to be clearly presented and described. The <strong>STAR method</strong> will help with that. It is one of the best practices in an interview when discussing a specific case. It consists of four parts:</p>
<ul>
<li><strong>Situation</strong>: describe the situation that you were in when you needed to accomplish</li>
<li><strong>Task</strong>: Describe the challenge, and what needs to be done to get a positive result</li>
<li><strong>Action</strong>: Describe the steps you took and the contribution. Talk about yourself rather than the team</li>
<li><strong>Result</strong>: Describe the result of your actions</li>
</ul>
<p>Let’s take a look at this example. There is a case, described with the help of STAR framework:</p>
<ul>
<li><strong>Situation</strong>: I noticed that there is one vulnerability in one of the open-source projects I used</li>
<li><strong>Task</strong>: After a quick investigation, I realized that this was happening in some edge cases that are not covered by the current source code</li>
<li><strong>Action</strong>: I prepared a pull request for this repository and sent it to the team for review</li>
<li><strong>Result</strong>: The team merged my pull request, and then this issue was fixed. I received a lot of positive feedback from the open source community</li>
</ul>
<h2 id="heading-2-3">Refresh your knowledge</h2>
<p>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:</p>
<ul>
<li>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</li>
<li>He had been working with other frameworks recently, but on a specific project with a limited set of technologies</li>
</ul>
<p>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.</p>
<p>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.</p>
<h3 id="heading-3-4">Data Structures</h3>
<p>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.</p>
<p>Here is a list of essential data structures important for a coding interview:</p>
<ul>
<li>Strings</li>
<li>Array</li>
<li>Linked List</li>
<li>Queue</li>
<li>Stack</li>
<li>Tree</li>
<li>Trie</li>
<li>Hash Table</li>
<li>Heap</li>
<li>Graph</li>
</ul>
<p>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.</p>
<h3 id="heading-3-5">Algorithms</h3>
<p>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.</p>
<p>Let's quickly take a look at some common algorithms that you’ll need to know for a software development interview:</p>
<ul>
<li>Big O</li>
<li>Brute Force</li>
<li>Greedy algorithms</li>
<li>Sorting and Searching</li>
<li>Dynamic programming</li>
<li>Design</li>
<li>Math</li>
<li>BST</li>
<li>DFS</li>
<li>Backtracking</li>
</ul>
<p>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.</p>
<h3 id="heading-3-6">System Design</h3>
<p>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.</p>
<p>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.</p>
<h2 id="heading-2-7">Pass the interview</h2>
<p>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:</p>
<ul>
<li><strong>Explain your solutions</strong>. 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.</li>
<li><strong>Show, don't tell</strong>. 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.).</li>
<li><strong>Work with the interviewer like you're in the same team</strong>. The interviewer wants to know what it feels like to work with you, so make the interview feel collaborative.</li>
<li><strong>Think out loud</strong>. 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.</li>
</ul>
<h2 id="heading-2-8">Negotiate the offer</h2>
<p>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.</p>
<p>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.</p>
<p>With multiple offers in hand, you will be able to negotiate a better offer from every company.</p>
<h2 id="heading-2-9">Prepare to be rejected</h2>
<p>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.</p>
<p>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.</p>
<h2 id="heading-2-10">Conclusion</h2>
<p>To summarize new knowledge from the lesson, let's revisit the most important insights for preparation:</p>
<ul>
<li>Set your priorities: what you want to change or add to your new work or project</li>
<li>Refresh a list of your latest and greatest achievements, strengths and interesting projects</li>
<li>Refresh your knowledge of data structures, algorithms and system design</li>
<li>Check out interview tips and suggestions</li>
<li>Prepare to negotiate an offer</li>
<li>Rejections are going to happen. Do not take it personally!</li>
</ul>
<h2 id="heading-2-11">Additional resources</h2>
<ol>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/0984782850" rel="noopener noreferrer" target="_blank">Cracking the Coding Interview: 189 Programming Questions and Solutions</a></li>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://www.amazon.com/Grokking-Algorithms-illustrated-programmers-curious/dp/1617292230" rel="noopener noreferrer" target="_blank">Grokking Algorithms</a></li>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://www.amazon.com/Designing-Data-Intensive-Applications-Reliable-Maintainable/dp/1449373321/ref=pd_lpo_2?pd_rd_i=1449373321&psc=1" rel="noopener noreferrer" target="_blank">Designing Data-Intensive Applications</a></li>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://leetcode.com/explore/interview/card/top-interview-questions-easy/" rel="noopener noreferrer" target="_blank">Leetcode. Top Interview Questions</a></li>
<li><a style="text-decoration:underline" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="https://www.hackerrank.com/" rel="noopener noreferrer" target="_blank">HackerRank</a></li>
</ol></div><div style="margin-block:var(--mantine-spacing-xl)" class=""><h2 style="--title-fw:var(--mantine-h2-font-weight);--title-lh:var(--mantine-h2-line-height);--title-fz:var(--mantine-h2-font-size);margin-bottom:var(--mantine-spacing-md)" class="m_8a5d1357 mantine-Title-root" data-order="2">Recommended programs</h2><style data-mantine-styles="inline">.__m__-_R_2mremqrdub_{--carousel-slide-gap:var(--mantine-spacing-xs);--carousel-slide-size:70%;}@media(min-width: 36em){.__m__-_R_2mremqrdub_{--carousel-slide-gap:var(--mantine-spacing-xl);--carousel-slide-size:50%;}}</style><div style="--carousel-control-size:calc(2.5rem * var(--mantine-scale));--carousel-controls-offset:var(--mantine-spacing-sm);margin-bottom:var(--mantine-spacing-lg);padding-block:var(--mantine-spacing-sm);background:var(--app-color-surface)" class="m_17884d0f mantine-Carousel-root responsiveClassName" data-orientation="horizontal" data-include-gap-in-size="true"><div class="m_39bc3463 mantine-Carousel-controls" data-orientation="horizontal"><button class="mantine-focus-auto m_64f58e10 mantine-Carousel-control m_87cf2631 mantine-UnstyledButton-root" type="button" data-inactive="true" data-type="previous" tabindex="-1"><svg viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg" style="transform:rotate(90deg);width:calc(1rem * var(--mantine-scale));height:calc(1rem * var(--mantine-scale));display:block"><path d="M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z" fill="currentColor" fill-rule="evenodd" clip-rule="evenodd"></path></svg></button><button class="mantine-focus-auto m_64f58e10 mantine-Carousel-control m_87cf2631 mantine-UnstyledButton-root" type="button" data-inactive="true" data-type="next" tabindex="-1"><svg viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg" style="transform:rotate(-90deg);width:calc(1rem * var(--mantine-scale));height:calc(1rem * var(--mantine-scale));display:block"><path d="M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z" fill="currentColor" fill-rule="evenodd" clip-rule="evenodd"></path></svg></button></div><div class="m_a2dae653 mantine-Carousel-viewport" data-type="media"><div class="m_fcd81474 mantine-Carousel-container __m__-_R_2mremqrdub_" data-orientation="horizontal"><div class="m_d98df724 mantine-Carousel-slide" data-orientation="horizontal"><div tabindex="0" style="cursor:pointer;height:100%"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/programs/frontend?promo_name=programs_list&promo_position=course&promo_creative=catalog_card&promo_type=card" target="_blank"><div style="height:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root" data-with-border="true"><div style="--group-gap:calc(0.25rem * var(--mantine-scale));--group-align:center;--group-justify:flex-start;--group-wrap:nowrap" class="m_4081bf90 mantine-Group-root"><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">10 months</span><span class="mantine-focus-auto m_b6d8b162 mantine-Text-root">·</span><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">For beginners</span></div><p style="margin-bottom:var(--mantine-spacing-sm);font-size:var(--mantine-font-size-h5);font-weight:bold" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Frontend Developer</p><p class="mantine-focus-auto m_b6d8b162 mantine-Text-root"></p><div style="margin-top:auto" class=""><div class="m_4451eb3a mantine-Center-root"><img style="opacity:0.8;width:70%" class="m_9e117634 mantine-Image-root mantine-visible-from-xs" src="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MTIzNTMsInB1ciI6ImJsb2JfaWQifX0=--f1948fb0c5a45a6d76671a1a32b8cf6f0b53ee57/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Software%20code%20testing-cuate.png" alt="Frontend Developer" loading="eager"/></div><div style="--group-gap:var(--mantine-spacing-md);--group-align:end;--group-justify:space-between;--group-wrap:wrap;margin-top:var(--mantine-spacing-xs)" class="m_4081bf90 mantine-Group-root"><p style="font-size:var(--mantine-font-size-xl)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">from $49</p><p style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Explore →</p></div></div></div></a></div></div><div class="m_d98df724 mantine-Carousel-slide" data-orientation="horizontal"><div tabindex="0" style="cursor:pointer;height:100%"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/courses?promo_name=programs_list&promo_position=course&promo_creative=catalog_card&promo_type=card"><div style="height:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root" data-with-border="true"><h2 style="--title-fw:var(--mantine-h2-font-weight);--title-lh:var(--mantine-h2-line-height);--title-fz:var(--mantine-h2-font-size);margin-bottom:var(--mantine-spacing-md);font-size:var(--mantine-font-size-h3)" class="m_8a5d1357 mantine-Title-root" data-order="2" data-responsive="true">Catalog</h2><p style="margin-bottom:auto" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">A complete list of available courses by direction</p><div style="margin-top:auto" class=""><div class="m_4451eb3a mantine-Center-root"><img style="opacity:0.8;width:70%" class="m_9e117634 mantine-Image-root mantine-visible-from-xs" src="/vite/assets/development-BVihs_d5.png" alt="Orientation"/></div></div></div></a></div></div></div></div></div></div></div></div></div><style data-mantine-styles="inline">.__m__-_R_1bdub_{--col-flex-grow:auto;--col-flex-basis:8.333333333333334%;--col-max-width:8.333333333333334%;}@media(min-width: 48em){.__m__-_R_1bdub_{--col-flex-grow:auto;--col-flex-basis:16.666666666666668%;--col-max-width:16.666666666666668%;}}</style><div style="min-width:0rem;height:100%;min-height:0rem" class="m_96bdd299 mantine-Grid-col __m__-_R_1bdub_"><div style="margin-inline:var(--mantine-spacing-xs)" class="mantine-visible-from-sm"><button style="--button-color:var(--mantine-color-white);margin-bottom:var(--mantine-spacing-lg);text-decoration:none" class="mantine-focus-auto m_849cf0da mantine-focus-auto m_77c9d27d mantine-Button-root m_87cf2631 mantine-UnstyledButton-root m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" data-disabled="true" data-block="true" disabled="" type="button"><span class="m_80f1301b mantine-Button-inner"><span class="m_811560b9 mantine-Button-label"><span style="margin-inline-end:var(--mantine-spacing-xs)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Next</span>→</span></span></button><a style="padding-inline:0rem" class="mantine-focus-auto m_f0824112 mantine-NavLink-root m_87cf2631 mantine-UnstyledButton-root"><span class="m_690090b5 mantine-NavLink-section" data-position="left"><div style="--ti-size:var(--ti-size-sm);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="sm"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-list-numbers "><path d="M11 6h9"></path><path d="M11 12h9"></path><path d="M12 18h8"></path><path d="M4 16a2 2 0 1 1 4 0c0 .591 -.5 1 -1 1.5l-3 2.5h4"></path><path d="M6 10v-6l-2 2"></path></svg></div></span><div class="m_f07af9d2 mantine-NavLink-body"><span class="m_1f6ac4c4 mantine-NavLink-label">Navigation</span><span class="m_57492dcc mantine-NavLink-description">Theory</span></div><span class="m_690090b5 mantine-NavLink-section" data-position="right"></span></a><div style="margin-block:var(--mantine-spacing-lg)" class="m_3eebeb36 mantine-Divider-root" data-orientation="horizontal" role="separator"></div><div style="margin-block:var(--mantine-spacing-lg)" class=""><div style="justify-content:space-between;margin-bottom:calc(0.1875rem * var(--mantine-scale));color:var(--mantine-color-dimmed);font-size:var(--mantine-font-size-xs)" class="m_8bffd616 mantine-Flex-root __m__-_R_qimrbdub_"><p style="font-size:var(--mantine-font-size-xs)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Completed</p><p style="font-size:var(--mantine-font-size-xs)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">0 / 5</p></div><div style="--progress-size:var(--progress-size-sm)" class="m_db6d6462 mantine-Progress-root" data-size="sm"><div style="--progress-section-size:0%;--progress-section-color:var(--mantine-color-gray-filled)" class="m_2242eb65 mantine-Progress-section" role="progressbar" aria-valuemax="100" aria-valuemin="0" aria-valuenow="0" aria-valuetext="0%"></div></div></div><div style="--toc-bg:var(--mantine-color-blue-light);--toc-color:var(--mantine-color-blue-light-color);--toc-size:var(--mantine-font-size-sm);--toc-radius:var(--mantine-radius-sm);margin-top:var(--mantine-spacing-xl)" class="m_bcaa9990 mantine-TableOfContents-root" data-variant="light" data-size="sm"></div></div><div class="mantine-hidden-from-sm"><div style="--stack-gap:0rem;--stack-align:stretch;--stack-justify:flex-start" class="m_6d731127 mantine-Stack-root"><button style="--button-color:var(--mantine-color-white);margin-bottom:var(--mantine-spacing-xs);padding:0rem;text-decoration:none" class="mantine-focus-auto m_849cf0da mantine-focus-auto m_77c9d27d mantine-Button-root m_87cf2631 mantine-UnstyledButton-root m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" data-disabled="true" data-block="true" disabled="" type="button"><span class="m_80f1301b mantine-Button-inner"><span class="m_811560b9 mantine-Button-label">→</span></span></button><button style="--ai-size:var(--ai-size-sm);--ai-bg:transparent;--ai-hover:var(--mantine-color-indigo-light-hover);--ai-color:var(--mantine-color-indigo-light-color);--ai-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;padding-block:var(--mantine-spacing-lg);color:inherit;width:100%" class="mantine-focus-auto m_8d3f4000 mantine-ActionIcon-root m_87cf2631 mantine-UnstyledButton-root" data-variant="subtle" data-size="sm" data-disabled="true" type="button" disabled=""><span class="m_8d3afb97 mantine-ActionIcon-icon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-list-numbers "><path d="M11 6h9"></path><path d="M11 12h9"></path><path d="M12 18h8"></path><path d="M4 16a2 2 0 1 1 4 0c0 .591 -.5 1 -1 1.5l-3 2.5h4"></path><path d="M6 10v-6l-2 2"></path></svg></span></button></div></div></div></div></div></div></div>
</main>
<footer class="bg-dark fw-light text-light px-3 py-5">
<div class="row small">
<div class="col-12 col-sm-6 col-md-3">
<div class="h5 mb-3">About Hexlet</div>
<ul class="list-unstyled">
<li>
<a class="nav-link link-light py-1 ps-0" href="/pages/about">About us</a>
</li>
<li>
<span class="nav-link link-light py-1 ps-0 external-link" data-href="https://help.hexlet.io/category/4316" data-target="_blank" role="button">Help</span>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" target="_blank" rel="noopener noreferrer" href="/map">Site Map</a>
</li>
</ul>
</div>
<div class="col-12 col-sm-6 col-md-3">
<div class="h5 fw-normal mb-3">Learn</div>
<ul class="list-unstyled">
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_backend-development">Backend
</a></li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_devops">DevOps
</a></li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_frontend-development">Frontend
</a></li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_python">Python
</a></li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_testing">Testing
</a></li>
</ul>
</div>
<div class="col-12 col-sm-6 col-md-3">
<div class="h5"><span class="translation_missing" title="translation missing: en.layouts.footer_content.popular_courses_for_beginners">Popular Courses For Beginners</span></div>
<ul class="list-unstyled">
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/frontend">Frontend Developer</a>
</li>
</ul>
</div>
<div class="col-12 col-sm-6 col-md-3">
<div class="h5"><span class="translation_missing" title="translation missing: en.layouts.footer_content.popular_courses_for_advanced">Popular Courses For Advanced</span></div>
<ul class="list-unstyled">
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/web-development-free">Fundamentals of Web Development</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/js-react-development">React</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/css-animation">CSS Animation</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/http-api">HTTP API</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/layout-designer-positioning">Position CSS</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/cli-basics">Command line basics</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/git-basics-free">Git fundamentals</a>
</li>
</ul>
</div>
</div>
<hr>
<div class="row">
<div class="col-12 col-sm-4 col-md-2">
<div class="fs-4">
<ul class="list-unstyled d-flex">
<li class="me-3">
<a aria-label="Facebook" target="_blank" class="link-light" rel="noopener noreferrer nofollow" href="https://www.facebook.com/hexlethq"><span class="bi bi-facebook"></span>
</a></li>
<li class="me-3">
<a aria-label="Instagram" target="_blank" class="link-light" rel="noopener noreferrer nofollow" href="https://www.instagram.com/hello_hexlet/"><span class="bi bi-instagram"></span>
</a></li>
<li>
<a aria-label="Twitter" target="_blank" class="link-light" rel="noopener noreferrer nofollow" href="https://twitter.com/Hexlet_IO"><span class="bi bi-twitter-x"></span>
</a></li>
</ul>
</div>
<div class="mb-2 d-flex flex-column">
<a class="link-light text-decoration-none" rel="nofollow" href="mailto:support@hexlet.io">support@hexlet.io</a>
<a class="link-light text-decoration-none py-2" target="_blank" href="https://t.me/hexlet_help_bot">t.me/hexlet_help_bot</a>
</div>
<ul class="list-unstyled d-flex">
<li class="me-3">
<span class="link-light text-decoration-none opacity-50 x-font-size-18 opacity-100 external-link" rel="nofollow" data-href="https://hexlet.io/locale/switch?new_locale=en" data-target="_self" role="button"><span class="my-auto">EN</span>
</span></li>
<li class="me-3">
<span class="link-light text-decoration-none opacity-50 x-font-size-18 external-link" rel="nofollow" data-href="https://ru.hexlet.io/locale/switch?new_locale=ru" data-target="_self" role="button"><span class="my-auto">RU</span>
</span></li>
<li class="me-3">
<span class="link-light text-decoration-none opacity-50 x-font-size-18 external-link" rel="nofollow" data-href="https://kz.hexlet.io/locale/switch?new_locale=kz" data-target="_self" role="button"><span class="my-auto">KZ</span>
</span></li>
</ul>
</div>
<div class="col-12 col-sm-4 col-md-3">
<ul class="list-unstyled fs-4">
<li class="mb-3">
<a class="link-light text-decoration-none" href="tel:%2B7%20717%20272%2076%2070">+7 717 272 76 70</a>
<span class="d-block opacity-50 small">free call</span>
</li>
</ul>
</div>
<div class="col-12 col-sm-4 col-md-3">
<ul class="list-unstyled small">
<li>
<a class="nav-link link-light py-1 ps-0" href="/pages/legal">Legal</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/pages/offer"><span class="translation_missing" title="translation missing: en.layouts.footer_content.offer">Offer</span></a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/pages/contacts"><span class="translation_missing" title="translation missing: en.layouts.footer_content.contacts">Contacts</span></a>
</li>
</ul>
</div>
<div class="col-12 col-sm-12 col-md-4 small">
<div class="mb-2">
<div>TOO "Hexlet"</div>
<div>The Republic of Kazakhstan, Almaty</div>
<div>Auezova St., 14A</div>
<div>BIN 230340043714
</div>
</div>
</div>
</div>
</footer>
<div id="root-assistant-offcanvas"></div>
<script src="/vite/assets/assistant-CIOaBlj-.js" crossorigin="anonymous" type="module"></script><link rel="modulepreload" href="/vite/assets/chunk-DsPFFUou.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/init-0bhwJkNI.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/ErrorFallbackBlock-V3hfk_CP.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/MarkdownBlock-DejNWqwz.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/gon-B-jV56Ol.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/mantine-DOJkeu70.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/shiki-DZwEN4Zo.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/utils-ClTF9s_T.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/routes-mvvEXZQ8.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/lib-CJocDKTE.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Box-DH3_MBnL.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/notifications.store-Cj65YiRw.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/useIsomorphicEffect-Csl7vw8x.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/lib-DeAQqnBE.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/axios-CN66HKVH.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/classnames-DQgTDFJJ.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/dayjs.min-Bfba02I7.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/debounce-BcxwEZ7X.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/prop-types-DGBR76ns.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/client-CYyKzrjQ.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/react-dom-SJZekO2j.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/useTranslation-bo78L81P.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/compiler-runtime-BhqaZ6vG.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/jsx-runtime-DlXMvSuQ.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/react-CFtMU8gd.js" as="script" crossorigin="anonymous">
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon='{"version":"2024.11.0","token":"d11015b65d11429ea6b4a2ef37dd7e0b","server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
</body>
</html>