Курс Java Pro
Після курсу Ви зможете:
- Писати мовою Java різні проєкти
- Створювати свій завантажувач класів
- Розробляти невеликі IoC-контейнери (маленький Spring)
- Писати модульні тести й працювати за TDD
- Ефективно користуватися англійською для спілкування з клієнтами та колегами
- Грамотно презентувати себе працедавцеві
Програма курсу:
Огляд мов програмування
- Огляд парадигм програмування
- Огляд сучасних мов програмування
Поняття алгоритму
- Роль алгоритму у рішенні задач
- Поняття і властивості алгоритму
- Типи алгоритмів
Базові конструкції програмування
- Поняття синтаксису і семантики мов програмування
- Змінні, типи даних, вирази і присвоювання значень змінним
- Подання даних у пам'яті комп'ютера: біти, байти і т.п.
- Найпростішие введення/виведення
- Умовні конструкції та їх різновиди
- Ітеративні конструкції (цикли)
Базові структури даних
- Одномірні масиви і робота з ними
- Двовимірні масиви і робота з ними
- Призначені для користувача об'єкти, їх властивості та методи
- Поняття асоціативного масиву і принципи роботи з ним
- Формат JSON
- Особливості роботи з рядками
- Особливості роботи з датами
Функції
- Опис функції
- Виклик функції
- Параметри функцій
- Передача параметрів з точки виклику в функцію
Побудова простого графічного інтерфейсу (GUI)
- Форми і робота з елементами управління на web-формах
- Події, обробка подій миші
Основи роботи з системою контролю версій
Загальна характеристика мови Java
- Історія мови Java
- Байт-код
- Віртуальна машина Java (JVM)
- Трансляція, інтерпретація й компіляція
- JIT-компіляція
- JDK та його структура
- Команди JDK: javac, java, appletviewer, jar (en10). Їхнє використання та параметри
- Пошук та завантаження класів
- Створення й запуск першого додатка на Java
- Вихід з програми та завершення її роботи
- Використання IDE Eclipse/NetBeans/Intellij IDEA для створення й виконання програм
Типи даних та основні операції з ними
- Алфавіт мови
- Коментарі
- Ключові слова
- Типи даних: прості (примітивні) та за посиланням
- Ідентифікатори, вибір імен ідентифікаторів
- Змінні й константи
- Оголошення та ініціалізація змінних
- Область видимості й час життя змінних
- Оператори
- Операції: арифметичні, привласнення, відносні й логічні
- Перетворення та приведення числових типів
- Пріоритет операцій
- Використання круглих дужок
Потік управління
- Складовий оператор (блок)
- Умовний оператор і його види
- Оператор switch
- Цикли: for, while, do while
- Нескінченні цикли
- Переривання потоку керування, мітки
- Оператор goto й причини уникнення його застосування
Масиви
- Оголошення й ініціалізація масивів, зокрема анонімних
- Лінійні масиви
- Ітерація за елементами масиву
- Масиви та привласнення
- Передавання та повернення масивів до/з методів
- Копіювання масивів
- Клас Arrays: заповнення, порівняння елементів і їхнє сортування
- Пошук у масивах
- Багатовимірні масиви, «нерівні» масиви
- Методи: аргументи змінної довжини
- Параметри командного рядка
Рядки
- Клас String. Незмінні об’єкти
- Зберігання рядків у пам’яті
- Основні операції класу String (створення, конкатенація, порівняння, пошук символів і підрядків у рядках та інше). Перетворення простих типів даних
- Розбивка рядків: клас StringTokenizer. Змінні об’єкти: класи StringBuffer і StringBuilder
- Основні методи. StringBuffer vs StringBuilder
Вступ до об’єктно-орієнтованого програмування. Об’єкти й класи
- Поля й методи (визначення, синтаксис оголошення)
- Специфікатори доступу public і private
- Поля класів: ініціалізація явна та за замовчуванням, специфікатор final і константи
- Доступ до полів і методів
- Методи: параметри (посилання та прості типи) і повернені, використання set і get- методів, перезавантаження методів, правила перезавантаження
- Об’єктна модель. Основні положення: абстрагування, інкапсуляція, модульність, ієрархія
- Діаграми класів UML
- Об’єкти та класи. Об’єкти. Визначення (з прикладами). Стан. Поведінка
- Конструктори: конструктори за замовчуванням, виклик одного конструктора з іншого
- Блоки ініціалізації
- Статичні поля й методи: ініціалізація константи, статичні блоки ініціалізації. Використання this для доступу до членів класу
- Збір сміття та видалення об’єктів
Відносини між об’єктами
- Залежності, їхні різновиди
- Узагальнення
- Асоціації
- Реалізації
- Зв’язки, їхня множинність
Успадкування й поліморфізм
- Успадкування й поліморфізм як інструмент створення ПЗ. Суперклас і підкласи, відносини узагальнення, успадкування в Java. Виклик конструкторів суперкласів, порядок викликів. Ключове слово super ()
- Перевизначення методів, правила перевизначення. Успадкування та статичні поля й методи класів. Абстрактні класи та методи: поняття, виклик конструкторів, реалізація методів у субкласах
- Інтерфейси. «Множина» успадкування. Визначення та реалізація інтерфейсів. Розширення інтерфейсів. Композиція як альтернатива множинного спадкоємства
- Поліморфізм. Ієрархія успадкування
- Перетворення та приведення типів. Використання instance of. Відмова від успадкування: термінальні (final) методи та класи. Включення як альтернатива множинному спадкуванню
- Пакети. Вкладеність пакетів. Повторне використання коду та пакети. Захист доступу
- Імпорт: класів, статичних методів і полів
Клас Object
- Глобальний суперклас Object
- Методи equals (), hashCode (), toString (), finalize (), clone () таінші
- Правилареалізації equals () і hashCode ()
- Інтерфейс Cloneable і його реалізація
- Клонування: поверхневе і глибинне
Внутрішні класи
- Синтаксис оголошення
- Створення об’єктів внутрішніх класів
- Поля й методи внутрішніх класів
- Вкладеність внутрішніх класів і доступ до членів зовнішніх класів
- Посилання this у внутрішньому класі
- Доступ до полів і методів зовнішнього класу з внутрішнього
- Внутрішні класи і специфікатор доступу
- Вкладені інтерфейси
- Застосування внутрішніх класів
- Внутрішнілокальнікласи (Method-LocalInnerClasses)
- Анонімні внутрішні класи
- Вкладені (внутрішні статичні) класи (static nested classes)
- Створення примірників
- Доступ до примірника з внутрішніми класами перерахування
- Компіляція програм з внутрішніми класами перерахування
Перерахування
- Перерахування як класи. Методи values (), valueof (), name (), ordinal ()
- Константи, конструктори, методи й поля
- Перерахування і конструкція switch. Імпорт членів перерахувань
Робота з базами даних
- Основи побудови реляційних баз даних
- SQL
- Нормальніформи. Запити SELECT, INSERT, UPDATE, DELETE
- JDBC
- Driver, Connection, Statement, ResultSet, PrepareStatement
Обробка помилок і винятки
- Підходи до обробки помилок часу виконання
- Поняття виключення і виняткової ситуації
- Ієрархія класів винятків у Java
- Контрольовані (що перевіряються) і неконтрольовані (не перевіряються) винятки
- Генерація виняткової ситуації й оператор throws
- Оголошення контрольованих винятків, ключове слово throws
- Throws і перезавантаження методів
- Перехоплення винятків
- Перехоплення «усіх» винятків
- Обробка винятків
- Повторна генерація винятків
- Блок finally: звільнення ресурсів
- Створення власної ієрархії винятків
- Реєстрація помилок, логування: логери, рівень логер, рівень повідомлень, обробники (об’єкти підкласу java.util.logging.Handler)
- Приклад
Система введення-виведення
- Ієрархія класів потокового введення-виведення
- Потоки введення/виведення, механізм роботи з потоками, ієрархія потокового введення-виведення
- Субкласи FilterOutputStream і FilterInputStream
- Байтові потоки
- Символьні потоки
- Клас File. Клас RandomAccessFile
- Серіалізація й десеріалізація об’єктів: поняття, призначення, реалізація
- Приклад
Desktop-додатки
- SWING, AWT. Приклад простого додатка з GUI
- Обробка подій
Класи колекцій
- Поняття абстрактного типу даних (АТД)
- Структури даних: списки, стеки, множини, дерева, мапи
- Обхід колекцій: інтерфейси Iterator і ListIterator, цикл «foreach»
- Компаратори
- Клас Collections: пошук і сортування елементів, заповнення, синхронізація уявлення, незмінні уявлення тощо
Знайомство з XML
- Поняття формальної коректності та допустимості
- Парсинг, зберігання стану об’єктів
- Приклади
Багатопоточність
- Поняття потоку. Особливості паралельного виконання
- Потоки-демони
- Пріоритети потоків. Метод yield ()
- Стан потоку: створення потоків, -runnable і -runninig-потоки
Класи BigInteger і BigDecimal. Основні операції
- Документування коду
- Включення коментарів
- Документування пакетів
- Дескриптори загального призначення
- Коментарі до класів, методам і полям
- Використання javadoc
Універсальні типи
- Параметризовані типи: класи інтерфейси. Параметри типу
- Обмеження накладені на параметризовані типи: прості типи, інстанціювання, суперклас, виняток
- Параметризовані типи і JVM
Утилітні пакети
- Форматування і час java.util, java.time
- Файлова система, java.io, Externalizable, java.nio
- Незмінні об’єкти
- Серіалізація та десеріалізація даних
Java 8. Анонімні функції. Stream API
Maven. Автоматизація складання Java-проектів
- Декларативний опис проекту
- Керування залежностями
- Артефакти jar, war, ear
- Правила розробки власних фреймворків і бібліотек
- Ant the Java legacy build tool
- Maven POM
Модульне тестування
- Правила та принципи
- TDD
- Дублери
- Mockito & PowerMock
Java Annotations
Java Reflection
Advanced Generics
- Причини поліпшення підсистеми типів
- Raw Types
- Wildcards, <? super T>, <? extends T>
- Type Erasure
- Отримання інформації про тип generic у runtime
- Доопрацювання власної колекції
Advanced Collections
- Data Structure Complexity
- WeakHashMap та інші
- Сторонні бібліотеки колекцій
Advanced Multithreading / Concurrency
- Низькорівневий API
- Waiting/blocked/sleeping-потоки; стан потоку “dead”
- Отримання результатів виконання багатопотокових обчислень. Метод join()
- Синхронізація: синхронізація методів. Синхронізаційні блоки.
- Блокування. Взаємодія потоків (Thread Interaction)
- Синхронізація потоків, взаємодія потоків, шаблон “Producer-Consumer”
- Особливість реалізації volatile
- Java Memory Model (JMM)
- Публікація об’єктів
- Високорівневий API
- Бібліотека java.util.concurrent
Advanced OOP
- SOLID (базові принципи об’єктно-орієнтованого програмування та дизайну)
- Dependency injection (DI) and Inversion of control (IoC)
Design Patterns
JRE Security, JVM Internals
- Платформы, архитектура, байт-код
- ClassLoader, garbage collector
- Средства JVM для защищенного выполнения кода
- Sandbox
- Memory Management
- Performance Optimization
- Роль JAAS
Desktop-додатки: технологія JavaFX
Spring
- Inversion of Control
- Доступ до даних
- Керування транзакціями
Робота з XML і JSON
- Потоковий аналіз на основі SAX. Аналіз на основі DOM
- Створення Java-класів за схемою
- Валідація. JSON
Вступ у SQL
- DDL & DML
- Primary Key та Foreign Key
- SQL Types
- JOINs
- Database Indexes
JDBC
- Пул зв’язків
- Data Access Object
Знайомство с Lombok та Log4J
Іспит. Захист програмного проекту
Як скласти резюме і пройти співбесіду
- Структура резюме
- FAQ
- Як вести себе на співбесіді
- Основні помилки на співбесіді
- Урок англійської мови №1
- Урок англійської мови №2
- Урок пошуку роботи
* Примітка: зазначені знижки не сумуються з іншими діючими акціями та спеціальними пропозиціями. Знижка застосовується тільки до нових заявок та при умові повної оплати курсу. Якщо у Вас виникли питання, звертайтеся за консультацією до наших менеджерів!