Платформа №1 по переквалификации 
на Java-программиста*

9 из 10

УЧАСТНИКОВ ТРУДОУСТРАИВАЮТСЯ

После прохождения курса-стажировки JavaIntern

23

ПОТОКА ВЫПУЩЕНО

С 2015 года выпущено 23 потока курса-стажировки по Java

>500

ВИДЕОЛЕКЦИЙ И ДРУГИХ МАТЕРИАЛОВ

Сотни видеолекций по 3-10 минут, тесты, домашние задания и рабочие примеры

Осталось 6-12 месяцев 
до вашего трудоустройства

за 5 месяцев

ВЫ ПОДГОТОВИЛИСЬ К СТАЖИРОВКЕ ПО JAVA

на пяти подготовительных курсах по Java 
с самого нуля, 
с поддержкой личного преподавателя

за 1,5 месяца

ПРОШЛИ КУРС-СТАЖИРОВКУ ПО JAVA

получили свой первый опыт работы для резюме

0-12 месяцев

ТРУДОУСТРОИЛИСЬ НА JAVA-РАЗРАБОТЧИКА

с зарплатой 50 000 – 80 000 рублей в месяц

Наши выпускники трудоустраиваются в

ПОсле прохождения обычных курсов

Последним опытом работы в резюме указано обычное текущее место работы: инженер, менеджер, сотрудник тех. поддержки, бухгалтер, юрист.

В результате вы соревнуетесь с другими соискателями практически на равных.

ПОсле прохождения курсов в Khasang

Последним опытом работы в резюме вы указали  Java Developer в Khasang! Работодатели смотрят ваше резюме, видят ваш опыт работы и с удовольствием приглашают на собеседование.

Работодатели предпочитают кандидатов с опытом работы, который указан в резюме. Это позволяет вам опередить 80% соискателей на ту же позицию.

Программа курсов

Пять курсов после которых вы уверенно овладеете Java Core и сам курс-стажировка

TryJava

TryJava Advanced

Java0

Java1

Java2

Курс-стажировка JavaWeb

Занятие 1: Программа, команды, рисование

Технологии, которые нужно знать для прохождения собеседований на Java-developer

Добро пожаловать на курс TryJava (4:31)

Добро пожаловать в Хасанг! (0:50)

Огонь! (0:40)

Пора переходить к программированию (0:42)

Рисуем – введение в компьютерную графику (2:50)

а) Поиграйтесь с цветом фона

Рисуем эллипс (1:04)

б) Поиграйтесь с рисованием кругов

Закрашиваем оттенком серого (1:09)

в) Поиграйтесь с раскраской кругов

Добавляем яркие цвета! (1:04)

г) Поиграйтесь с цветом

Рисуем прямоугольник (0:53)

Почему вы учитесь на Платформе N1 по переквалификации на Java-программиста (0:33)

Рисуем точку и меняем ее размер (0:52)

Рисуем линию (0:45)

Задаем ширину обводки для всех фигур (0:43)

Узнаем разницу между обводкой и заливкой (2:10)

(NEW) Можно ли сделать фигуру полупрозрачной?

Домашнее задание 1

(NEW) Вопросы-ответы


Занятие 2: Переменные и анимация

Комментарии в программе – и для отладки и для объяснений (1:12)

Меняем размер холста для рисования (0:37)

Поиграйтесь с размером холста

Переменные: 1. Декларация (2:09)

Переменные 2: Присваивание значений и использование (3:05)

Тест: проверьте себя на знание переменных в Java

Переменные 3: Используем для рисования (2:39)

(NEW) Какие нельзя давать названия переменным?

а) Поиграйтесь с переменными

Анимация рисунка и функция draw() (4:11)

Поиграйтесь с анимацией

Исправьте ошибки

Программисты – волшебники настоящего (0:38)

Как определить, где курсор мышки на экране (0:45)

Локальные переменные 1: mouseX и mouseY (0:58)

(NEW) Вопросы-ответы

Домашнее задание 2 (графический редактор)

Локальные переменные 2: Область видимости (1:32)


Занятие 3: Учимся разветвлять код

Условное выражение в одну строчку (1:36)

Поиграйтесь с размером круга

Почему Java? (1:09)

Условное выражение со скобочками (2:41)

Поиграйтесь с интерактивным изменением цвета и размера

Переменные width height (0:53)

Переменные, которые хранят истину или ложь (2:54)

Как узнать, что кликнули мышкой? (0:42)

(NEW) Вопросы-ответы

Рисуем круги при нажатии на мышку (0:29)

Видео: Попробуйте восстановить код (0:32)

"Хакерское" задание: Восстановите код

(NEW) Вопросы-ответы: как работает логика совмещения void draw() и условных выражений

Творческое задание: напишите Тамагочи!

(проверьте себя) Программируем игру Тамагочи (2:56)

Поиграйте с Тамагочи, которого мы запрограммировали

Домашнее задание (*)


Занятие 4: Придумываем свои команды!

Знакомимся с функциями (3:12)

Самостоятельная работа: ваша первая функция

Используем несколько функций в программе (1:37)

Где писать функции в коде? (1:01)

Поправьте рабочий код!

Передача параметров в функцию (2:22)

Самостоятельная работа

Придумываем функцию для рисования рожицы (3:20)

Передаем координаты для рисования в нужном месте экрана (2:21)

Поиграйтесь! Сделайте движущиеся рожицы

Сверьтесь с решением

Одно из преимуществ использования функций в коде (0:35)

Еще раз о месте описания функций (1:26)

Самостоятельная работа 2

Задача: Добавьте тень!

Решение по добавлению тени

Какие следующие шаги в профессии (0:58)

(*) Область видимости переменных (2:15)

Домашнее задание (*)

(NEW) Самостоятельная работа


Занятие 5: Изучаем циклы!

Цикл while (2:54)

