Skip to content
belyiz edited this page Oct 21, 2021 · 59 revisions

Привет!

Это учебный репозиторий для проведения курсов программирования на Java. В данном Wiki размещаются конспекты тем курса и различные вспомогательные материалы и инструкции. В исходном коде этого репозитория можно найти домашние задания для большинства тем.

Всегда буду рад получить любую обратную связь о курсе.

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

Одна тема на один астрономический час (60 минут)

Блок 0. Введение

  1. О курсе
  2. О программе курса
  3. Технические требования

Тема 1. Введение в Java

  1. Общая информация о Java
  2. Hello World приложение
    1. Создание проекта в Intellij IDEA
    2. Checkout GItHub репозитория
    3. Запуск и обзор Hello World приложения
  3. Общая информация о системах контроля версий

Блок 1. Процедурное программирование

  1. Переменные и константы
    1. Создание переменных
  2. Обзор типов данных в Java
    1. Примитивные типы данных
      1. Целочисленные типы
      2. Дробные числа
      3. Логический тип
    2. Ссылочные типы данных
    3. Строки
  3. Массивы
  1. Арифметические операторы
  2. Битовые операторы
  3. Операторы сравнения
  4. Логические операторы
  5. Операторы присваивания
  6. Оператор instanceOf
  7. Тернарный оператор
  1. Условный оператор if
  2. Условный оператор switch
  3. Циклы
    1. Цикл for
    2. Цикл for-each
    3. Циклы while и do-while
    4. Операторы break и continue
  1. Операции со строками
    1. Соединение строк
    2. Сравнение строк
  2. Список литературы/курсов

Блок 2. Основы ООП

  1. Основные понятия ООП
    1. Класс
    2. Конструктор
  2. Инкапсуляция, наследование, полиморфизм
    1. Инкапсуляция
    2. Наследование
    3. Полиморфизм
      1. Переопределение
      2. Перегрузка
      3. Параметрический полиморфизм
  1. Метод toString
  2. Методы hashCode и equals
    1. Метод equals
    2. Метод hashCode
  3. Метод getClass
  4. Методы wait и notify
  5. Метод finalize
  6. Метод clone
  7. Список литературы/курсов

Тема 8. Инкапсуляция

  1. Пакеты
    1. Импорт
  2. Модификаторы доступа
    1. Доступы к классам
    2. Геттеры и сеттеры
      1. Геттеры
      2. Сеттеры
  3. Вложенные классы

Тема 9. Наследование и static

  1. Наследование полей и методов
  2. Запрет наследования
  3. Неизменяемые классы
  4. Статичные поля и методы

Тема 10. Полиморфизм

  1. Перегрузка и переопределение методов
  2. Абстрактные классы м методы
  3. Интерфейсы
    1. Методы по умолчанию
    2. Анонимные классы
  4. Параметрический полиморфизм (generics)

Тема 11. Параметрический полиморфизм (Generics)

  1. Что такое дженерики и зачем они нужны
  2. Дженерик-классы. Создание собственных классов.
  3. Дженерик-методы. Примеры работы, описание

Тема 12. Паттерны

  1. Паттерн Builder
  2. Паттерн Singleton

Тема 13. Java Code Convention

  1. Не игнорируйте исключения
  2. Комментарии/Javadoc
  3. Короткие методы
  4. Локальные переменные
  5. Импорты
  6. Отступы
  7. Названия полей и методов
  8. Фигурные скобки
  9. Длина строки
  10. Согласованность
  11. Список литературы/курсов

Блок 3. Коллекции

  1. Обзор Collections Framework
  2. Iterator
  3. Список литературы/курсов

Тема 15. Списки

  1. ArrayList
  2. LinkedList
  3. Сравнение ArrayList и LinkedList
  4. Список литературы/курсов

Тема 16. Очереди

Тема 17. Карты

Тема 18. Множества

Блок 4. Spring

  1. Создание Spring-проекта
  2. Обзор возможностей фреймворка
  3. Модули Spring

Тема 14. HTTP и REST

  1. Обзор протокола HTTP
  2. Обзор подходов построения REST API
  3. Форматы данных (JSON, XML, YAML)

Тема 15. Spring MVC

  1. Паттерн MVC
  2. Spring-контроллеры
  3. Шаблонизаторы
  4. Обзор и подключение Swagger
  5. Обработка ошибок

Тема 16. Spring Data JPA

  1. Общая информация о JPA и ORM
  2. Подключение к базе данных
  3. Spring-репозитории
  4. CRUD-операции

Тема 17. Кеширование

  1. Обзор вариантов кеширования
  2. Сложные запросы к БД
  3. Обзор возможностей Spring Cache

Блок 5. Stream API

Тема 18. Лямбды и указатели на методы

  1. Обзор функциональности
  2. Сравнение анонимных классов, лямбд и указателей на методы
  3. Лямбды и указатели на методы как параметры методов и поля классов
  4. Пул лямбд

Тема 19. Стримы

  1. Обзор функциональности
  2. Spliterator
  3. Характеристики spliterator'а
  4. Работа со стримами

Блок 6. Ввод/вывод

Тема 21. Исключения

  1. Зачем нужны исключения?
    1. Исключения в Java
  2. Типы исключений
    1. Непроверяемые исключения
    2. Проверяемые исключения
  3. Генерация исключений
    1. Создание собственных классов-исключений
  4. Обработка исключений
    1. Конструкция try-catch-finally
    2. Конструкция try-with-resources
    3. Наследование методов бросающих исключения
    4. Проброс исключений без обработки
  5. Список литературы/курсов

Тема 22. Работа с файлами

  • Потоки ввода и вывода Try-with-resources
  • Чтение файла
  • Запись в файл
  • Создание и удаление файлов
  • Временные файлы

Тема 23. Работа с консолью и логами

  • Ввод и вывод на консоль
  • Логирование
  • Форматирование строк

Блок 7. Более продвинутые возможности языка

Тема 24. Аннотации

  • Обзор функциональности аннотаций
  • Создание аннотаций
  • Примеры использования

Тема 25. Дженерики

  • Обзор функциональности дженериков
  • Дженерик-классы и методы
  • Примеры использования

Тема 26. Рефлексия

  • Рефлексия в Java
  • Работа с объектом Class
  • Примеры использования

Блок 8. Модель памяти

Тема 27. Структура памяти

  • Стэк
  • Куча
  • GC

Тема 28. Ссылки

  • Сильные 26
  • Слабые и мягкие ссылки
  • Утечки памяти

Блок 9. Многопоточность

Тема 29. Введение в многопоточность

  • Многопоточность в Java
  • Создание потоков
  • Жизненный цикл потоков

Тема 30. Конкуренция

  • Работа с переменными в многопоточной среде
  • volatile и synchronized модификаторы
  • synchronized ## Блок, мониторы
  • Прерывание потоков

Тема 31. Работа с потоками

  • Пул потоков
  • Fork-join пул

Clone this wiki locally