🎓

Подготовка к Java-сертификации профессионального уровня (OCP)

Информационные технологии
Обложка курса Купить за 8400 ₽
  • Уроков: 170
  • Сложность: normal
  • Аудитория: Курс рассчитан прежде всего на тех, кто желает сдать сертификационный экзамен ПРОФЕССИОНАЛЬНОГО уровня и/или подготовиться к техническому интервью на позицию Java-разработчика вплоть до уровня Middle.
Информационные технологии Платный
Курс направлен на сдачу сертификационного экзамена Oracle Certified Professional, Java SE 8 Programmer II (1Z0-809). Он также отлично подойдет в качестве пособия для самоподготовки в целях дальнейшего развития, углубления и совершенствования навыков Java-программирования вплоть до уровня Middle.

Тематика курса охватывает фундаментальный API, применяемый при разработке объектно-ориентированных Java-приложений. Кроме того, курс затрагивает и кое-какие аспекты создания программ для взаимодействия с базами данных по технологии JDBC.

Курс предназначен в первую очередь для приобретения практических навыков и рассчитан на слушателей, не имеющих возможность участвовать в очных занятиях. Структура и методология курса обеспечивают контроль качества усвоения учебного материала на каждом этапе.

По завершении данного курса слушатели будут в состоянии:

  • создавать Java-приложения на основе продвинутых объектно-ориентированных механизмов инкапсуляции, наследования и полиморфизма
  • пользоваться структурами данных из Java Collections Framework
  • применять фильтры и выполнять поиск нужных элементов в коллекциях с помощью лямбда-выражений
  • имплементировать I/O-функционал для чтения и записи файлов, в т.ч. текстовых
  • работать с файловыми системами с помощью средств NIO.2
  • работать с базами данных в рамках механизма CRUD-операций (т.е. создание, чтение, актуализация и удаление записей) посредством JDBC API
  • создавать высокопроизводительные многопоточные приложения, избегая при этом взаимной блокировки и недоступа к ресурсам
  • пользоваться лямбда-выражениями для параллелизации операций
  • успешно пройти ОСР-сертификацию по 8-й версии Java (Oracle Certified Professional, Java SE8 Programmer II, экзамен 1Z0-809)
  • достойно показать себя на технических интервью при приеме на работу.

Для закрепления теоретических знаний в курсе предусмотрены:

  • лабораторный практикум, состоящий из 46 лабораторных работ общим числом;
  • контрольные опросы по пройденным темам (~380 вопросов) с последующим разбором экзаменационных задач (блок из 100 тестов);
  • самостоятельная работа по отладке / рефакторингу программ из лабораторного практикума и решению тренировочных задач.

Общий объем видеолекций: более 35 часов

Ориентировочная продолжительность: 10 недель, если выделять от 6 до 10 часов в неделю (с учетом самостоятельной работы) в зависимости от текущей тематики.

Тематика учебной программы:

===== 1-я часть =====

Вступительные замечания

  • Знай своего врага
  • Методические рекомендации
  • Обзор сторонних ресурсов

Группа 1: Фундаментальный дизайн Java-классов

  • Механизм инкапсуляции
  • Механизм наследования, в т.ч. модификаторы доступа и композиционный синтаксис
  • Тонкости полиморфизма
  • Переопределение методов hashCode(), equals() и toString() из класса Object
  • Создание и применение немутирующих и Singleton-классов
  • Применение ключевого слова static к блокам инициализации, переменным, методам и классам

Группа 2: Углубленный дизайн Java-классов

  • Разработка кода с применением абстрактных классов и методов
  • Разработка кода с применением ключевого слова final
  • Создание внутренних классов, в т.ч. вложенных, локальных и анонимных
  • Перечисляемые типы, их методы и конструкторы
  • Разработка кода, который декларирует, имплементирует и/или расширяет интерфейсы; аннотация @Override
  • Создание и применение лямбда-выражений

Группа 3: Настраиваемые типы и коллекции

  • Создание и применение настраиваемых (обобщенных) классов, т.н. Generics
  • Создание и применение объектов ArrayList, TreeSet, TreeMap и ArrayDeque
  • Интерфейсы java.util.Comparator и java.lang.Comparable
  • Стримы и фильтры
  • Итерация методом forEach() на Stream- и List-объектах
  • Интерфейс Stream и функциональные конвейеры
  • Фильтрация коллекций посредством лямбда-выражений
  • Применение ссылок на методы со Stream-объектами 

