0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Первое собеседование на должность программиста - источник постоянного стресса независимо от возраста. Во время собеседования начинают забываться элементарные вещи, а некоторые вопросы ставят в тупик. Совсем убрать волнение невозможно, но подготовка к интервью может его уменьшить.</p>
1
<p>Первое собеседование на должность программиста - источник постоянного стресса независимо от возраста. Во время собеседования начинают забываться элементарные вещи, а некоторые вопросы ставят в тупик. Совсем убрать волнение невозможно, но подготовка к интервью может его уменьшить.</p>
2
<p>В этом уроке мы разберем, к чему программисту готовиться на собеседовании.</p>
2
<p>В этом уроке мы разберем, к чему программисту готовиться на собеседовании.</p>
3
<h2>Ключевые темы</h2>
3
<h2>Ключевые темы</h2>
4
<p>Ключевые темы на собеседовании на программиста:</p>
4
<p>Ключевые темы на собеседовании на программиста:</p>
5
<ul><li>О себе. Прошлый опыт</li>
5
<ul><li>О себе. Прошлый опыт</li>
6
<li>Прикладные знания</li>
6
<li>Прикладные знания</li>
7
<li>Задачи</li>
7
<li>Задачи</li>
8
</ul><p>Разберем каждую тему подробнее.</p>
8
</ul><p>Разберем каждую тему подробнее.</p>
9
<h3>О себе. Прошлый опыт</h3>
9
<h3>О себе. Прошлый опыт</h3>
10
<p>Обычно в начале собеседования происходит знакомство. Сначала компания рассказывает о себе, а потом представляется кандидат. Также вам могут задавать вопросы. К ним лучше подготовиться заранее.</p>
10
<p>Обычно в начале собеседования происходит знакомство. Сначала компания рассказывает о себе, а потом представляется кандидат. Также вам могут задавать вопросы. К ним лучше подготовиться заранее.</p>
11
<p>На этом этапе будьте готовы ответить на следующие вопросы:</p>
11
<p>На этом этапе будьте готовы ответить на следующие вопросы:</p>
12
<ul><li>Чем вы больше всего гордитесь как программист?</li>
12
<ul><li>Чем вы больше всего гордитесь как программист?</li>
13
<li>Какая самая сложная и интересная задача, которую вы решали в прошлом проекте или в учебном проекте?</li>
13
<li>Какая самая сложная и интересная задача, которую вы решали в прошлом проекте или в учебном проекте?</li>
14
<li>Как вы тестировали работоспособность кода? Умеете ли вы писать автоматические тесты?</li>
14
<li>Как вы тестировали работоспособность кода? Умеете ли вы писать автоматические тесты?</li>
15
<li>Как был построен процесс разработки на прошлом месте?</li>
15
<li>Как был построен процесс разработки на прошлом месте?</li>
16
<li>Какую последнюю книгу по программированию вы прочитали?</li>
16
<li>Какую последнюю книгу по программированию вы прочитали?</li>
17
</ul><p>Чтобы быть готовым к подобным вопросам, создайте заранее несколько проектов на Github, ответьте для себя на вопросы, описанные выше, и познакомьтесь с идеями<a>экстремального программирования</a>. Полезные ссылки:</p>
17
</ul><p>Чтобы быть готовым к подобным вопросам, создайте заранее несколько проектов на Github, ответьте для себя на вопросы, описанные выше, и познакомьтесь с идеями<a>экстремального программирования</a>. Полезные ссылки:</p>
18
<ul><li><a>Книги, которые стоит читать любому программисту</a></li>
18
<ul><li><a>Книги, которые стоит читать любому программисту</a></li>
19
<li><a>Список тестовых заданий от разных компаний</a></li>
19
<li><a>Список тестовых заданий от разных компаний</a></li>
20
<li><a>Проекты Хекслета</a></li>
20
<li><a>Проекты Хекслета</a></li>
21
</ul><h3>Прикладные знания</h3>
21
</ul><h3>Прикладные знания</h3>
22
<p>На этом этапе программистов спрашивают о технологиях, с которыми уже приходилось работать. Знания делят на общие и специфичные.</p>
22
<p>На этом этапе программистов спрашивают о технологиях, с которыми уже приходилось работать. Знания делят на общие и специфичные.</p>
23
<p>К общим знаниям относятся:</p>
23
<p>К общим знаниям относятся:</p>
24
<ul><li>Базы данных, SQL. Могут попросить составить запрос. Чаще всего интересует знание соединений (joins)</li>
24
<ul><li>Базы данных, SQL. Могут попросить составить запрос. Чаще всего интересует знание соединений (joins)</li>
25
<li>ООП. На базовом уровне имеется ввиду умение создавать классы и умение моделировать</li>
25
<li>ООП. На базовом уровне имеется ввиду умение создавать классы и умение моделировать</li>
26
<li>Веб-разработчиков могут спросить про DOM Api</li>
26
<li>Веб-разработчиков могут спросить про DOM Api</li>
27
</ul><p>В качестве специфичных знаний проверяется знание библиотек, фреймворков, особенностей языков. В интернете созданы списки по каждому возможному стеку:</p>
27
</ul><p>В качестве специфичных знаний проверяется знание библиотек, фреймворков, особенностей языков. В интернете созданы списки по каждому возможному стеку:</p>
28
<ul><li><a>java</a></li>
28
<ul><li><a>java</a></li>
29
<li><a>frontend</a></li>
29
<li><a>frontend</a></li>
30
<li><a>python</a></li>
30
<li><a>python</a></li>
31
<li><a>javascript</a></li>
31
<li><a>javascript</a></li>
32
</ul><h3>Задачи</h3>
32
</ul><h3>Задачи</h3>
33
<p>Задачи для программистов бывают разными. Им задают вопросы на логику и воображение, а также на оценку владения профессиональными навыками. Последние в этом уроке разберем подробнее.</p>
33
<p>Задачи для программистов бывают разными. Им задают вопросы на логику и воображение, а также на оценку владения профессиональными навыками. Последние в этом уроке разберем подробнее.</p>
34
<h4>Алгоритмы и структуры данных</h4>
34
<h4>Алгоритмы и структуры данных</h4>
35
<p>На этом этапе могут попросить реализовать переворот односвязного списка или выполнить сортировку пузырьком. Более сложные вещи писать не просят, их могут спросить устно. Например:</p>
35
<p>На этом этапе могут попросить реализовать переворот односвязного списка или выполнить сортировку пузырьком. Более сложные вещи писать не просят, их могут спросить устно. Например:</p>
36
<ul><li>Как найти пропущенное число в отсортированном массиве, который содержит значения от 1 до 100?</li>
36
<ul><li>Как найти пропущенное число в отсортированном массиве, который содержит значения от 1 до 100?</li>
37
<li>Чем отличается O(1) от O(n)?</li>
37
<li>Чем отличается O(1) от O(n)?</li>
38
<li>Какая алгоритмическая сложность у бинарного поиска?</li>
38
<li>Какая алгоритмическая сложность у бинарного поиска?</li>
39
<li>Как определить наличие цикла в односвязном списке?</li>
39
<li>Как определить наличие цикла в односвязном списке?</li>
40
<li>Как эффективно объединить два отсортированных массива?</li>
40
<li>Как эффективно объединить два отсортированных массива?</li>
41
</ul><p>Этого раздела не стоит пугаться, никто не требует от вас глубокого знания алгоритмов и всего прочитанного Кнута. Достаточно прочитать одну книгу и немного попрактиковаться. Этот опыт не будет лишним - правильно выбранная структура данных в коде сделает вашу жизнь значительно легче.</p>
41
</ul><p>Этого раздела не стоит пугаться, никто не требует от вас глубокого знания алгоритмов и всего прочитанного Кнута. Достаточно прочитать одну книгу и немного попрактиковаться. Этот опыт не будет лишним - правильно выбранная структура данных в коде сделает вашу жизнь значительно легче.</p>
42
<p>Рекомендации:</p>
42
<p>Рекомендации:</p>
43
<ul><li>Вспомните логарифмы. Они нужны для оценки сложности. Это единственная обязательная математика для книг по алгоритмам</li>
43
<ul><li>Вспомните логарифмы. Они нужны для оценки сложности. Это единственная обязательная математика для книг по алгоритмам</li>
44
<li>изучите основные алгоритмы</li>
44
<li>изучите основные алгоритмы</li>
45
<li>изучите основные структуры данных</li>
45
<li>изучите основные структуры данных</li>
46
<li>напишите сортировку пузырьком</li>
46
<li>напишите сортировку пузырьком</li>
47
<li>познакомьтесь с хеш-таблицами</li>
47
<li>познакомьтесь с хеш-таблицами</li>
48
<li>научитесь выполнять бинарный поиск</li>
48
<li>научитесь выполнять бинарный поиск</li>
49
<li>изучите сбалансированные деревья</li>
49
<li>изучите сбалансированные деревья</li>
50
<li>выучите нотацию Big O, научитесь определять сложность простых алгоритмов</li>
50
<li>выучите нотацию Big O, научитесь определять сложность простых алгоритмов</li>
51
</ul><p>Полезные ссылки:</p>
51
</ul><p>Полезные ссылки:</p>
52
<ul><li><a>Грокаем алгоритмы</a></li>
52
<ul><li><a>Грокаем алгоритмы</a></li>
53
</ul><h4>Операционные системы и сети</h4>
53
</ul><h4>Операционные системы и сети</h4>
54
<p>Сюда входит огромный перечень тем, например: владение командной строкой, понимание tcp/ip, http, dns, event loop и многое другое. Как правило, эти вопросы не задают напрямую. В основном придумывают различные истории или ситуации. Примеры вопросов:</p>
54
<p>Сюда входит огромный перечень тем, например: владение командной строкой, понимание tcp/ip, http, dns, event loop и многое другое. Как правило, эти вопросы не задают напрямую. В основном придумывают различные истории или ситуации. Примеры вопросов:</p>
55
<ul><li>Может ли существовать такой ip адрес: 283.12.30.111?</li>
55
<ul><li>Может ли существовать такой ip адрес: 283.12.30.111?</li>
56
<li><a>Что происходит, когда пользователь вбивает в браузер адрес google.com?</a></li>
56
<li><a>Что происходит, когда пользователь вбивает в браузер адрес google.com?</a></li>
57
<li>Можно ли в HTTP запросы указывать одновременно query и post параметры?</li>
57
<li>Можно ли в HTTP запросы указывать одновременно query и post параметры?</li>
58
</ul><p>Рекомендации:</p>
58
</ul><p>Рекомендации:</p>
59
<ul><li>прочитайте книгу по операционным системам</li>
59
<ul><li>прочитайте книгу по операционным системам</li>
60
<li>перейдите на Linux, например, Ubuntu</li>
60
<li>перейдите на Linux, например, Ubuntu</li>
61
<li>изучите сети на базовом уровне: tcp/ip, dns, http</li>
61
<li>изучите сети на базовом уровне: tcp/ip, dns, http</li>
62
</ul><h4>Операции с числами</h4>
62
</ul><h4>Операции с числами</h4>
63
<p>Популярные задачи на системы счисления и битовые операции:</p>
63
<p>Популярные задачи на системы счисления и битовые операции:</p>
64
<ul><li>Как определить четность числа не выполняя деления?</li>
64
<ul><li>Как определить четность числа не выполняя деления?</li>
65
<li>Как поменять две переменные местами, не используя третью переменную?</li>
65
<li>Как поменять две переменные местами, не используя третью переменную?</li>
66
</ul><p>Чтобы ответить на подобные вопросы, рекомендуем изучить системы счисления и битовые операции.</p>
66
</ul><p>Чтобы ответить на подобные вопросы, рекомендуем изучить системы счисления и битовые операции.</p>
67
<h4>Problem-Solving задачи</h4>
67
<h4>Problem-Solving задачи</h4>
68
<p>Problem-Solving - самый интересный тип задач. В них моделируется реальная ситуация. Вам предстоит придумать способ решения в рамках каких-то ограничений. С помощью Problem-Solving задач работодатель проверяет навыки кандидатов в решении поставленных задач и оценивает его способности.</p>
68
<p>Problem-Solving - самый интересный тип задач. В них моделируется реальная ситуация. Вам предстоит придумать способ решения в рамках каких-то ограничений. С помощью Problem-Solving задач работодатель проверяет навыки кандидатов в решении поставленных задач и оценивает его способности.</p>
69
<p>Например, вас могут попросить реализовать редактор так, чтобы он открывал с одинаковой скоростью файлы любых размеров.</p>
69
<p>Например, вас могут попросить реализовать редактор так, чтобы он открывал с одинаковой скоростью файлы любых размеров.</p>
70
<p>Фактически все задачи на работе - это Problem-Solving. Только в жизни мы можем тратить на это большую часть времени, оптимизировать решение, долго обдумывать. А на собеседовании на это дается намного меньше времени. Поэтому при решении таких задач важно не волноваться и сосредоточиться на проблеме, которую нужно решить.</p>
70
<p>Фактически все задачи на работе - это Problem-Solving. Только в жизни мы можем тратить на это большую часть времени, оптимизировать решение, долго обдумывать. А на собеседовании на это дается намного меньше времени. Поэтому при решении таких задач важно не волноваться и сосредоточиться на проблеме, которую нужно решить.</p>
71
<h4>Написание кода</h4>
71
<h4>Написание кода</h4>
72
<p>Чем меньше у вас опыта, тем выше вероятность того, что вас попросят написать код. Обычно просят написать его на листочке или в среде подобной<a>repl.it</a>. На задачу дают 10-20 минут. Примеры:</p>
72
<p>Чем меньше у вас опыта, тем выше вероятность того, что вас попросят написать код. Обычно просят написать его на листочке или в среде подобной<a>repl.it</a>. На задачу дают 10-20 минут. Примеры:</p>
73
<ul><li>напишите программу, которая выводит на экран числа от 1 до 100. При этом вместо чисел, кратных трем, программа должна выводить слово "Fizz", а вместо чисел, кратных пяти, - слово "Buzz". Если число кратно и 3, и 5, то программа должна выводить слово "FizzBuzz".</li>
73
<ul><li>напишите программу, которая выводит на экран числа от 1 до 100. При этом вместо чисел, кратных трем, программа должна выводить слово "Fizz", а вместо чисел, кратных пяти, - слово "Buzz". Если число кратно и 3, и 5, то программа должна выводить слово "FizzBuzz".</li>
74
<li>напишите программу, которая переворачивает строку. Предложите несколько способов.</li>
74
<li>напишите программу, которая переворачивает строку. Предложите несколько способов.</li>
75
<li>напишите программу, которая проверяет сбалансированность скобок в строке.</li>
75
<li>напишите программу, которая проверяет сбалансированность скобок в строке.</li>
76
<li>реализуйте программу, которая удаляет директорию со всеми вложенными файлами и директориями - задача на рекурсию.</li>
76
<li>реализуйте программу, которая удаляет директорию со всеми вложенными файлами и директориями - задача на рекурсию.</li>
77
</ul><p>Во время решения могут попросить рассуждать над задачей вслух. Собеседующий хочет проследить за вашим ходом мыслей.</p>
77
</ul><p>Во время решения могут попросить рассуждать над задачей вслух. Собеседующий хочет проследить за вашим ходом мыслей.</p>
78
<p>Эти задачи показывают насколько у интервьюируемого хорошо с логикой, алгоритмическим мышлением, как он владеет базовыми конструкциями языка. Они позволяют отсеивать слабых кандидатов, но не помогают определить сильных.</p>
78
<p>Эти задачи показывают насколько у интервьюируемого хорошо с логикой, алгоритмическим мышлением, как он владеет базовыми конструкциями языка. Они позволяют отсеивать слабых кандидатов, но не помогают определить сильных.</p>
79
<p>В интернете созданы десятки<a>сервисов</a>, которые специализируются на подобных задачах. Обязательно включите их в свой список для подготовки. Научитесь проходить задачи уровня easy с закрытыми глазами. Этот навык поможет не только для прохождения собеседований, но и в реальном программировании.</p>
79
<p>В интернете созданы десятки<a>сервисов</a>, которые специализируются на подобных задачах. Обязательно включите их в свой список для подготовки. Научитесь проходить задачи уровня easy с закрытыми глазами. Этот навык поможет не только для прохождения собеседований, но и в реальном программировании.</p>
80
<p>Рекомендации:</p>
80
<p>Рекомендации:</p>
81
<ul><li>потренируйтесь писать код на листочке</li>
81
<ul><li>потренируйтесь писать код на листочке</li>
82
<li>попробуйте рассуждать вслух во время решения алгоритмических задач</li>
82
<li>попробуйте рассуждать вслух во время решения алгоритмических задач</li>
83
<li>найдите удобную платформу и оттачивайте мастерство</li>
83
<li>найдите удобную платформу и оттачивайте мастерство</li>
84
</ul><h2>Вывод</h2>
84
</ul><h2>Вывод</h2>
85
<p>В этом уроке мы разобрались, как программистам готовиться к собеседованию, чтобы уменьшить волнение при его прохождении. Остается потренироваться и подтянуть слабые стороны. В этом случае вы увеличите вероятность успешного прохождения интервью. В дополнительных материалах мы поделились полезными ссылками, которые помогут лучше подготовиться к интервью.</p>
85
<p>В этом уроке мы разобрались, как программистам готовиться к собеседованию, чтобы уменьшить волнение при его прохождении. Остается потренироваться и подтянуть слабые стороны. В этом случае вы увеличите вероятность успешного прохождения интервью. В дополнительных материалах мы поделились полезными ссылками, которые помогут лучше подготовиться к интервью.</p>