Осторожно: бесконечный цикл! (0:50)

Тест: какой из циклов вечный?

Полноценный цикл while (0:45)

Опробуйте циклы!

Вложенные циклы (2:26)

Опробуйте вложенные циклы!

Раскрашиваем кружки (0:22)

Вложенные циклы внутри void draw(){} (1:46)

Опробуйте вложенные циклы внутри void draw() {}

Ближайший шаг в освоении профессии Java или Android разработчика (3:19)

(NEW) Разбор кода и вопросы-ответы

Домашнее задание


Занятие 6: Массивы

Создаем простой массив (2:39)

Поиграйтесь с массивом

Перебираем массив в цикле (1:21)

Поиграйтесь со связкой циклы-массивы

Узнаем длину массива (1:13)

Поиграйтесь с длиной массива

Изменяем значения в массиве (0:45)

Поиграйтесь с изменением элементов в массиве

Заполняем массив (1:23)

Заполняем массив случайными числами (0:52)

(NEW) Особенности случайных чисел в Java

Поиграйтесь с объединением циклов

(NEW) Строгое сравнение в Java (3:25)

(NEW) Поиграйте со строгим сравнением и RPG

(NEW) Как использовать сравнение "не равно"? Почему не работает <> в Java?

Подводим итоги и узнаем, что изучать дальше! (1:55)

Домашнее задание: созвездие с помощью массивов

(NEW) Вопрос-ответ: Почему у меня линия уходит за левый край экрана?

Сертификат об окончании

Как стать Java-разработчиком (1:21)

Ваш первый шаг (0:32)

Занятие 1: Тонкости по работе с массивами

Рисуем простую падающую снежинку (1:46)

Поиграйтесь с падающей снежинкой

Кодим массив снежинок! (2:59)

Поиграйтесь с массивом падающих снежинок

Меняем размер снежинок (0:34)

Поиграйтесь с размером снежинок

Больше-больше-больше снежинок! Делаем массив любого размера (3:52)

Поиграйтесь с мощным снегопадом

(NEW) Вопросы-ответы

Домашнее задание: дипломный проект


Занятие 2: Циклы for и инкремент

Повторяем цикл while (0:41)

Что такое инкремент? (1:23)

Осваиваем цикл for (2:52)

Кодинг: попробуйте применить for для массивов

(NEW) Самая частая ошибка при работе с массивами и циклами

(NEW) Самостоятельная работа

Домашнее задание


Занятие 3: Основы объектно-ориентированного программирования

Процедурное программирование: Создадим просто массив машинок (1:52)

Процедурное программирование: Приводим их в движение (0:59)

Недостатки процедурного подхода. И как перейти к ООП? (1:16)

Класс в Java: описываем типичную машину (1:19)

Создаем ангар для машин (1:09)

Создаем экземпляры класса (2:14)

Читаем, записываем в поля класса. И делаем программу рабочей! (1:37)

Дорабатываем: пусть они возвращаются! (1:53)

Кодинг: возвращение по времени

Выносим код в отдельную функцию (1:41)

Переходим от каши функций к методам в ООП (2:23)

Добавляем еще один метод! (0:50)

Обзор всего, что натворили (0:55)

Изучаем команду new. Упрощаем код (1:04)

(NEW) Вопросы-ответы по созданию массивов и объектов

(NEW) Как искать ошибки, когда неизвестно где они? (1:40)

Домашнее задание


Занятие 4: Конструкторы и доработка класса

Что такое конструкторы. Начинаем их писать (1:26)

Что такое this? (1:40)

Делаем конструктор без параметров (0:42)

Обзор всей удобной работы в ООП-стиле (0:43)

Смотрите, как легко теперь доработать нашу программу (0:54)

Кодинг: Пусть едут в разных направлениях!

Домашнее задание

Сертификат об окончании

Занятие 1: Установка и настройка

🚩Что нужно знать перед началом курса!

Компиляция, интерпретация и байт-код Java (5:01)

Из чего состоит Java? JVM, JRE, JDK (1:09)

Версии и редакции Java: Java SE, Java EE (2:16)

Установка JDK и среды разработки Intellij IDEA, настройка IDEA (3:12)

JVM-based языки и популярные фреймворки (1:27)

Знакомство с интерфейсом IDEA (4:50)

Приложение: Первое приложение HelloJava в профессиональной среде разработки IntelliJ IDEA (10:58)

Создаем несколько классов в нашей программе (5:31)

Пошаговое выполнение программы в IDEA (3:53)

Основы оформления кода (2:29)

Домашнее задание 1.1 «установка/настройка"


Занятие 2: Типы данных в Java, тонкости использования

Обзор пройденного материала (3:07)

Куча, Стек и перегрузка методов (4:04)

Как сдать простое ДЗ из IntelliJ IDEA (0:49)

(NEW) Как сдать простое ДЗ из IntelliJ IDEA UPDATE. Анонимные gist больше не поддерживаются в github

Домашнее задание 2.1 "перегрузка метода" (простое, необязательное)

Рекурсия в Java (2:02)

Домашнее задание 2.2 "рекурсия" (простое, необязательное)

Что такое Стек? (4:22)

Зарезервированные слова в Java

Что такое область памяти "Куча"? (2:19)

(NEW) Так все же в массиве хранятся объекты или примитивные типы данных?

Выделение памяти в Java (2:14)

Работаем с классами-обертками (1:01)

Домашнее задание 2.3 "классы-обертки" (простое, необязательное)

Код занятия

(NEW) Еще об особенностях символов Character в Java

(NEW) Еще про классы-обертки

*(NEW) Boxing и unboxing

(NEW) Ответ к задаче

(NEW) Внимание, неожиданное поведение при делении

(NEW) Когда требуется инициализация переменных в Java?


  Занятие 3: Управляющие конструкции в Java и методы

Обзор дальнейших шагов (4:38)