Группа 4: Лямбды и встроенные функциональные интерфейсы

  • Применение интерфейсов из пакета java.util.function, в частности Predicate, Consumer, Function и Supplier
  • Разработка кода, использующего примитивные специализации функциональных интерфейсов
  • Разработка кода, использующего бинарные версии функциональных интерфейсов
  • Разработка кода, использующего интерфейс UnaryOperator

Группа 5: Java Stream API

  • Разработка кода для извлечения данных из объекта посредством методов peek() и map(), в т.ч. примитивных специализаций метода map()
  • Поиск данных методами findFirst(), findAny(), anyMatch(), allMatch() и noneMatch()
  • Разработка кода, использующего класс Optional
  • Разработка кода, использующего методы обработки данных на Stream-объектах
  • Сортировка коллекций с применением Stream API
  • Сохранение результата в виде коллекции посредством метода collect() и сегментирование / классификация элементов по группам с помощью класса Collectors
  • Работа с методом flatMap() из Stream API

Факультативная часть (не вынесена на экзамен)

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

===== 2-я часть =====

Группа 6: Исключения и проверка инвариантов

  • Конструкции для перехвата нескольких исключений; блок finally
  • Оператор try-with-resources
  • Создание пользовательских исключений с AutoCloseable-ресурсами
  • Проверка инвариантов посредством оператора assert

Группа 7: Java SE 8 Date/Time API

  • Создание и управление событиями с привязкой к дате и времени, в т.ч. в рамках общего объекта посредством классов LocalDate, LocalTime, LocalDateTime, Instant, Period и Duration
  • Работа с датами и временем в различных часовых поясах, в т.ч. с учетом перехода на летнее/зимнее время; форматирование календарных дат и времени
  • Создание и управление событиями с привязкой к дате и времени посредством классов Instant, Period, Duration и TemporalUnit

Группа 8: Java Concurrency

  • Создание рабочих подпроцессов (threads) на базе Runnable- и Callable-объектов, и применение интерфейсов ExecutorService и Future для асинхронного исполнения задач
  • Выявление потенциальных проблем конкурентного режима, в т.ч. статическая блокировка (deadlock), зависание по недоступу к ресурсу (starvation), динамическая блокировка (livelock) и состояние гонки (race condition / data race)
  • Применение ключевого слова synchronized и пакета java.util.concurrent.atomic для управления порядком исполнения подпроцессов
  • Работа с синхронизационными примитивами, в частности, на базе интерфейса Lock и классов ReentrantLock, Condition, CyclicBarrier, Semaphore и др.
  • Организация параллелизма на базе Fork/Join Framework

===== 3-я часть =====

Группа 9: Основы ввода/вывода в Java

  • Чтение и запись через класс Console
  • Работа с классами BufferedReader, BufferedWriter, File, FileReader, FileWriter, FileInputStream, FileOutputStream, ObjectOutputStream, ObjectInputStream и PrintWriter из пакета java.io

Группа 10: Java File I/O (NIO.2)

  • Применение интерфейса Path для работы с файлами и папками
  • Применение класса Files для проверки наличия, чтения, удаления, копирования и перемещения файлов или папок, в т.ч. управление метаданными
  • Применение Stream API в тандеме с NIO.2

Группа 11: Работа с базами данных через JDBC

  • Интерфейсы, лежащие в основе JDBC, в частности, Driver, Connection, Statement и ResultSet, в т.ч. их связь с имплементацией вендором БД
  • Компоненты, необходимые для подключения к БД с использованием класса DriverManager, в т.ч. JDBC URL
  • Создание запросов и чтение результатов из БД, в т.ч. создание и надлежащее закрытие ResultSet-, Statement- и Connection-объектов, а также итерация по результатам

Группа 12: Локализация

  • Создание и изменение локали с помощью Locale-объекта
  • Создание и чтение Properties-файла
  • Формирование ResourceBundle-объекта для каждой локали и загрузка таких ресурсов в приложение
Требования:

Курсант должен уверенно владеть механизмами, идиомами и конструкциями Java как минимум в пределах курса подготовки к сдаче серт.экзамена OCA (доступен на этой же платформе).