Программирование — это прикладная область, в которой успех приходит через практику. Чем больше задач вы решаете, тем увереннее становитесь в профессии. Это особенно важно не только для профессионального роста, но и для успешного прохождения собеседований и выполнения тестовых заданий. Многие компании включают программные задачи в процесс отбора, чтобы оценить уровень навыков кандидата.
В этой статье мы расскажем, с какими вопросами и заданиями вы можете столкнуться при приеме на работу.
Примеры тестовых заданий для новичков
Перечислим примеры задач и вопросов для начинающих программистов, которые могут встретиться на собеседованиях и в тестовых заданиях.
Задание 1. Что выведет на экран этот код?
function b(x, y, a) { arguments[2] = 10; alert(a); } b(1, 2, 3);
Ответ: Значение 10. Функция b содержит три аргумента, их индексы начинаются с [0]. Получается, аргумент с индексом [2] — это функция a. В первой строке функции третьему аргументу присваивается значение 10.
Задание 2. Объясните, в каком порядке выполняются эти скрипты. Почему именно так?
<script async src="script-1.js"></script> // Время загрузки скрипта 1.5s <script src="script-2.js"></script> // Время загрузки скрипта 1s <script defer src="script-3.js"></script> // Время загрузки скрипта 3s <script defer src="script-4.js"></script> // Время загрузки скрипта 1.5s <script src="script-5.js"></script> // Время загрузки скрипта 2s <script async src="script-6.js"></script> // Время загрузки скрипта 1s <script defer src="script-7.js"></script> // Время загрузки скрипта 0.1s
Ответ: 2 — 6 — 1 — 5 — 3 — 4 — 7. Когда браузер загружает HTML и доходит до тега <script>…</script>, он не может больше выстраивать DOM. Сначала ему нужно выполнить скрипт. С внешними скриптами <script>…</script> то же самое: браузеру нужно подождать, пока скрипт загрузится, и только после этого обрабатывать остальную страницу.
Рассмотрим функции подробнее:
- async — порядок загрузки (что первым загрузится, то и сработает). Выполняется до полной загрузки страницы, если скрипты небольшие либо хранятся в кэше, а документ объемный.
- defer — порядок документа (расположение в документе). Выполняется после загрузки и обработки документа перед DOMContentLoaded.
Таким образом, сначала выполнится второй скрипт, потому что он первый в очереди и по скорости загрузки. Затем шестой: он загружается с такой же скоростью — за одну секунду. Асинхронная загрузка — без очереди, первый скрипт загружается полторы секунды и выполняется после загрузки. Далее — третий, четвертый, пятый и седьмой скрипты. Они загружаются в конце и в порядке очереди размещения в DOM.
Задание 3. Что выведет на экран этот код?
public class Main { public static void main(String[] args) { int x = 5; if (x == 5) System.out.println("X is 5"); else System.out.println("X is not 5"); } }
Ответ: Так как условие x == 5 верно, выведется X is 5.
Задание 4. Что произойдет при компиляции этого кода на Java?
public class Main { public static void main(String[] args) { int x = 5 / 0; System.out.println(x); } }
Ответ: Будет выброшено исключение ArithmeticException при попытке деления на ноль.
Задание 5. Каков будет результат выполнения кода на Java?
public class Main { public static void main(String[] args) { int num = 10; while (num > 0) { System.out.println(num); num--; } } }
Ответ: На экране выведутся числа от 10 до 1.
Задание 6. Корректно ли работает данный код на Java?
public class Main { public static void main(String[] args) { int[] arr = {1, 2, 3}; System.out.println(arr[3]); } }
Ответ: Нет, будет вызвано исключение ArrayIndexOutOfBoundsException, так как в массиве нет третьего элемента.
Задание 7. Что не так в этом коде на C++?
operator int() const { return *this; }
Ответ: Данная функция вызовет рекурсию.
Задание 8. Напишите программу на Java. Она должна считывать массив целых чисел и выводить на экран их сумму и среднее арифметическое.
Ответ:
Чтобы создать экземпляр для считывания массива данных, используйте BufferedReader или Scanner. Для вычисления суммы и среднего арифметического — цикл for.
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("Enter the number of elements in the array: "); int n = scanner.nextInt(); int[] numbers = new int[n]; for (int i = 0; i < n; i++) { System.out.print("Enter element " + (i + 1) + ": "); numbers[i] = scanner.nextInt(); } int sum = 0; for (int i : numbers) { sum += i; } double average = (double) sum / n; System.out.println("Sum: " + sum); System.out.println("Average: " + average); } }
Задание 9. Измените порядок элементов, не используя классы.
Ответ:
Есть несколько путей решения такой задачи, но лучше выбрать самый очевидный и простой. Так вы точно не запутаетесь и сможете выполнить задание быстро.
package Javatest.company; public class Reverse { public static String reverseByArray(String s) { char[] a = s.toCharArray(); char[] b = new char[a.length]; for (int i = 0; i < a.length; i++) { b[(a.length - 1) - i] = a[i]; } return new String(b); } public static void main(String[] args) { String string = "Java test"; System.out.println(reverseByArray(string)); } }
Задание 10. Напишите программу для вывода чисел Фибоначчи.
Ответ:
Числа Фибоначчи — последовательность, в которой каждое следующее число после единицы — это сумма двух предшествующих ему чисел. Например: 1, 1, 2, 3, 5, 8 и так далее.
package javatest.company; import java.util.Scanner; public class Main { public static void main(String args[]) { System.out.println("Enter number upto which Fibonacci series to print: "); int number = new Scanner(System.in).nextInt(); System.out.println("Fibonacci series upto " + number +" numbers : "); for(int i=1; i<=number; i++){ System.out.print(fibonacci2(i) +" "); } } public static int fibonacci(int number){ if(number == 1 || number == 2){ return 1; } return fibonacci(number-1) + fibonacci(number -2); } public static int fibonacci2(int number){ if(number == 1 || number == 2){ return 1; } int fibo1=1, fibo2=1, fibonacci=1; for(int i= 3; i<= number; i++){ fibonacci = fibo1 + fibo2; fibo1 = fibo2; fibo2 = fibonacci; } return fibonacci; } }
Задание 11. Объясните, что такое бинарное дерево поиска и где оно применяется.
Часто во время собеседований проверяют теоретические знания, поэтому просят объяснить термин или суть какого-то явления.
Ответ:
Бинарное дерево поиска — это массив данных, где каждый узел содержит ключ (значение), а также ссылки на два других узла: левый и правый. Ключи в левом всегда меньше ключа самого узла, а ключи в правом — всегда больше. Представьте телефонный справочник: чтобы найти номер, вы просматриваете страницы по алфавиту. Бинарное дерево работает по тому же принципу, только вместо страниц — узлы дерева, а вместо букв — ключи.
Бинарные деревья поиска используются в самых разных сферах: от баз данных и систем поиска до создания других структур данных, таких как очереди приоритетов или множества.
Задание 12. Расскажите, что такое рекурсия.
Ответ:
Рекурсия — это процесс, когда функция вызывает саму себя. Визуально это можно представить так: вы стоите перед зеркалом, а в зеркале тоже есть зеркало, в нем тоже есть зеркало и так далее. Рекурсия работает по такому же принципу: функция вызывает саму себя, пока не достигнет определенного условия.
Задание 13. Расскажите, чем различаются двусвязный и односвязный список.
Еще одно часто встречающееся задание — объяснить разницу между двумя терминами.
Ответ:
Разница между двусвязным и односвязным списком заключается в связи узлов между собой. Односвязный список — это линейная структура, в которой каждый узел содержит данные и ссылку на следующий узел в списке. Двусвязный список также является линейной структурой, но каждый узел в нем содержит ссылку на следующий и предыдущий узлы в списке.
Задание 14. Объясните, в чем разница между стеком (Stack) и очередью (Queue).
Ответ:
У стека и очереди нет свободного доступа ко всем элементам структуры данных — в этом их схожесть. А основное отличие в том, что стек — структура LIFO: в свободном доступе только последний добавленный элемент. Очередь же относится к FIFO: в свободном доступе только первый добавленный элемент.
Задание 15. Объясните младшекласснику, что такое база данных.
Хороший способ понять, насколько хорошо человек разбирается в теме, — попросить его объяснить сложное понятие ребенку. Работодатели знают об этом, поэтому не удивляйтесь, если вас попросят сделать что-то подобное.
Ответ:
Представь себе большую библиотеку, но вместо книг там хранятся все твои любимые игрушки. Ты можешь легко найти машинку, куклу или конструктор, потому что каждый предмет имеет свое место и ты знаешь, где его искать.
База данных — это как такая большая библиотека, но хранятся там не игрушки или книги, а информация. Вместо того чтобы искать машинку или куклу, ты можешь найти сведения о друзьях, любимых мультфильмах, животных.
Когда хочешь отыскать что-то, достаточно задать вопрос компьютеру, а он, как библиотекарь, найдет нужную информацию в этом большом массиве данных.
Задание 16. Напишите баг-репорт для микроволновой печи, которая не греет еду.
Такие задания попадаются часто: нужно написать отчет об ошибке в работе простого прибора. Хотя подобные задачи относятся к тестированию, программистам их тоже предлагают.
Ответ:
Название: Микроволновая печь не нагревает пищу
Описание: Микроволновая печь не нагревает пищу. При включении устройства и выборе режима работы запускается таймер, но еда не становится горячей.
Шаги по воспроизведению:
- Подключить микроволновую печь к сети.
- Поставить в микроволновую печь блюдо с едой.
- Выбрать режим работы и установить таймер.
- Нажать кнопку «Старт».
Ожидаемый результат: Еда должна нагреться до заданной температуры за установленное время.
Фактический результат: Еда не нагревается, остается холодной.
Платформы с задачами по программированию
Ниже — несколько сайтов, где можно найти много задач по программированию, которые помогут отточить навыки и подготовиться к тестовым заданиям.
Codeforces
Популярная площадка с тренировками, задачами, соревнованиями и другими активностями для разработчиков. Codeforces — одна из крупнейших баз заданий, также здесь развитое комьюнити. При необходимости можно обратиться к опытному разработчику за помощью, и вам с большой вероятностью ответят.