Условные выражения в Java: if-else (9:36)

(NEW) Союзы в условных выражениях

Конструкции: switch (8:10)

While и три других типа циклов в Java (3:29)

Цикл do-while (1:47)

Цикл for (4:06)

(NEW) Тернарный оператор (2:53)

(NEW) Преинкремент и постинкремент


  Занятие 4: Углубляемся в циклы + массивы в Java

Вложенные циклы (1:04)

(NEW) Как быстро понять вложенные циклы

Форматированный вывод: printf() (2:42)

(NEW) Расширенные параметры printf()

Возвращение значений из метода (10:04)

Возвращение значений из метода: еще один пример (3:19)

Как на самом деле происходит возвращение значений: понятие "Стек" в программировании (3:59)

Домашнее задание 4.1 "body mass index (BMI)" (обязательное)

(NEW) Как не потерять данные в методе?

Домашнее задание 4.2 "таблица умножения" (простое, необязательное)

Одномерные массивы в Java (6:33)

Инициализация массива (0:33)

(NEW) Синтаксический сахар при инициализации массива

Углубляемся в массивы (0:56)

Что такое null и NullPointerException (1:44)

Новые фишки по работе с циклами и массивами в IDEA (1:41)

Реализация многомерных массивов в Java (4:28)

(NEW) Как сделать паузу в игре?

Домашнее задание 4.3 "крестики/нолики" (обязательное)


  Занятие 5: Процедурное программирование в Java

Класс Scanner (10:18)

Вводим данные от пользователя в цикле (7:32)

(NEW) Особенности работы класса Scanner со строками и числами (3:19)

(NEW) Для продвинутого уровня: локали и Scanner

Упражнение 1 для самостоятельной работы

(NEW) Упражнение 1 – ответ

Упражнение 2 для самостоятельной работы

(NEW) Упражнение 2 – ответ

Упражнение 3 (+ Блэкджек) для самостоятельной работы

(NEW) Упражнение 3 - ответ

Упражнение 4 для самостоятельной работы

(NEW) Упражнение 4 – ответ (первый вариант)

(NEW) Упражнение 4 – ответ (второй вариант)

(NEW) Упражнение 4: вопросы-ответы

Упражнение 5 для самостоятельной работы

(NEW) Упражнение 5 – ответ

Упражнение 6 для самостоятельной работы

(NEW) Упражнение 6 – ответ

Упражнение 7 для самостоятельной работы

(NEW) Упражнение 7 – ответ

Пишем приложение: Плоский морской бой в процедурном стиле (9:26)

Пакеты в Java (6:19)

(NEW) Пакеты в Java (стандарт оформления)

(NEW) Как правильно сообщать об ошибке и задавать вопросы (7:10)

Домашнее задание 5.1 "Линейный морской бой" (обязательное)


  Занятие 6: Объектно-ориентированное программирование в Java

Сначала напишем "плохой пример", без ООП (6:04)

Создаем новый тип данных: КОШКА! (2:23)

Создаем экземпляр класса! (7:02)

Что такое конструктор (4:00)

Об исчезающем конструкторе (0:57)

Подведем итоги по первому шагу в ООП (1:33)

Переписываем морской бой в объектно-ориентированном стиле: первый шаг (1:02)

Второй шаг в ООП-проектировании: выделяем характеристики и методы (11:23)

Третий шаг в ООП-проектировании: создаем экземпляры классов (1:04)

Четвертый шаг в ООП-проектировании: настройка и связывание классов друг с другом (3:07)

ООП-проектирование: итоги (1:45)

(NEW) Сортировка массива методом пузырька (7:54)

(NEW) Код занятия

(NEW) Сортировка массива объектов вручную (3:18)

(NEW) Цикл foreach в Java (3:20)

(NEW) Код занятия

(NEW) Упражнение 1 для самостоятельной работы

(NEW) Упражнение 1 – ответ

Домашнее задание 6.1 "Скачки" (* сложное, необязательное, но интересное!)

(NEW) Типичные ошибки при выделении классов из предметной области (9:06)

(NEW) Два подхода по упрощению кода (временные переменные и инкапсуляция) (5:24)


  Занятие 7: Статические переменные, строки и коллекции в Java

Статические переменные: правила и принципы использования (13:50)

Обращение к статическим переменным (2:35)

Статические методы в Java (6:46)

Вложенная иерархия классов (2:35)

Реализация уникального идентификатора через static (1:51)

Домашнее задание 7.1 "Повторяем static" (обязательное)

Коллекция ArrayList в Java (8:21)

Роль дженериков в коллекциях (4:29)

(NEW) Вопросы-ответы

Домашнее задание 7.2 "Менеджер книг" (* сложное, необязательное, но интересное!)

Как правильно сравнивать строки в Java (6:51)

Тонкости сравнения строк в Java (5:05)

Переопределение equals для сравнения своих объектов (8:32)

(NEW) Вопросы-ответы по работе в IntelliJ IDEA


  Занятие 8: Тонкости ООП в Java

Инкапсуляция в Java (8:30)

Наследование в Java (5:34)

Добавляем методы в классы потомков (1:33)

Тонкости работы с конструкторами при наследовании и что такое super (5:14)

Вызов конструктора предка (1:54)

Аннотация @Override и еще раз о переопределении и перегрузке методов (4:46)

(NEW) Анти-паттерн Public Morozoff: или как не нужно использовать модификаторы

Введение в полиморфизм (1:58)

Основы полиморфизма в ООП (3:56)

Кастинг, восходящее и нисходящее преобразование (2:30)

Определяем класс с помощью instance of (0:33)

Полиморфизм и коллекции (3:48)

(NEW) Вопросы-ответы про полиморфизм

Переопределяем toString(); (2:20)

Домашнее задание 8.1 (обязательное)

