Этот репозиторий представляет собой структурированную коллекцию из около 100 практических задач по фундаментальному программированию на языке Java, регулярно используемых на live coding секциях собеседований на позицию Automation QA Engineer (AQA).
Цель проекта - предоставить Automation QA инженерам (и кандидатам на эту должность) набор задач, который поможет эффективно отработать и закрепить ключевые навыки, необходимые для успешного прохождения технических интервью и решения повседневных задач в автоматизации тестирования.
Задачи охватывают следующие фундаментальные темы:
- Работа со строками
- Коллекции (List, Set, Map)
- Массивы
- Циклы и условия
- Базовые алгоритмы
- Объектно-ориентированное программирование (ООП)
- Структуры данных
- Обработка данных (файлы, форматы данных)
Проект структурирован следующим образом:
README.md
: Общая информация и инструкция по использованию.TASKS_RU.md
: Основной файл с описанием задач, оглавлением, примерами использования и ссылками на готовые Java-решения.src/main/java/
: Исходный код решений, сгруппированный по тематическим пакетам:algorithms
: Базовые алгоритмы, логика, математика.arrays_lists
: Задачи на работу с массивами и списками.data_structures
: Реализация и применение структур данных.dp
: Динамическое программирование.files_io_formats
: Ввод/вывод, работа с файлами, CSV, Base64, JSON.graphs_matrices
: Задачи на графы и матрицы.linked_lists
: Связанные списки.maps_sets
: Задачи с Map и Set.oop_design
: ООП, проектирование классов, equals/hashCode, неизменяемость, клонирование объектов.sorting_searching
: Алгоритмы сортировки и поиска.strings
: Обработка строк.system_concepts
: Задачи по общим концепциям (без полного кода).trees
: Задачи на деревья.
src/test/java/
: Директория для написания и запуска модульных тестов..gitignore
: Игнорирование ненужных файлов и директорий для Git.
- Изучите условия задач: Начните с ознакомления с задачами в файле
TASKS_RU.md
. Используйте оглавление для быстрого поиска интересующих задач. - Практикуйте самостоятельное решение: Сначала попробуйте решить задачу самостоятельно, не подглядывая в решение.
- Проверяйте себя: Сравните своё решение с предоставленным в соответствующем тематическом пакете (
src/main/java/...
). Например, для задачи FizzBuzz решение можно найти вsrc/main/java/.../algorithms/FizzBuzz.java
. - Запускайте демонстрации: Большинство классов решений включают метод
main
для демонстрации работы программы. Запускайте их в своей IDE для лучшего понимания. - Пишите модульные тесты: Попробуйте написать тесты для проверки правильности решений. Это поможет глубже понять принципы тестирования и улучшить навыки разработки тестов.