All Cups
Платформа от команды VK для начинающих и опытных IT-специалистов. Здесь можно решать задачи, изучать полезные материалы и соревноваться с другими программистами.
На All Cups есть задания по спортивному программированию, ML-learning, нейросетям, системному администрированию. Это один из немногих русскоязычных сайтов, который может конкурировать с зарубежными ресурсами по объему материалов.
Kaggle
Здесь много задач для тех, кто работает с большими данными и машинным обучением. Кроме заданий, на сайте есть полезные материалы — изучайте их, чтобы совершенствоваться в профессии. Также можно не просто решать задачи, но и участвовать в соревнованиях с другими разработчиками.

Codewars
На этом сайте собраны задачи и челленджи на разные темы — от языков программирования до алгоритмов. Сможете прокачать разные навыки разработки, а также подтянуть теорию благодаря блогу с полезными материалами.
LeetCode
Сборник задач, который особенно любят программисты, стремящиеся работать в крупных компаниях типа Amazon, Apple, Netflix и Google. Главная особенность сайта в том, что задания максимально приближены к тем, что встречаются на собеседованиях.

Советы по прохождению собеседований для новичков
Если хотите успешно пройти собеседование, правильно выполнить тестовое задание и получить оффер, учитывайте такие рекомендации:
- Если не знаете, как решить задачу, не паникуйте. Предложите разные варианты решения, чтобы показать ваш ход мыслей. Работодатель посмотрит, как вы пытаетесь выполнить задачу. К тому же так вы продемонстрируете, что не боитесь сложных вызовов.
- Постарайтесь не волноваться. Работодатель или HR понимают, что вы не специалист уровня middle или senior, поэтому не будут давать слишком сложные задачи.
- Задавайте вопросы. Это вообще один из главных навыков джуна, который хочет развиваться в профессии. Еще на собеседовании стоит задавать вопросы, чтобы лучше понять задачу, а значит, предложить верное решение.
После выполнения тестового задания просите обратную связь. Тем более если не удалось получить работу. Так вы поймете свои недочеты и сможете исправить их, чтобы не допустить в следующий раз.
Полезные статьи по теме
- Репозиторий-сборник тестовых заданий для самостоятельного выполнения от разных IT-компаний