Курс Back-End (Java)

Паралельний басейн потоків!

Зараз по знижці!

Інструктор

Нікіта Михайлов
Нікіта Михайлов
Software Engineer | Engineering Manager
5+ років в IT.
Працює в Scalable Capital.
Любить грати на гітарі, серфити та грати в теніс.

Про що курс

Java - це мова програмування, яка вже протягом довгих років залишається однією з найпопулярніших серед усіх мов розробки. Це пов'язано з тим, що на відміну від багатьох інших мов програмування, Java призначена для розроблення великих і складних веб-додатків. Серед них: банківські системи, системи управління літаками, корпоративні системи з управління персоналом, великі агрегатори і платформи (Amazon, Ebay), соціальні мережі (LinkedIn) тощо. Вибором середнього та великого бізнесу для розробки практично завжди є Java.

Разом з тим, Java вважається однією з найскладніших мов програмування. Тому стати Java-розробником дійсно нелегко. Але якщо ви зможете освоїти цей напрям, то станете успішним і затребуваним фахівцем до самої пенсії!

Попит на Java-розробників завжди високий і супроводжується гідним рівнем ЗП. Це стосується не тільки досвідчених фахівців зі стажем, а й початківців.

Наші викладачі розробили програму курсу Java таким чином, щоб кожен студент з нуля отримав необхідні базові знання та практичні навички. Ви зможете навчатися у форматі онлайн у зручному для себе місці, поєднувати навчання з роботою тощо.

Курс ідеально підійде для

Усіх, хто вже трохи знайомий із програмуванням face-1
Усіх, хто обожнює шукати нестандартні рішення різних завдань face-2
Тих, хто мріє про роботу в IT-індустрії face-3
IT-практиків, які хочуть розширити свої знання й опанувати новий для себе напрямок face-4

Програма курсу Back-End (Java)

Модуль 1: Вступ до програмування

Вступ. Що таке алгоритм. Базові конструкції мови програмування.
  • Розуміння, що таке змінна та if, прості типи даних, як приводити типи.
  • Розуміння, як правильно називати змінні, camel case.
  • Розуміння що це таке і різницю між циклами for, while, do-while.
  • Розуміння порядку виконання операцій.
  • Розуміння, що таке "компіляція".
  • Розуміння, для яких проєктів використовується Java.
Розширений набір конструкцій і операторів.
  • Знання математичних, бінарних (у т.ч. зсуву), логічних операторів.
  • Розуміння двійкової системи, переведення в або з десяткової, додавання в стовпчик, зсув.
  • Розуміння булевої алгебри, таблиця істинності, XOR, OR, AND, NOT.
  • Розуміння тернарного оператора (Elvis Operator).
  • Git (вступ).