Домашнее задание 8.2 "Полиморфный менеджер вещей" (* сложное, необязательное, но интересное!)

Сертификат об окончании

Занятие 1: Абстрактные классы и интерфейсы в Java

Напишите вашему преподавателю

Повторяем полиморфизм на примере toString() (7:40)

Как пользоваться встроенным редактором (0:59)

(NEW) Как редактировать свой код во встроенном редакторе

Кодинг: Проверьте знание полиморфизма

Абстрактный класс: Особенности ООП именно в Java (2:53)

Кодинг: абстрактные классы

Абстрактный метод: Особенности ООП именно в Java (7:00)

Кодинг: абстрактные методы

Интерфейсы в Java: Особенности ООП именно в Java (17:09)

Кодинг: интерфейсы в Java

Преобразование типов (3:22)

Кодинг: преобразование типов

Еще раз об интерфейсах (1:26)

Кодинг: итоги по интерфейсам

Учимся проектировать программу в ООП-стиле на Java на примере консольного приложения "Космодром" (16:44)

Реализуем паузу в приложении (1:36)

Кодинг: космопорт

Паттерн проектирования Синглетон (6:14)

Паттерн проектирования Фабрика (4:39)

(🆕NEW) Как правильно задавать вопросы

(🆕NEW) Как искать ошибки в коде, используя stacktrace (3:21)

ДЗ для новичков (beginner)

ДЗ для продолжающих (Intermediate)

(NEW) Вопрос о нарушении инкапсуляции, если геттер возвращает ссылку на массив

(NEW) Вопрос об использовании instanceof


  Занятие 2: Проектирование и анонимные внутренние классы

Проектируем программу Космопорт с использованием интерфейсов (7:32)

Тренировка: изложение

Лекция: где применяются интерфейсы в Java? (3:09)

Повторяем: правило инициализации переменных (1:47)

Кодинг: инициализация переменных

Анонимные внутренние классы в Java (12:43)

Кодинг: анонимные внутренние классы

(NEW) Вопросы-ответы

Используем анонимные внутренние классы в программе (1:22)

Лекция: Итоги по ООП в Java (4:49)

Пример кода

Вопросы для самопроверки


  Занятие 3: Коллекции в Java

Тренируемся проектировать и пишем приложение: Банкомат (14:50)

Введение в коллекции. Интерфейсы Collection, List, Set (6:32)

Интерфейс List (14:21)

Сложность алгоритмов (6:25)

Особенности ArrayList (3:14)

Удаление элементов из коллекции и паттерн Iterator (9:53)

Коллекция LinkedList (6:56)

Интерфейс Set и реализации HashSet, TreeSet, LinkedHashSet (9:13)

(NEW) Как из Set достать конкретный элемент?

Интерфейс Map и реализация HashMap (5:54)

Что такое хэш (hash), как устроен, что спрашивают на собеседованиях? (6:18)

Что такое коллизия при работе с хэшкодами? (9:03)

Автогенерация hashCode в IDEA (2:19)

Как сравнивать классы? Интерфейс Comparable (3:50)

Интерфейс Comparator (3:09)

(NEW) Контракт между compareTo() и equals (вопросы с собеседований)

Иерархия классов

Пример кода

Вопросы для самопроверки

Задача на повторение пройденного и разработку

Задача на игру Морской бой

(NEW) Вопросы-ответы


  Занятие 4: Работа с исключениями в Java

Правильная конкатенация строк в Java. Mutable и Immutable. StringBuilder и StringBuffer. (10:47)

Введение в механизм работы с исключениями в Java (19:40)

Контролируемые и неконтролируемые исключения (16:05)

Иерархия исключений

Тонкости по работе с исключениями (8:27)

Несколько блоков catch (7:03)

Блок finally (9:39)

Конструкция try-with-resources (3:48)

Что сильнее finally? (3:15)

Блок finally и return. Тонкости работы (7:21)

(NEW) Вопросы-ответы по finally / лезем "под капот" try-catch-finally

Пример кода

Домашнее задание

Помощь начинающим: пишем простые крестики-нолики (21:16)


  Занятие 5: Ввод-вывод в Java

Ввод-вывод (java.io) Байтовые потоки (7:28)

(NEW) Сколько байт уходит на хранение символа в UTF-8?

Диаграмма классов java.io

Ввод-вывод (java.io) Символьные потоки (2:55)

Ввод-вывод (java.io) Буферизованные потоки и конструкция try-with-resourses (3:59)

Сканнер и локализация (2:04)

Класс DataOutputStream (3:43)

Сериализация и ObjectOutputStream (4:28)

Тонкости сериализации и записи экземпляров классов в файл (5:12)

Пример кода

Домашнее задание


  Занятие 6: Графический интерфейс пользователя

1. Основы графического интерфейса пользователя (Swing) (9:52)

Создание меню (6:38)

События и их обработка: добавляем слушателей (listeners) (6:17)

Реализуем слушателей через анонимные внутренние классы (4:15)

Реализуем диалоговые окна (6:40)

Используем SwingUtilities (2:14)

Разбираемся с контейнерами интерфейса (9:48)

Изучаем JPanel (2:26)

Используем GridLayout (2:24)

2. Паттерн проектирования MVC (8:42)

3. Приложение "Крестики-нолики" с использованием MVC (29:39)

Пример кода

Домашнее задание


  Занятие 7: Многопоточность в Java

Передача данных в простейшем MVC от Model к View (10:22)

Процессы и потоки (6:08)

Способ 1: создаем новые потоки с помощью Runnable (7:38)

Тонкости по работе с потоками (2:30)

Способ 2: создаем новые потоки с помощью Thread (3:50)

Организуем обмен информацией между потоками, volatile (6:59)

Запускаем несколько потоков одновременно (5:23)

Синхронизация методов (10:18)

Блок синхронизации и ключи (8:37)

Ожидаем другие потоки, разбираемся с join() (3:02)

