Considering in more detail the possibilities of Java 8, hibernate, spring boot
Состоит из заданий на Java core + немного JavaEE:
Все тесты и здания запускаются с консоли, Java16+
[1] Основы. Примитивные типы
- Task1 - Написать программу, которая находит минимум из двух чисел, введенных с командной строки
[2] Основы. Конструкторы, классы обертки
- Task2 - Реализовать класс, описывающий вектор (в трёхмерном пространстве)
[3] Основы. String и пр. Object
- Task3 - Написать консольный калькулятор, умеющий производить базовые вычисления c последовательным вводом цифр и операторов.
[4] Парадигмы ООП Часть
-
Task4 - Предоставить реализацию стека и очереди (на массивах Object) с основными операциями: Очередь: Enqueue(), Dequeue(), isEmpty(), Top();
Стек: Push(), Pop(), isEmpty(), Top();
a) Добавить тесты (junit) на работоспособность очереди,стека, при удалении из пустой очереди, добавлении и т.д. б) javaDoc -
Task5 - Придумать свой пример использования абстрактной фабрики и реализовать ее (шаблоны: фабрика и абстрактная фабрика)
[5] Вариации внутренних классов + Исключения
[6] Коллекции
- Task 6 - Сделать как минимум 3 метода для поиска дубликатов. Написать тесты. Для долгих методов использовать assertTimeoutPreemptively
[7] Generics
- Task 7 - Необходимо написать класс ArrayIterator который умеет работать с массивами T[][]. Тесты
[8] Сериализация/Десериализация + Загрузчики
[9] Сборка мусора
[10] Лямбды + Stream API + VAR
- Task 8 - Написать метод, который на вход принимает текст. Метод должен посчитать частоту появления слов, и отдать массив из 10 слов которые чаще всего встретились в тексте. Если в тексте меньше 10 уникальных слов, то метод отдаст сколько есть. Если в тексте некоторые слова имеют одинаковую частоту, то отдаем их в лексикографическом порядке. Слово это любая непрерывная последовательность символов. Даже с символами точка, запятая.
[11] Optional
[12] Java Reflection API
[13] Annotations
- Task9 - Создать класс, который может выполнять тесты (рукописный junit), в качестве тестов выступают классы с наборами методов над которыми есть аннотация @DoTest - собственная аннотация.).
Из «класса-теста» вначале должен быть запущен метод с аннотацией @DoBeforeAll если такой имеется, далее запущены методы с аннотациями @DoTest, а по завершению всех тестов – метод с аннотацией @DoAfterAll.
Если что то не так то кидаем исключение.
Тесты через junit
[14] Сокеты, потоки данных
[15] Многопоточность. Основы
- Task 10 - Задача продемонстрировать каждое из возможных состояний потока. Добавление мьютекса если необходимо.
[16] Java.util.concurrent
- Task 11 - Есть банк. В нем N счетов и M клиентов.
Клиент может переводить деньги с одного счёта на другой.
Необходимо создать демона наблюдателя, который будет следить, за статусом, что денежная масса в системе постоянна, нет утечек. Денежный пул создаётся при запуске программы, он фиксирован и указывается через проперти файл.
[17] Clean Code
Для данных тем был создан отдельный проект: https://github.com/altaec23/CourseWorkJavaEE
[19] Базы данных
[20] Средства сборки
[21] Hibernate
[22] Java EE + Spring Framework
[23] Sonar
[24] Jasypt