Розширений набір конструкцій і операторів (практика).
    Масиви та багатовимірні масиви.
    • Розуміння, що таке одновимірний масив.
    • Розуміння, що таке матриця і багатовимірний масив.
    • Уміння обійти масив, розуміння ArrayIndexOutOfBound.
    • Розуміння завдання сортування і вміння зробити bubble sort.
    • Розуміння, чим масив відрізняється від змінної і які дані можна зберігати.
    Масиви та багатовимірні масиви (Практика).
      Поняття класу та об'єкта. Функції методів. Рекурсія. Налагодження.
      • Розуміння, що таке клас і об'єкт (без успадкування, інкапсуляції та поліморфізму).
      • Розуміння, що таке функція.
      • Розуміння як правильно називати функції.
      • Розуміння, що таке стек викликів.
      • Розуміння, як і навіщо треба розділяти код на функції (рефакторинг).
      • Розуміння що таке рекурсія та вихід з рекурсії.
      • Розуміння StackOverflowException.
      • Розуміння, як ставити break point, де побачити call stack, як ходити по коду.
      Системи контролю версій Git.
      • Розуміння що таке commit, історія.
      • Розуміння, що таке гілки.
      • Розуміння push, fetch, merge, pull.
      • Розуміння того, що таке pull request.
      • Розуміння, як використовується Git на реальних проєктах (master, feature branches, code reviews)

      Модуль 2: ООП (Об'єктно-орієнтоване програмування)

      Тести.
      • Що таке тести і навіщо вони потрібні?
      • Види тестування коду та застосунку загалом.
      • Що таке TDD і TLD.
      • Знайомство з maven.
      Початок об'єктно-орієнтованого програмування.
      • Розуміння, що таке heap і його відмінність від stack.
      • Розуміння, що таке інтерфейс, маркерний інтерфейс, клас і об'єкт.
      • Розуміння полів і методів, статичних полів і методів.
      • Знайомство з терміном доменна модель і розуміння, що ми моделюємо її.
      • Розуміння класичного успадкування, final-класів.
      • Розуміння роботи конструкторів.
      • Розуміння успадкування через композицію.
      Об'єктно-орієнтоване програмування. Продовження.
      • Абстрактні класи. Їхня відмінність від інтерфейсів.
      • Розуміння поліморфізму. Раннє та пізнє зв'язування. Віртуальна таблиця методів.
      • Розуміння Enumerations.
      • Розуміння, що таке hashCode і equals().
      • Різні типи посилань.
      Винятки. Розробка API. Що, якщо метод повертає null?
      • Розуміння різних підходів до обробки помилок: повернення статусу коду, exit(), повернення спеціальних об'єктів, exceptions.
      • Розуміння, навіщо потрібні винятки.
      • Розуміння Enumerations.
      • Розуміння різниці між checked, unchecked.
      • Розуміння try-catch-finally, rethrow.
      • Розуміння NullPointerException.
      • Розуміння семантики IllegalException, IllegalArgumentException.
      • Розуміння null safety, NPE.
      • Розуміння, які підходи є замість повернення null: винятки, Optional, null object, empty list.
      • Розуміння Optional.
      • Розуміння Null-Object Pattern.
      • Розуміння анотацій Nullable.
      Складність алгоритмів, О-велике.
      • Розуміння, що таке О-велике, О-мале, тета.
      • Розуміння алгоритму сортування злиттям.
      • Розуміння лінійного та бінарного пошуку.
      Generics, колекції.
      • Розуміння простих generic-ів.
      • Розуміння extends, <?>.
      • Розуміння того, як зробити generic метод.
      • Синтаксис виклику статичного методу з generics.
      • Розуміння collection, list, set, map.
      • Розуміння сучасних колекцій (Guava).
      • Розуміння boxing/unboxing.
      Колекції, структури даних, продовження 1.
      • Розуміння Queue, Dequeue і його спадкоємців, що таке FIFO, LIFO.
      • Розуміння HashSet, HashMap, навіщо нам потрібні equals і hashCode.
      • Уміння зробити Ітератор.
      Колекції, структури даних, продовження 2.
      • Розуміння, що таке бінарне дерево, обхід бінарного дерева.
      • Розуміння, що таке граф, види графів.
      • Розуміння алгоритмів обходу графів.
      Stream API.
      • Функціональний інтерфейс, lambda-вираз.
      • Stream pipelines, terminal & conveyor operations.
      • Collectors.
      IO/NIO.
      • Розуміння, як зчитати файл побайтово.
      • Розуміння, як записати файл побайтово.
      • Розуміння, як читати і записувати файл як рядок.
      • Розуміння використання Files.
      • Розуміння try-with-resources.
      • Загальне поняття про різницю синхонного та асинхронного програмування.

      Модуль 3: Database

      Java Annotations, Reflection.
      • Розуміння того, навіщо використовують анотації.
      • Уміння створити інструкцію.
      • Розуміння RetentionPolicy, Target тощо.
      • Уміння обійти методи, визначені інструкцією.
      SQL, JDBC.
      • Розуміння, що таке реляційна модель.
      • Розуміння primary keys, 1, 2, 3 нормальної форми.
      • Розуміння найпростіших DQL, DDL.
      • Розуміння, що таке транзакція (ACID).
      • Розуміння, як "сходити" в базу з джави.
      SQL. Продовження. Hibernate.
      • Що таке ORM, які завдання вирішує.
      • Що таке entity-manager у hibernate.
      • Створення сутностей і зв'язків між ними.
      • Короткий вступ до HQL.
      MongoDB. Написання найпростішої ORM.
      • Розуміння, що таке JSON і BSON.
      • Розуміння різниці між SQL і NoSQL базами даних.
      • Розуміння, що таке Mongo.
      • Розуміння, як прочитати і записати в базу.
      Основи операційних систем.
      • Розуміння, які завдання вирішує операційна система.
      • Розуміння різниці між основними операційними системами.
      • Розуміння процесів і потоків, м'ютексів, семафорів.
      Linux OS.
      • Розуміння, як працює файлова система.
      • Розуміння stdout, stderr. Розуміння >, &>, 2>1 тощо.
      • Базові команди в терміналі: робота з файлами, cat, less, tail, ps, top, kill.
      • Розуміння пайпінгу.
      • Базові bash-скрипти.
      Об'єктно-орієнтований дизайн.
      • Розуміння всіх букв у SOLID.
      • Розуміння основ Unix philosophy.
      • Розуміння tiny types.
      • Розуміння неймовірності, глибоких копій.
      • Перший патерн factory method. Звідси: розуміння приватного конструктора, створення екземпляра статичним способом.
      • Загальне поняття про різницю синхонного та асинхронного програмування

      Модуль 4: Web

      Багатопоточність.
      • Розуміння, що таке Thread і Runnable.
      • Розуміння, API потоків.
      • Розуміння, як створити і запустити 1 потік, багато потоків.
      • Розуміння, що таке race condition і dead lock.
      • Розуміння volatile.
      • Розуміння synchronized.
      • Уміння використовувати mutex і semaphore в джаві.
      • Розуміння атомарних операцій.
      • Основні засоби в пакеті concurrency.
      • Розуміння, як вирішити проблему dead lock і race condition.
      • Розуміння патерну Observer, слова callback.
      Мережі, HTTP, Web.
      • Розуміння моделі OSI.
      • Розуміння методів HTTP, їхніх обмежень.
      • Розуміння headers і cookies.
      • Розуміння життєвого циклу запиту від браузера до програми і назад. Статуси.
      Servlets, Chain Of Responsibility.
      • Уміння створити проєкт із модулями в maven.
      • Розуміння, як реалізувати Servlet.
      • Розуміння того, як відправити HTTP-запит за допомогою curl.
      • Що таке filters.
      • Розуміння патерну Chain of Responsibility.
      Вступ до теорії мікросервісів.
      • Кластерні менеджери. Поняття масштабування.
      • Розуміння, що таке монолітна архітектура, її плюси та мінуси.
      • Розуміння, що таке мікросервісна архітектура та її плюси і мінуси.
      REST API, реалізація REST API.
      • Знайомство з web і роутингом http запитів і практика роботи з web і роутингом http запитів.
      Вступ до Spring Framework.
      • Що таке IoC, DI?
      • Як влаштований контейнер, принцип роботи.
      Spring Boot, MVC і data.
      • Для чого потрібен Spring Boot?
      • Основні моменти під час роботи з MVC у Spring Boot.
      • Spring Boot репозиторії.
      Постановка завдання на фінальний проєкт.
      • Розуміння, яке завдання буде вирішуватися.
      • Розуміння, які технології будуть використовуватися.
      • Розуміння, що очікується в кінці.
      • Розуміння, як, де і навіщо писати Javadoc.
      • Продумування архітектури проєкту.
      • Знайомство з Agile.
      Розробка API. Огляд патернів.
      • Розуміння патернів Proxy, Facade, Bridge, Adapter і різниці між ними.

      Модуль 5: Дипломна робота

      Опис.
      • Дипломна робота включає в себе реалізацію веб-додатку або веб-сайту, який містить кілька сторінок. На практичному рівні студенти демонструють отримані знання, під час навчання. Використовується робота з базами даних, зазвичай, дані зберігаються в одній з SQL DB і повинні зберігатися між запусками програми.
      Захист дипломної роботи.
      • Необхідно скласти практику, яка передбачає демонстрацію робочого проєкту, відповіді на будь-які запитання, пов'язані з проєктом, демонстрацію коду на вимогу. І окремо здається теорія за всією програмою курсу і за всіма темами. Теорія складається у форматі співбесіди на Junior Developer позицію, сторонньому, незалежному експерту. За обидва блоки можна отримати від 0 до 100 балів

      Ваше резюме після проходження курсу

      Junior Java Developer
      Зарплата від
      48 000 євро на рік

      Професійні навички:
      • JUnit 5
      • Java Concurrency
      • Thymeleaf
      • Linux
      • HTTP, Web
      • Spring
      • Spring Boot, MVC
      • SQL, JDBC
      • CSS3 / HTML5
      • Agile / Scrum / Kanban
      • Logging
      • Jenkins

      Так виглядатиме твій електронний сертифікат

      Ти зможеш додати цей сертифікат собі в CV
      Certificate Back-End (Java)

      Інструменти, які ти опануєш

      Java Сore
      Maven
      Git
      GitHub
      Spring
      Flyway
      Idea
      Linux
      Docker
      Railway
      REST API
      PostgreSQL
      MongoDB
      JUnit 5
      Thymeleaf
      HTML
      CSS
      SQL
      JavaScript
      Java Сore
      Це найпростіша версія Java, яка встановлює основу для всіх інших видань Java плюс набір суміжних технологій, таких як CORBA, Java VM тощо. Д. Core Java відноситься до колекції бібліотек, а не просто до мови програмування. Це найчистіша форма Java, яка в першу чергу використовується для розробки загальних настільних додатків. Він забезпечує основну функціональність Java з глибоким знанням самої мови Java.
      Maven
      Maven - це інструмент побудови та управління проектами, який зазвичай використовується у фреймворках, побудованих на Java. Він розроблений Apache Software Foundation. Maven, слово з ідишу, означає "збирач знань". Його запровадили, щоб зробити процес запуску збірки в Джакартському турбінному проєкті.
      Git
      Git - це розподілена система контролю версій, яка дає змогу відстежувати історію розроблення ПЗ і спільно працювати над складними проектами з будь-якої точки світу.
      GitHub
      GitHub (гітхаб) це онлайн-сервіс зберігання і синхронізації коду для програмістів і розробників додатків. Головною метою цього сервісу є підтримка спільного розроблення проєктів і контролю версій.
      Spring
      Spring Framework (або коротко Spring) - універсальний фреймворк із відкритим вихідним кодом для Java-платформи.
      Flyway
      Flyway - це інструмент міграції баз даних з відкритим кодом.
      Idea
      IntelliJ Idea - інтегроване середовище розробки програмного забезпечення для багатьох мов програмування, зокрема Java, JavaScript, Python, розроблене компанією JetBrains.
      Linux
      Linux - це сімейство операційних систем (ОС), що працюють на основі однойменного ядра. Немає жодної операційної системи Linux, як, наприклад, Windows або MacOS. Є безліч дистрибутивів (набір файлів, необхідних для встановлення ПЗ), що виконують конкретні завдання.
      Docker
      Docker - це програмна платформа для швидкої розробки, тестування та розгортання додатків. Docker упаковує програмне забезпечення в стандартизовані блоки, які називаються контейнерами. Кожен контейнер містить усе необхідне для застосунку: бібліотеки, системні інструменти, код і середовище виконання. Завдяки Docker можна швидко розгортати і масштабувати додатки в будь-якому середовищі та зберігати впевненість у тому, що код працюватиме.
      Railway
      Railway - це хмарний сервіс, де ви можете розгорнути свій додаток. Він має дуже простий користувацький інтерфейс, що дає змогу Вам сфокусуватися на вивченні своєї платформи.
      REST API
      REST - архітектурний стиль взаємодії компонентів розподіленого додатка в мережі. Інакше кажучи, REST - це набір правил того, як програмісту організувати написання коду серверного застосунку, щоб усі системи легко обмінювалися даними і програму можна було масштабувати.
      PostgreSQL
      PostgreSQL - об'єктно-реляційна система керування базами даних PostgreSQL - це популярна вільна об'єктно-реляційна система керування базами даних. Базується на мові SQL і підтримує численні можливості.
      MongoDB
      MongoDB - система управління базами даних, яка працює з документоорієнтованою моделлю даних. На відміну від реляційних СУБД, MongoDB не потребує таблиці, схеми або окремої мови запитів. Інформація зберігається у вигляді документів або колекцій.
      JUnit 5
      JUnit 5 - це інфраструктура модульного тестування для Java наступного покоління, оснащена безліччю цікавих функцій, включно з вкладеними тестами, параметризованими тестами, новим API розширення або підтримкою Java 8 і багатьма іншими.
      Thymeleaf
      Thymeleaf - це шаблонізатор Java XML/XHTML/HTML5, який може працювати як у веб-середовищі, так і не у веб-середовищі. Він краще підходить для обслуговування XHTML/HTML5 на рівні представлення веб-додатків на основі MVC, але він може обробляти будь-який XML-файл навіть в автономних середовищах.
      HTML
      Мова гіпертекстової розмітки сторінок, яку застосовують для розмітки документів для перегляду веб-сторінок у браузері. Її використовують для того, щоб дати браузеру зрозуміти, як потрібно відображати завантажений сайт або сторінку.
      CSS
      CSS (Cascading Style Sheets) або каскадні таблиці стилів - мова опису зовнішнього вигляду документа, написаного за допомогою мови розмітки. Зазвичай використовується для опису оформлення веб-сторінок, написаних мовою розмітки HTML.
      SQL
      SQL - це декларативна мова програмування, яка використовується для створення, модифікації та управління даними в реляційній базі даних, керованій відповідною системою управління базами даних.
      JavaScript
      JavaScript - мультипарадигменна мова програмування. Підтримує об'єктно-орієнтований, імперативний та функціональний стилі. Є реалізацією специфікації ECMAScript. JavaScript зазвичай використовується як вбудована мова для програмного доступу до об'єктів додатків.

      Зарплатні очікування

      Можливість кар'єрного зростання зі збільшенням заробітної плати як магніт притягує нових фахівців у сферу IT.

      Щоб досягти заробітку від 85 000 євро (брутто) на рік і вище, потрібно пройти шлях від Junior до Senior. І цей шлях може бути досить стрімким - усе залежить тільки від тебе!
      Junior
      4000 євро / місяць
      Middle
      5500 євро / місяць
      Senior
      7000 євро / місяць
      На позиції Junior тільки одна місячна зарплата в 4000 євро (брутто) дасть тобі змогу повністю покрити шестимісячне навчання на нашому курсі. Тож гроші повернуться до тебе дуже швидко!
      Досвід: початок роботи
      Коли ви доростете до Middle фахівця, ваш заробіток становитиме вже від 5500 євро (брутто) на місяць і вище! Домогтися такого результату можна лише за 2 роки старанної праці та постійного саморозвитку.
      Досвід: 2-3 роки
      Senior - це фахівець, який заробляє від 7000 євро (брутто) на місяць і вище - залежить від типу компанії, досвіду роботи та ваших цілей. Верхню межу заробітку та кар'єрних сходів визначають лише ваші амбіції - тож не зупиняйтеся на досягнутому!
      Досвід: 4-5 років

      Зв'яжись із нами

      Допоможемо, підкажемо і знайдемо твій напрямок у сфері IT.
      Залишай заявку для безкоштовної консультації або запису на курс.

      Адміністратор

      Нікіта

      Телефон

      +49 152 5263 7381

      Ел. пошта

      hello@codillas.academy

      Готово!

      Вітаємо! Ви успішно записалися на нашу безкоштовну консультацію. Наша команда незабаром зв'яжеться з Вами для уточнення деталей. Приготуйтеся розширити свої ІТ-знання та навички разом з нами в Codillas Academy!

      Ох, ні!

      Приносимо вибачення за незручності. Виникла помилка при відправці вашої контактної форми для безкоштовної консультації. Будь ласка, перевірте інформацію та спробуйте ще раз. За допомогою, будь ласка, зверніться до нашої служби підтримки за адресою info@codillas.com. Ми цінуємо ваше розуміння і з нетерпінням чекаємо можливості допомогти Вам у вивченні ІТ.

      Записатись на IT-курси

      Допоможемо, підкажемо і знайдемо твій напрямок у сфері IT.
      Залишай заявку для безкоштовної консультації або запису на курс.

      Адміністратор

      Нікіта

      Телефон

      +49 152 5263 7381

      Ел. пошта

      hello@codillas.academy

      Готово!

      Вітаємо! Ви успішно зареєструвалися на наш ІТ-курс. Наша команда незабаром зв'яжеться з Вами для уточнення деталей. Приготуйтеся розширити свої ІТ-знання та навички разом з нами в Codillas Academy!

      Ох, ні!

      Перепрошуємо за незручності. Сталася помилка при відправці вашої контактної форми на ІТ-курс. Будь ласка, перевірте інформацію та спробуйте ще раз. За допомогою, будь ласка, зверніться до нашої служби підтримки за адресою info@codillas.com. Ми цінуємо ваше розуміння і з нетерпінням чекаємо можливості допомогти Вам у навчанні ІТ.