Делаем так, чтобы потоки заснули и будим их (7:53)

Как правильно прервать поток (9:41)

Разбираемся с Thread.yield() (1:40)

Пример кода

Домашнее задание


  Занятие 8: Сокеты и работа с сетью

Протоколы и работа с сетью (9:07)

Пишем простой браузер (9:10)

Сокеты и Приложение: Простой веб-сервер (20:41)

Веб-сервер с использованием многопоточности (7:59)

Написание приложения сетевой чат (22:59)

Пишем серверную часть сетевого чата (17:52)

Пример кода

Домашнее задание

Сертификат об окончании

Занятие 1: Пишем свои обобщенные классы в Java

Тема: Параметризация, дженерики, обобщенное программирование (18:40)

Дженерики: два параметра (5:07)

Дженерики: ограничение типов (9:33)

Дженерики: множественные ограничения (8:49)

Дженерики: параметризованный метод (7:09)

Дженерики: ограничение в шаблонах (2:18)

Дженерики: параметризованный метод в непараметризованном классе (2:43)

Домашнее задание 1

Домашнее задание 2


  Занятие 2: Юнит-тесты в Java

Unit-test1: Юнит-тестирование в Java. Как бы мы тестировали программу без юнит-тестов? (6:39)

Unit-test2: Настройка и подключение JUnit4 в IntelliJ IDEA Comunity (2:54)

Unit-test3: Настройка папки test в IDEA (2:38)

Unit-test4: Пишем ваш первый юнит-тест! (3:16)

Unit-test5: Как анализировать провалившиеся юнит-тесты в IDEA? (2:02)

Unit-test6: Используем статический метод assertTrue() для тестирования (1:46)

Unit-test7: Детально исследуем аннотацию @Test в JUnit4 (0:53)

Unit-test8: Используем static import в Java (0:42)

Unit-test9: Используем аннотации @Before, @After, @BeforeClass, @AfterClass (5:59)

Unit-test10: Как проверять методы на выбрасывание исключений при работе с JUnit? (3:39)

Unit-test11: Изучаем аннотацию @Ignore и работаем с зависшими методами с помощью timeout (4:19)

Unit-test12: Юнит-тестирование в Java. Итоги (1:06)

Код занятия

Домашнее задание


  Занятие 3: Пошаговое изучение Test Driven Development (разработка через тестирование)

TDD1: Введение в Test Driven Development в Java с использованием JUnit4 (7:20)

TDD2: Узнаем, что такое пользовательские истории и реализуем первую userstory (2:52)

TDD3: Реализуем вторую пользовательскую историю (2:58)

TDD4: Реализуем третью и четвертую пользовательскую историю. Создаем новый класс и исправляем ошибки инкапсуляции (14:41)

TDD5: Реализуем пятую пользовательскую историю "Показать поле" (6:43)

TDD6: Реализуем шестую пользовательскую историю "Стрелять только по пустым ячейкам" (4:30)

TDD7: Реализуем седьмую пользовательскую историю "Учесть возможность ничьей в игре" (4:34)

TDD8: Используем паттерн Стратегия (Strategy) в классе Пользователь, чтобы реализовать разные алгоритмы игры (10:08)

TDD9: Используем внедрение зависимости (Dependency Injection), чтобы подменить стандартный ввод с клавиатуры и протестировать методы (11:33)

TDD10: Используем паттерн Стратегия (Strategy), чтобы провести юнит-тестирование всей игры (11:22)

TDD11: Запускаем игру и проверяем, что она работает, при этом легко подменяем стиль игры (6:43)

Код занятия

Домашнее задание по разработке через тестирование (TDD)


  Занятие 4: Введение в SQL

SQL1: Введение в Реляционные Базы Данных. Проектирование структуры (13:17)

SQL2: Исследуем структуру базы данных. Устанавливаем и настраиваем SQLite. Работаем в консоли (5:43)

SQL3: Изучаем SELECT (4:13)

SQL4: О хранении паролей (1:39)

SQL5: Продолжаем изучать SELECT. WHERE (3:32)

SQL6: Объединяем таблицы. JOIN (6:02)

MyJDBC1: Работаем в DB Browser (3:04)

Код занятия

Домашнее задание: проектируем базу данных для Twitter


  Занятие 5: Работа с SQLite через JDBC в Java

MyJDBC1-2: Пишем свой JDBC-драйвер. Реализуем интерфейс java.sql.Driver (9:02)

MyJDBC3: Подлючаемся к БД. Реализуем интерфейс java.sql.Connection (5:56)

MyJDBC4: Реализуем интерфейс java.sql.Statement (3:37)

MyJDBC5: Реализуем интерфейс java.sql.ResultSet (13:49)

MyJDBC6: Подведем итоги (2:27)

JDBC1: Установка и подключение SQLite JDBC (4:28)

JDBC2: Устанавливаем соединение с базой данных (1:26)

JDBC3: Правильная работа с исключениями при работе с базами данных. Try with resources (4:36)

JDBC4: Выполняем запрос к базе данных. SELECT (2:30)

JDBC5: Создаем БД из Java. Оператор CREATE (6:17)

JDBC6: Добавляем данные. Оператор INSERT (2:50)

JDBC7: Создаем первичный ключ. Primary key (1:37)

JDBC8: Удаляем таблицу из БД. Оператор DROP (1:52)

JDBC9: Уточняем запрос INSERT (2:46)

JDBC10: Получаем данные из таблицы + ускоряем работу в IDEA с помощью .var (2:00)

JDBC11: Подготовленный запрос. PrepareStatement (4:39)

JDBC12: Подведем итоги (2:17)

Код занятия

Рабочий проект: Напишите систему управления проектами

(NEW) Дополнительно почитать про sqlite


  Занятие 6: Работа с системой контроля версий git

