Курс Back-End (Java)

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

Бесплатная консультация

Поможем, подскажем и найдем Ваше направление в сфере IT.

Инструктор

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

О чем курс

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

Вместе с тем, Java считается одним из самых сложных языков программирования. Поэтому стать Java-разработчиком действительно нелегко. Но если вы сможете освоить это направление, то станете успешным и востребованным специалистом до самой пенсии!

Спрос на Java-разработчиков всегда высок и сопровождается достойным уровнем ЗП. Это касается не только опытных специалистов со стажем, но и начинающих.

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

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

face-1 Всех, кто уже чуть-чуть знаком с программированием
face-2 Всех, кто обожает искать нестандартные решения различных задач
face-3 Мечтающих о работе в IT-индустрии
face-4 IT-практиков, которые хотят расширить свои знания и освоить новое для себя направление

Программа курса 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-expression.
      • 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 евро в год

      Профессиональные навыки:
      • Ядро Java
      • Автоматизация сборки (Maven)
      • Контроль версий (Git)
      • Хостинг кода (GitHub)
      • Веб-бэкенд (Spring)
      • ORM маппинг (Hibernate)
      • Миграции баз данных (Flyway)
      • IDE (IntelliJ IDEA)
      • Веб-программирование на Java (Servlets)
      • Использование ОС (Linux)
      • Контейнеризация (Docker)
      • Облачный хостинг (Railway)
      • REST API
      • SQL базы данных (PostgreSQL)
      • NoSQL (MongoDB)
      • Юнит-тестирование (JUnit 5)
      • Доступ к базам данных (JDBC)
      • Шаблоны на стороне сервера (Thymeleaf)
      • Разметка (HTML)
      • Стилизация (CSS)
      • Язык запросов (SQL)
      • Скриптинг на фронтенде (JavaScript)

      Так будет выглядеть твой электронный сертификат

      Ты сможешь добавить этот сертификат себе в CV
      Certificate Back-End (Java)

      Инструменты, которые ты освоишь

      Зарплатные ожидания

      Возможность карьерного роста с увеличением заработной платы как магнит притягивает новых специалистов в сферу 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

      Телеграм

      Написать в Телеграм

      Все готово!

      Поздравляем! Вы успешно записались на нашу бесплатную консультацию. Наши сотрудники свяжутся с Вами в ближайшее время для уточнения деталей. Приготовьтесь расширить свои знания и навыки в области IT вместе с нами в Codillas Academy!

      О нет!

      Приносим извинения за причиненные неудобства. При отправке контактной формы для бесплатной консультации произошла ошибка. Пожалуйста, перепроверьте информацию и повторите попытку. Для получения помощи, пожалуйста, свяжитесь с нашей службой поддержки по адресу info@codillas.com. Мы ценим ваше понимание и с нетерпением ждем возможности помочь Вам в вашем путешествии по изучению IT.

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

      Поможем, подскажем и найдем Ваше направление в сфере IT.

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

      Никита

      Телефон

      +49 152 5263 7381

      Эл. почта

      hello@codillas.academy

      Все готово!

      Поздравляем! Вы успешно записались на наш курс по информационным технологиям. Наша команда свяжется с Вами в ближайшее время и сообщит дальнейшие подробности. Приготовьтесь расширить свои знания и навыки в области IT вместе с нами в Codillas Academy!

      О нет!

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