Курс 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-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 евро в год

      Профессиональные навыки:
      • 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
      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 - это облачный сервис, где вы можете развернуть свое приложение. Он имеет очень простой пользовательский интерфейс, что позволяет Вам сфокусироваться на изучении своей платформы.
      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

      Все готово!

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

      О нет!

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

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

      Поможем, подскажем и найдем твоё направление в сфере IT.
      Оставляй заявку для бесплатной консультации или записи на курс.

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

      Никита

      Телефон

      +49 152 5263 7381

      Эл. почта

      hello@codillas.academy

      Все готово!

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

      О нет!

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