Git1: Краткое введение в систему контроля версий git (3:28)

Git2: Инициализируем репозиторий git init (3:17)

Git3: Задание: Настройка и установка git

Git4: Структура git: work tree, staging area, основное хранилище (2:17)

Git5: Работа со Staging Area. Помещаем в staging и удаляем. Делаем файлы отслеживаемыми (2:56)

Git6: Коммитим файлы в репозиторий. Откатываем коммиты (6:41)

Git7: Как работать с ветками (branch) в git. Создаем ветки, переключаемся между ними в системе контроля версий (4:42)

Git8: Как слить ветки в git? Объединяем рабочие ветки. Удаляем лишние (1:45)

Git9: Используем облачное хранилище на примере github. Клонируем репозиторий к себе на компьютер (1:29)

Git10: Обновляем локальный репозиторий, когда репозиторий в облаке изменился. (1:52)

Git11: Делаем изменения в локальном репозитории и пушим их в облако (2:29)

Git12: Исключаем файлы из репозитория: .gitignore

Домашнее задание: работа с репозиторием в облаке


  Занятие 7. Элементы мета-программирования в Java: механизм reflection

REFLECTION1: Введение (9:46)

REFLECTION2: Создаем экземпляр класса (2:17)

REFLECTION3: Вызываем метод (3:56)

REFLECTION4: Получаем доступ к приватным полям (3:14)

REFLECTION5: Готовимся к анализу чужого класса (2:46)

REFLECTION6: Анализируем пакет (1:06)

REFLECTION7: Анализируем описание класса (7:37)

REFLECTION8: Анализируем поля класса (1:44)

REFLECTION9: Анализируем конструкторы и методы класса (4:48)

Домашнее задание

Код занятия

(NEW) Вопросы-ответы по reflection


  Занятие 8. DI, Аннотации, парсинг XML, создаем свой аналог Spring (framework "Winter" is coming)

DI1: Что такое Dependency Injection (Внедрение зависимости) (10:52)

D2: Что такое XML, разница между декларативным и императивным программированием (6:29)

DI3: Конфигурируем наш фреймворк Winter в xml, пишем config.xml. Что такое бины (beans) (10:55)

DI4: Начинаем разрабатывать наш мини-фреймворк Winter по внедрению зависимостей и конфигурированию через xml-файлы (8:53)

DI5: Создаем классы предметной области: Bean и другие (7:14)

DI6: Разбираемся с DOM Parser и учимся парсить XML (14:37)

DI7: Парсим вложенные теги в XML (10:36)

DI8: Используем reflection для создания экземпляров распарсенных классов (4:52)

DI9: Настраиваем поля классов в соответствии с XML (5:35)

DI10: Преобразуем динамические типы в статические. Выводим тип данных (2:54)

DI11: Используем рекурсию для правильной работы с суперклассами (3:58)

DI12: Внедряем ссылочные зависимости (3:19)

DI13: Поздравляем! Реализована первая версия нашего мини-фреймворка Winter по работе с зависимостями (0:58)

Annotation1: Зачем и где нам могут пригодится самописные аннотации? (2:36)

Annotation2: Создаем свою аннотацию @Auto (1:57)

Annotation3: Ограничиваем аннотацию, используя @Target (2:31)

Annotation4: Используем переменные (поля) в аннотации (1:41)

Annotation5: Рекурсия в аннотациях, значение по умолчанию и массивы значений (3:11)

Annotation1: Применяем на практике в нашем фреймворке, парсим аннотации с помощью reflection (9:25)

Код занятия

Домашнее задание

Сертификат об окончании

1 неделя

Определение даты старта ближайшего потока

Команда выбирает уникальную тему проекта

Clean code.

Agile, Scrum, git.

Maven, Spring DI/IoC.


2 неделя

SQL (Структура БД, основные запросы).

Spring JDBC.

Spring Security.


3 неделя

Hibernate (Config, Entity)

Hibernate (CRUD, Native SQL, HQL, Criteria)

REST. Debug + Rest client + JSON.


4 неделя

Основы HTML/СSS/JS + Pagination.

Junit + TDD. Интеграционные и юнит-тесты.

XP + TDD. Практика парного программирования.


5 неделя

Проектирование высоконагруженных систем. UML. Введение в Design Patterns.

Design Patterns.

Пре-релиз, UML диаграмма приложения.


6 неделя

SOAP.

Подготовка к собеседованию.

Резюме. Релиз.

Как трудоустроиться?

Пять этапов смены профессии на Java-программиста

1
2
3
4
5

ШАГ 1

Подготовительные курсы к стажировке

Пять месяцев поддержки преподавателя и пять подготовительных курсов помогут вам с нуля освоить основы языка Java. 

Легкие для усвоения видео-лекции по 3-15 минут. Тестовые задания, домашние задания и практические работы. Более 500 лекций и практических заданий

РЕЗУЛЬТАТ

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

Отлично владеете JavaCore: ООП, коллекции, многопоточность, исключения, потоки ввода-вывода, сокеты и работа через сеть, юнит-тестирование, TDD, git, SQL и прочее

ШАГ 2

Курс-стажировка по Java

Полтора месяца вы в команде 10 человек с поддержкой профессионального программиста готовите уникальный проект с открытым исходным кодом с нуля и включаете его в свое резюме.

РЕЗУЛЬТАТ

В вашем резюме в качестве последнего опыта работы указано "Java Developer в Khasang"

Ваш список технологий для резюме расширяется: Spring(Core, Web, JDBC, Security), Hibernate, postrgreSQL, tomcat, Maven/Gradle, REST, SOAP, UML, Agile/Scrum

ШАГ 3

Опен-сорс сообщество Khasang.opensource

Вас, как выпускника курса-стажировки мы примем в опен-сорс сообщество Khasang.opensource, где вы вместе со своей командой продолжите разрабатывать свой проект или подключитесь к проектам других потоков, чтобы расширить свой опыт работы в резюме

