Skip to content

program

Sergey Yermochenko edited this page Sep 12, 2024 · 4 revisions

Программа курса

  • 1. Основы языка программирования Java.
    • 1.1. Понятие JVM: байт-код, структура памяти (Stack, Heap), сборщик мусора.
    • 1.2. Типы данных: примитивные и ссылочные типы.
    • 1.3. Переменные и ключевое слово var.
    • 1.4. Операторы. Выражения. Управляющие конструкции (ветвления и циклы).
    • 1.5. Классы-оболочки.
    • 1.6. Массивы.
  • 2. Основы объектно-ориентированного программирования.
    • 2.1. Классы. Объекты.
    • 2.2. Пакеты.
    • 2.3. Поля.
    • 2.4. Модификатор final для полей, параметров, локальных переменных.
    • 2.5. Методы: передача параметров в методы, возврат значений из методов.
    • 2.6. Методы с переменным числом параметров.
    • 2.7. Ключевое слово this. Статические поля и методы.
    • 2.8. Блоки инициализации и статические блоки инициализации.
    • 2.9. Конструкторы.
    • 2.10. Использование ключевого слова this в конструкторах.
    • 2.11. Инкапсуляция. Области видимости и модификаторы доступа. Get-теры и set-теры.
    • 2.12. Immutable-классы.
    • 2.13. JavaBeans.
    • 2.14. Наследование.
    • 2.15. Наследование vs композиция.
    • 2.16. Приведение типов в иерархии наследования.
    • 2.17. Класс Object как вершина иерархии классов в Java.
    • 2.18. Оператор instanceof и метод Object.getClass().
    • 2.19. Конструкторы при наследовании.
    • 2.20. Ключевое слово super в методах и конструкторах.
    • 2.21. Полиморфизм. Перегруженные и переопределённые методы.
    • 2.22. Финальные методы и классы.
    • 2.23. Перегрузка метода Object.toString().
    • 2.24. Перегрузка методов Object.equals() и Object.hashCode().
    • 2.25. Перегрузка метода Object.clone().
    • 2.26. Абстрактные классы.
    • 2.27. Интерфейсы.
    • 2.28. Анонимные классы.
    • 2.29. Внутренние и вложенные классы.
    • 2.30. Функциональные интерфейсы.
    • 2.31. Лямбда выражения.
    • 2.32. Ссылки на методы.
    • 2.33. Перечисления.
  • 3. Принципы SOLID.
    • 3.1. Single Responsibility Principle - Принцип единственной ответственности.
    • 3.2. Open-Closed Principle - Принцип открытости/закрытости.
    • 3.3. Liskov Substitution Principle - Принцип подстановки Лисков.
    • 3.4. Interface Segregation Principle - Принцип разделения интерфейса.
    • 3.5. Dependency Inversion Principle - Принцип инверсии зависимостей.
    • 3.6. Многослойная архитектура.
    • 3.7. Инверсия зависимостей и внедрение зависимостей.
    • 3.8. Шаблоны проектирования Factory Method, Abstract Factory.
    • 3.9. Шаблон проектирования Builder.
    • 3.10. Шаблон проектирования ServiceLocator.
    • 3.11. Понятие IoC-контейнера.
  • 4. Обработка исключений.
    • 4.1. Иерархия исключений.
    • 4.2. Исключения vs ошибки.
    • 4.3. Проверяемые и непроверяемые исключения.
    • 4.4. Обработка исключений. Блок try-catch-finally.
    • 4.5. Объявление генерируемых методом исключений с помощью ключевого слова throws.
    • 4.6. Генерация исключительной ситуации с помощью ключевого слова throw.
    • 4.7. Собственные исключения.
    • 4.8. Пробрасывание и маскирование исключений.
  • 5. Maven.
  • 6. Модульное тестирование.
    • 6.1. Библиотека JUnit. Тестовые методы и аннотация @Test. Утверждения и класс Assertions.
    • 6.2. Тестирование возникновения исключений.
    • 6.3. Изолирование модульных тестов.
    • 6.4. Test Driven Development.
    • 6.5. Пирамида тестирования.
  • 7. Журналирование.
    • 7.1. Библиотека Log4j. Основные концепции.
    • 7.2. Конфигурирование.
    • 7.3. Уровни логгирования.
    • 7.4. Классы Appender и Layout.
  • 8. Обработка строк.
    • 8.1. Класс String. Особенности хранения. Строковые литералы.
    • 8.2. Классы StringBuilder и StringBuffer.
    • 8.3. Регулярные выражения. Классы Pattern и Matcher.
    • 8.4. Локализация и интернационализация. Парсинг и форматирование чисел, дат и времени.
    • 8.5. Обработка дат и времени.
  • 9. Коллекции.
    • 9.1. Обобщённые классы и обобщённые методы.
    • 9.2. Ограничение на обобщённые типы.
    • 9.3. Символ ? при описании обобщённых методов.
    • 9.4. Интерфейсы Iterator и Iterable. Итерация объектов с помощью цикла for.
    • 9.5. Интерфейсы Collection, List, Queue и Deque. Классы ArrayList, LinkedList и ArrayDeque.
    • 9.6. Интерфейсы Comparable и Comparator и алгоритмы класса Collections.
    • 9.7. Интерфейсы Set и Map. Классы HashSet и HashMap.
    • 9.8. Особенности переопределения методов equals() и hashCode().
    • 9.9. Особенности переопределения методов compare() и compareTo().
    • 9.10. Потоковое API.
    • 9.11. Функциональные интерфейсы, используемые в потоковом API.
    • 9.12. Класс Optional.
  • 10. Потоковый ввод/вывод.
    • 10.1. Иерархия потоковых классов. Байтовые и символьные потоки.
    • 10.2. Чтение и запись файлов.
    • 10.3. Строковые потоки.
    • 10.4. Буферизация.
    • 10.5. Конвертация потоков.
    • 10.6. Блок try-with-resources.
    • 10.7. Сериализация.
    • 10.8. Форматированный ввод и вывод.
    • 10.9. Класс File.
  • 11. Обработка данных в формате JSON.
    • 11.1. Формат JSON.
    • 11.2. Библиотека Jackson. Преобразование Java-объектов в JSON.
    • 11.3. Преобразование JSON в Java-объекты, в том числе в коллекции объектов.
  • 12. Реляционные базы данных и SQL.
    • 12.1. СУБД PostgreSQL.
    • 12.2. Язык SQL: DDL, DML.
    • 12.3. Понятие транзакции. Принципы ACID. TCL.
  • 13. JDBC.
    • 13.1. Понятие драйвера. Установка соединения с СУБД. Интерфейс Connection.
    • 13.2. Запросы. Интерфейсы Statement и PreparedStatement. Выполнение запросов.
    • 13.3. Обработка результатов запроса. Интерфейс ResultSet.
    • 13.4. Соответствие типов данных Java и типов данных SQL.
    • 13.5. Работа с транзакциями в JDBC.
    • 13.6. Пул соединений.
    • 13.7. Шаблон проектирования Data Access Object.
    • 13.8. Переменные потока и класс ThreadLocal.
  • 14. Servlet API.
    • 14.1. Понятие сервлета и его жизненный цикл.
    • 14.2. Контейнер сервлетов Tomcat, настройка и запуск.
    • 14.3. Развёртывание сервлетов в контейнере сервлетов.
    • 14.4. Дескриптор развёртывания. Аннотация @WebServlet.
    • 14.5. Методы HTTP и их обработка в сервлетах.
    • 14.6. Интерфейсы HttpServletRequest и HttpServletResponse.
    • 14.7. Понятие HTTP статуса. Методы setStatus(), sendRedirect() и sendError().
    • 14.8. Обработка данных HTML-форм.
    • 14.9. Диспетчеризация запросов: include() и forward().
    • 14.10. Передача данных между сервлетами с помощью атрибутов.
    • 14.11. Шаблон проектирования Model-View-Controller.
  • 15. Java Server Pages (JSP).
    • 15.1. Понятие JSP и её жизненный цикл.
    • 15.2. JSP-теги.
    • 15.3. Expression Language (EL) и библиотека JSP Standard Tag Library (JSTL).
    • 15.4. Работа с атрибутами запроса.
    • 15.5. Создание пользовательских тегов.
    • 15.6. Шаблон проектирования Command.
  • 16. HTML. CSS.
  • 17. Сессии. Фильтры. События.
    • 17.1. Понятие сессии и её жизненный цикл. Настройка сессий.
    • 17.2. Аутентификация на основе сессий.
    • 17.3. Cookies.
    • 17.4. Фильтры. Фильтр для перекодирования запроса.
    • 17.5. Фильтр для авторизации.
    • 17.6. События и обработчики событий. Инициализация приложения. События входа в систему и выхода из системы.
  • 18. REST.
    • 18.1. Понятие REST.
    • 18.2. Применение методов HTTP при проектировании REST API.
    • 18.3. Использование HTTP статусов в REST.
    • 18.4. Тестирование REST API в Postman.
  • 19. JavaScript.
    • 19.1. Базовые понятия JavaScript.
    • 19.2. Работа с DOM.
    • 19.3. Функция как объект.
    • 19.4. Синхронные и асинхронные методы.
    • 19.5. Понятие Promise.
    • 19.6. Ключевые слова async и await.
    • 19.7. Fetch API и работа с REST API.
  • 20. Spring Framework.
    • 20.1. Основные понятия Spring Framework.
    • 20.2. Spring MVC.
    • 20.3. Spring Data JPA.

Clone this wiki locally