РЕЗУЛЬТАТ

Стаж работы JavaDeveloper в Khasang у вас с 1,5 месяцев дорастает вплоть до 1 года! Что открывает вам в 32 раза больше вакансий.

ШАГ 4

Трудоустройство на Java junior

В опен-сорс сообществе Khasang.opensource вам помогают успешно пройти собеседования, подтянуть какие-то темы, ведь уже во всех первых потоках уже трудостроились 9 из 10 участников.

РЕЗУЛЬТАТ

Официальная работа Java Junior Developer.

С зарплатой в городах миллиониках 50 000 – 80 000 рублей. 
(в городах поменьше с зарплатой 35 000 – 50 000 рублей)

Теперь 8 часов в день вы тратите не на нелюбимую работу, а на повышение уровня своей квалификации в Java, чтобы стать в течение года Java Middle Developer и зарабатывать в среднем 150 000 рублей в месяц.

ШАГ 5

Повышение вашей позиции до Java Middle Developer

Ваш стаж и опыт позволяет вам претендовать на повышение вашей позиции с Junior на Middle. В наших первых потоках все, кто стал Junior всего через год перешли на позицию Middle-разработчика

РЕЗУЛЬТАТ

Позиция Java Middle Developer.

С зарплатой в городах миллиониках в среднем 150 000 рублей в месяц 
(в городах поменьше с зарплатой 100 000 рублей в месяц)

Вы продолжаете повышать свою квалификацию в Java, чтобы еще в течение трех лет перейти на позицию Java Senior Developer и зарабатывать в среднем от 200 000 рублей в месяц.

Вы будете мотивированы

«Работа в команде очень сильно отличается от соло-разработки, появляется азарт, желание сделать больше, не отставать от других участников группы»

Изучите актуальный материал

«Требования по вакансиям Java фактически те же, что дает курс»

«Познавательный курс с насыщенной программой, соответствующей требованиям рынка вакансий!»

Получите реальный опыт

«Гораздо эффективнее и дешевле, чем на курсах «Специалист».  Дает уверенность тем, кто имел какие-то знания, но не имел опыта»

«С помощью данного курса удалось многое расставить по местам в голове, сэкономив при этом пару лет самостоятельного изучения»

Всегда помогут

«Ни какой лишней воды. Возможность задавать преподавателю текущие вопросы – это многого стоит!»

«В случае возникновения проблем с кодом всегда помогут, разберут ситуацию прямо на занятии»

По окончании курсов у вас будет сертификат

Но помните, что важнее сертификата – ваш уникальный командный проект с открытым исходным кодом, который вы указали в своем резюме

НАША КОМАНДА

Игорь Долгов

Основатель, автор курсов

Автор 5 курсов по JavaCore, за 4 года обучил более 10 000 учеников. 

Работал с компаниями: Банк Trust, Банк СОЮЗ, ЮниКредит, Аэрофлот, РЖД, СМП Банк и др.

Сергей Кузнецов

Senior Java Developer at EPAM

Saint Petersburg, Russian Federation

Developer at IDBS project with Java 8, Spring Boot, MongoDB, Elasticsearch, Docker, Jenkins, Jira, Git. - project done.

Full stack developer at Novartis GSM and Bilogics projects with Java8, Spring, Oracle, Hibernate, BackboneJS, Jenkins, Jira, Git.

Андрей поляков

Java Software Engineer

Full stack developer at Naumen Service Desk

Java SE8 + Groovy, Spring, Hibernate, JMS, JAXB;  GWT + native JS + css3, JSON;

highload with Lucene, Infinispan, JMS and HornetQ

Андрей Турубчук

Профессиональный преподаватель-разработчик

Java developer, teacher

направление Khasang.education

Подготовьтесь к стажировке с личным наставником на лучших практических курсах онлайн за 5 месяцев

Try Java: Попробуй Java на вкус

✔︎ Длительность: 1 неделя

✔︎ Лекций: 6 часов

✔︎ Синтаксис Light Java

✔︎ Анимация

✔︎ Сертификат

Курс Try Java

БЕСПЛАТНО 

Java 0: Быстрый старт в Java с нуля

✔︎ Длительность: 1 месяц

✔︎ Занятий: 8, лекций: 89

✔︎ Проектирование программ

✔︎ Синтаксис и основы ООП в Java

✔︎ Сертификат

Курс Java 0

13 475 Р 

Java 1: Крепкий фундамент в Java Core

✔︎ Длительность: 2 месяца

✔︎ Лекций: 14 часов

✔︎ База Java Core

✔︎ Паттерны проектирования

✔︎ Сертификат

Курс Java 1

18 282 Р 

Java 2: Java Core для профессионалов

✔︎ Длительность: 1 месяц

✔︎ Лекций: 10 часов

✔︎ TDD, JUnit, Maven, SQL

✔︎ Продвинутый Java Core

✔︎ Сертификат

Курс Java 2

12 980 Р 

На курсе-стажировке вы научитесь и сделаете следующее

1 Неделя. Clean code, Agile, git, Maven, Spring di

  • Вы со своей командой выберете уникальную тему проекта. Ведь именно уникальный проект, разработанный в команде с использованием современных Java-технологий – гарантия искреннего интереса работодателей к вам
  • Вы сделаете домашнее задание по Clean code и получите детальный Code Review. Ведь плохой Clean code – то, на чем заваливается 90% соискателей
  • Вы изучите основы Agile, Scrum и сразу примените их в своей работе над своим проектом
  • Подкрутите свои знания по git или изучите его с нуля. И начнете применять в команде! Ведь самостоятельно изучить git не так сложно, а вот применение в команде и командный опыт – во много раз сложнее, но вам теперь это будет по плечу.
  • Вы изучите с нуля самую популярную систему сборки Maven или докрутите свои знания, если пользовались ей ранее 
  • Изучите самый базовый фреймворк Spring DI/IoC для дальнейшего погружения в Spring на следующих неделях

Java Intern: Стажировка в команде на реальном проекте

✔︎ Длительность: 1.5 месяца

✔︎ Лекций: 18 часов

✔︎ Практика в команде

✔︎ Полноценный реальный проект

✔︎ Сертификат

Курс Java Intern

38 984 Р 

направление Khasang.open-source

Продолжите работать над своим проектом в команде единомышленников

OPEN-SOURCE: Командная работа

✔︎ Длительность: неограниченно

✔︎ Встреч: команда выбирает сама

✔︎ Новые проекты

✔︎ Новые технологии

✔︎ Взаимоподдержка

Сообщество

Khasang.open-source

БЕСПЛАТНО

Наши тарифы

Выберите подходящий именно вам

ГУМАНИТАРИЙ

Начинаете с полного нуля

Для вас особенно важно наглядное и понятное объяснение. С самого нуля. И тем не менее вас довели бы до уровня ТЕХНАРЬ и ГИК

8772

РУБЛЕЙ В МЕСЯЦ

длительность обучения 1 год

Опыт работы Java Developer в резюме

1,5 месяца курс-стажировка

10,5 месяцев консультаций у личного преподавателя на подготовительных курсах

3 подготовительных курса для начинающих (TryJava, TryJava Advanced, Java0)

2 основных подготовительных курса (Java1, Java2)

ПОПУЛЯРНЫЙ ТАРИФ

ТЕХНАРЬ

Основы программирования уже знаете

Вы уже знаете циклы, массивы, функции, переменные, условные выражения. Вам нужно тонкости проектирования, архитектуры, ООП

14049

РУБЛЕЙ В МЕСЯЦ

длительность обучения 5 месяцев

Опыт работы Java Developer в резюме

1,5 месяца курс-стажировка

3,5 месяца консультаций у личного преподавателя на подготовительных курсах

основных подготовительных курса (Java1, Java2)

ГИК

Хорошо знаете JavaCore

Вам нужен опыт командной разработки и изучение Spring, Hibernate, SQL, git, Maven, postgreSQL, tomcat, Scrum 

17322

РУБЛЕЙ В МЕСЯЦ

длительность обучения 3 месяца

Опыт работы Java Developer в резюме

1,5 месяца курс-стажировка

1,5 месяца консультаций у личного преподавателя на подготовительных курсах

1 основной подготовительный курс (Java2)

Возможность сделать паузу во время обучения

Гарантия возврата первого платежа в течение 2-х дней после оплаты, если хоть что-то не подойдет

ИСТОрии Трудоустройства наших выпускников

От работы на металлургическом заводе до смены профессии и перехода в топовый Банк разработчиком

Признаюсь, долгий путь от "Hello world" до своего проекта был бы не таким долгим, если бы я сразу решился вложить в свое образование - это дает свои плоды гораздо быстрее.

Проблема в том, что курсы для человека, который работает на заводе - это достаточно большие денежные и временные затраты, да и часто человек после работы ничего делать не хочет. Что не скажешь про нормального программиста: Ты учишься постоянно, количество технологий даже для одного направления зашкаливает, и лучше быть постоянно в курсе нового, иначе можешь устареть на рынке труда. Вот вам голая правда - хотите идти в программирование? - нужно многому учиться. И я выбрал именно это.

Дмитрий Львов

Middle Java Developer, Банк Точка

Не поехал учиться в Германию, потому как устроился на работу Java-разработчиком в России

В общем у меня ушло около года, чтобы пройти обучение и устроиться Java-программистом. Но это считайте с абсолютного нуля.

Я особо и не рассчитывал на то, что все будет понятно в книжке. Книжка мне нужна была только для предварительного знакомства с java.

перед тем как приступить к обучению на онлайн курсах.


Когда я наткнулся на курсы по прораммированию (профессия java-разработчик) я понял, что это как раз то, что я искал.


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

НИКИТА ПРОЦКИЙ

Java Developer, IT-интегратор iiko

Олег работал в обычной техподдержке, а стал старшим Java-программистом (Middle Java Developer) в международной компании с оборотом 1 млрд $!

Все это помогло мне успешно пройти собеседование, и я стал Junior Software Engeneer в компании EPAM, а еще через год я повысил свой уровень до Middle java developer

Как известно, учиться чему-то можно в ВУЗе, самостоятельно по книжкам и на курсах. Курсы обычно платные, но на много дешевле, чем в обычно в ВУЗе. И быстрее.

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

Олег Григорьев

Middle Java Developer – EPAM Systems

Краткий путь к Java Middle Developer от Вадима

Здравствуйте. Меня зовут Вадим и я теперь уже java-разработчик.

До прихода в Хасанг я имел неплохие знания java-core и имел общее ИТ-образование, работая с сетевыми технологиями. Мне хотелось поделать чего-нибудь в команде, пощупать популярные фреймворки и оценить насколько мне все это интересно.

В Khasang Под руководством Сергея Кузнецова команда из 8 человек активно писала веб-приложение в течение нескольких месяцев и результат был замечательным.

Ближе к концу лета подвернулась возможность сменить работу на джавера. Полуторачасовое собеседование пролетело незаметно, в целом ничего сложного: core и SQL. Было несколько вопросов, ответов на которые я точно не знал и честно признался, что тут надо гуглить. С другой стороны, все знать вряд ли кому удастся.

Буквально на следующий день я получил оффер.

ВАДИМ ТАРАНТИН

Senior Java Developer, Informatica 
(до этого Middle Java Developer, Сбербанк технологии)

+7 (499) 112-07-20, support@khasang.io

(с)2005-2018г. Khasang. ИП Черемных В. А. Все права защищены.

ОГРНИП: 315774600398466