Стажировка JavaRush — твоя первая работа

Доступно с 35-го уровня

Получить первую работу ох как непросто. Даже если вы усердно занимались, прошли все 40 уровней, перешерстили десяток тематических книг и знаете весь Java Core от и до, вы не застрахованы от того, что рекрутер не поверит в ваше резюме. Просто потому, что эти ребята хотят видеть в команде людей с реальным практическим опытом. Что же теперь делать? Как преодолеть ситуацию «чтобы получить опыт, нужен опыт»?

Всё не так плохо: «хакнуть» систему можно! Причём легально, без нарушения законов и общественных норм или лжи. Есть несколько способов это сделать, один из них — пройти стажировку JavaRush, во время которой вы изучите новые технологии и поработаете над настоящим проектом.

В этой статье мы расскажем о том, что представляет собой наша стажировка, как туда попасть и что это даст.

Что такое стажировка JavaRush?

По сути, стажировка JavaRush и есть самая настоящая работа программистом, только обучающая. Вы три месяца работаете над серьезным проектом, параллельно получая теоретические сведения. Раз в неделю вам выдают блок, который нужно выполнить. В конце недели вы участвуете в обсуждении этого блока, исправляете, если нужно, ошибки и корявости, после чего получаете следующее задание. И так, пока проект не будет готов.

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

Что изучают?

На выходе вы получите опыт работы с платформой Java Enterprise и полнофункциональное приложение на Spring/JPA Enterprise c авторизацией и правами доступа на основе ролей с использованием наиболее популярных инструментов и технологий Java. А это Maven, Spring MVC, Security, JPA (Hibernate), REST (Jackson), Bootstrap (css,js), datatables, jQuery + plugins, Java 8 Stream and Time API.

План стажировки.

Неделя 1: Системы управления версиями

  • Системы управления версиями. VCS/DVSC.
  • Основы Git
  • Date and Time API in Java 8
  • Java 8 Stream Tutorial

Неделя 2: Maven. WAR. Веб-контейнер Tomcat. Сервлеты. Логгирование

  • Java 8 Lambda
  • Основное в Java 8
  • Среда сборки проектов Maven
  • Build Lifecycle
  • Запуск Tomcat из IDEA. Динамическое обновление без передеплоя.
  • Добавление зависимостей логирования в проект
  • Log4j, Logback
  • Управление логированием по JMX
  • Контекст приложения. Деплой в Tomcat без IDE. Remote debug

Неделя 3: Обзор Spring Framework. Spring Context. Слои приложения. Создание каркаса приложения.

Архитектурные слои приложения в Spring
  • IoC, DI, IoC-контейнер
  • Паттерн DTO. Value Object и Data Transfer Object
  • Обзор Spring Framework

Неделя 4: Spring context, JUnit, ORM

  • Spring изнутри. Этапы инициализации контекста
  • JUnit 4
  • Базы данных. Обзор NoSQL и Java persistence solution без ORM
  • Spring Jdbc Template

Неделя 5: Hibernate. JPA

  • Повторяем Lambda и Stream
  • Инициализация базы при старте приложения
  • mock: подмена контекста при тестировании
  • Hibernate. Другие ORM: TopLink, ElipseLink, EBean (used in Playframework).
  • JPA. JPA Performance Benchmark.
  • Конфигурирование JPA. Сканировние Entities. JPA definitions
  • HQL/ JPQL.
  • JPA Criteria API. Unified Queries for Java
  • Java 8 Time API Converter
  • Транзакция. ACID. Уровни изоляции транзакций.
  • Добавляем поддержку HSQLDB.

Неделя 6: Транзакции. Профили Maven и Spring. Пулы коннектов. Spring Data JPA. Spring кэш

  • Выбор реализации пула коннектов: BoneCP, Commons Database Connection Pooling, HikariCP.
  • Spring Data JPA
  • Кеширование в Spring Framework
  • Распределённая система кеша ehcache

Неделя 7: Кэш Hibernate. Spring Web MVC

  • Кэш Hibernate.Уровни кэширования Hibernate
  • Spring Web. Паттерн MVC
  • JSP, JSTL, internationalization
  • Динамическое изменение профиля при запуске. Конфигурирование Tomcat через maven plugin и jndi
  • Spring Web MVC
  • Spring Internationalization

Неделя 8: REST

  • Tomcat pool. Auto generate DDL
  • Тестирование Spring MVC
  • REST контроллеры
  • Тестирование REST контроллеров. Добавление Jackson
  • jackson-datatype-hibernate. Тестирование через матчеры
  • Тестирование через SoapUi. UTF-8

Неделя 9: Bootstrap. Datatables. AJAX. jQuery. Spring Security

  • WebJars.
  • Bootstrap. Datatables
  • AJAX. jQuery. Notifications
  • Добавление Spring Security

Неделя 10: Шифрование пароля. Binding. Spring Security Test.

  • Собственный провайдер авторизации. Шифрование пароля
  • Binding/Validation
  • Работа с Dandelion Datatables через Ajax
  • Spring Security Test

Неделя 11: CSRF. JSTL. Taglib.

  • Защита от межсайтовой подделки запроса (CSRF)
  • Создание страницы логин, профиля и регистрации
  • JSTL/ Taglib
  • Обработка исключений в Spring MVC

Неделя 12: Деплой в PaaS-платформу Heroku.

  • Деплой в PaaS-платформу Heroku.

Неделя 13: Миграция.

  • Spring Boot 2.4
  • Spring Data Rest/HATEOAS
  • Lombok
  • H2
  • Thymeleaf

Как попасть на стажировку?

Всё очень просто. Вот что нужно сделать:

  • Дойти до 35 уровня JavaRush или выше.
  • Иметь подписку Premium Pro или расширить свою подписку до таковой.
  • Загрузить себе тестовое задание.
  • Выполнить тестовое задание.
  • Загрузить его на Github.
  • Открыть форму заявки на странице “Стажировка” и заполнить необходимую контактную информацию
  • Добавить ссылку на решенное задание в специальное поле в этой форме.
  • Отправить задание на автоматическую проверку: это займет 10-20 секунд, после чего вы узнаете результат.

После этого вас определят в группу к преподавателю. Если вы не справились с тестовым заданием за отведенный срок, то сможете получить новое тестовое задание перед следующей стажировкой.

Как проходит?

Проект рассчитан на 12 недель (3 месяца). Каждую неделю вы будете изучать очередную технологию и добавлять очередной кусок функциональности к вашему проекту.

В начале каждой недели вы будете получать видеозапись урока (длиной 2-3 часа!), на которой разбирается и объясняется очередная технология, а также дается задание на дом, которое вы должны сделать за неделю. Задания средней сложности. Если в первый день вы во всем разобрались, то сделайте его за 1-2 дня. Если сразу не поняли, то в неделю должны уложиться.

Через неделю куратор стажировки выкладывает свое решение, и вы можете посмотреть/разобрать его, независимо от того, заработало у вас ваше решение или нет. Вокруг стажировки образовано очень полезное комьюнити, где можно получить дополнительные материалы, проконсультироваться и обсудить решение и изучаемые технологии.

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

Что говорят об онлайн-стажировке ее участники

Вот парочка примеров:

Главное для меня в этом проекте — это возможность изучить на практике множество наиболее популярных технологий. «На практике» — это ключевое слово.
Очень понравилась методика преподавания, при которой проходишь естественный путь от изучения базовых понятий к применению соответсвующих фреймворков. Плюс к этому — реализация одного и того же функционала разными способами. Таким образом складывается максимально целостная картина.
Конечно же, возможность общения с другими участниками проекта и обратная связь с преподавателем — это само по себе много стоит.
Предлагаемый курс содержит целую кучу технологий, которые рассматриваются поэтапно, и прикручиваются к уже работающему проекту. Если рассмотреть стек технологий то, можно легко потеряться в самих названиях (так их много), не говоря уже о том, что изучить их за короткий срок. Но на Online-стажировке JavaRush мы все это разобрали и получили отличный опыт.
Что касается общего мнения о курсе, то это как раз то, что нужно после квестов JavaRush. Вы получите очень хорошие знания, и что важнее, поймете, как и куда их применить.

Итоги: зачем нужна стажировка

  • «Легальный» способ получить первый опыт
  • Знание кучи технологий JavaEE и полезных фреймворков
  • В вашем резюме будет реальный проект с указанием изученных технологий, который можно выложить на GitHub
Комментарии (1173)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
EVgenius
Уровень 18, Москва
16 ноября, 00:23
"Мы публикуем анонс за несколько недель до нового набора в группе Random..." Долго искал в группе Random прошлый набор. Выручил, как всегда, Google. Группа "Онлайн-стажировка"
Nick
Уровень 39, Эстония
8 ноября, 16:43
Нужен intelij idea ULTIMATE для прохождения стажировки или есть варианты как то eclipse настроить? Что-бы работать с sql / spring и тд ? Благодарю за ответ
Justinian Judge в Mega City One Master
9 ноября, 20:22
если ничего не поменялось, на стажировке дадут ключ на 6 месяцев на Ультимейт. Или воспользоваться бесплатным вариантом на 3 месяца: https://javarush.ru/forum/346
Nick
Уровень 39, Эстония
9 ноября, 20:39
спасибо большое , надеюсь у меня получится) 😃
Зепп Бранниган Admin в JavaRush Moderator
10 ноября, 08:39
На стажировке используется именно IntelliJ IDEA и ключ Вам дадут, не волнуйтесь.
vaik
Уровень 11, Russian Federation
14 ноября, 15:10
Получил ключ на Степике по местной инструкции.
Maria1504bu
Уровень 2, Ukraine
6 ноября, 13:27
Java-университет идет как полностью отдельный курс? То есть если я хочу и там учиться и проходить лекции здесь, то нужно полностью оплачивать два продукта?
Зепп Бранниган Admin в JavaRush Moderator
8 ноября, 09:49
Добрый день, Мария. Ответили Вам ЛС.
Nick
Уровень 39, Эстония
5 ноября, 10:42
После нового года когда ближайшая стажировка?
Justinian Judge в Mega City One Master
5 ноября, 21:19
по идее в начале января начало набора, конец января - начало стажировки, потом аналогично в мае.
Nick
Уровень 39, Эстония
5 ноября, 21:41
Благодарю
2DaMoon senior kumir developer
28 октября, 13:28
Ура, добрался ;) Осталось «всего-то» за +- месяц изучить основы спринга, аннотации, сикуль, гит и много чего еще)
Женя
Уровень 2
5 октября, 20:46
Я конечно только начал изучать коды...но всё же интересно, где можно попробовать тест и можно ли его проверить? Извиняюсь за русский (я на итальянском лучше)
Justinian Judge в Mega City One Master
6 октября, 11:51
тестовое задание открывается на определенном уровне - 35. Хочешь попробовать? Пробуй - напиши CRUD на Spring Boot, entity на 10 полей, с валидацией, паджинацией и фильтрацией данных. В качестве БД MySQL или PostgreSQL Проверишь просто - запускаешь приложение, сохраняешь, удаляешь, обновляешь, запрашиваешь данные, и смотришь что возвращает твоя программа и что там в БД, сохраняются, удаляются или обновляются ли данные соответственно с твоим запросом. Ну и валидацию проверишь, оно не должно давать сохранять или менять на некорректные значения. Паджинацию проверишь, и фильтрацию - при GET запросах, ты можешь выбирать разные фильтры, показать всех безухих эльфов к примеру или автомобили только красного цвета, критериев сортировки может быть несколько. Вот так ты сможешь и попробовать тест и все проверить :) Если есть вопросы из серии, а что это такое вообще, и ты не знаешь с чего начать, значит нужно фокусироваться на изучении джава, чтобы дойти до того момента, когда ты будешь знать, как подходить к таким заданиям. Если знаешь что делать, начал делать, но есть вопросы - можешь задавать в разделах Чате/Форуме/Помощь
Женя
Уровень 2
6 октября, 21:12
В общем не сложно, понятно. Тогда мне интересно другое...есть ли тест при котором можно понять это уже хотя бы Junior или нет?!
Justinian Judge в Mega City One Master
6 октября, 21:53
Нету. Джуниор это название позиции в компании. Тот, кто в одной компании джуниор может быть сильнее чем тот, кто в другой компании синиор. Это очень условное понятие, типа как "веселый, угрюмый", для одних анекдот расскажешь, и ты уже веселый человек, а для других, положишь зал на 300 человек от смеха, и скажут, нет, как-то не очень, ты угрюмый. Поэтому, для кого-то ты будешь джуном, для кого-то нет, это зависит от того, кто оценивает. Для понимания, какой приблизительно уровень - ходят на собеседования, одно не показатель, но 10 будет уже понятно, все завалены, или много удачно прошедших. + вариант посмотреть вакансии, смотри требования и примеряй к себе, что знаешь, что не знаешь, подходишь ты позиции или нет. По среднепотолочному критерию, стажер это человек , который прошел джава кор, основы HTML, SQL, как-то так. Джун это тоже самое только сверху maven/git/SQL/ACID/transactions/PostgreSQL или MySQL/jdbc/hibernate/junit/mockito/servlet api/http/rest api/json/jackson/solid/MVC/IoC/Spring MVC/Spring Data/Spring Security/Spring Boot ну и хороший кор, сложности алгоритмов, структуры данных, коллекции, базовые алгоритмы, Stream API, дизайн паттерны и тд и тп, главное не сильно плавать, кор должен быть хорошим. Как-то так, в принципе, стек технологий на джуна/мидла/синиора +/- одинаковый, просто требуют в разной степени глубины понимания и опыта.
George
Уровень 33, Москва, Россия
11 октября, 14:08
Спасибо за ориентир
Антон
Уровень 36, Санкт-Петербург
12 октября, 06:55
Здравствуйте. А вы часом не в курсе в каком формате будет проходить взаимодействие, в тестовом задании? Я себе это представляю так, что мы будем получать URL запросы, и возвращать JSON объекты или как то иначе?
Justinian Judge в Mega City One Master
12 октября, 07:23
да, самый обычный спринг контроллер, который получает, реквест в каком-то виде, например набор полей, дергает сервис, получает результат и возвращает этот ответ, который потом сериализуется в JSON
tov.Sergei Работает в МЧС
13 октября, 15:03
половина англоязычных слове не понятны, но очень интересно было прочитать)
Антон
Уровень 36, Санкт-Петербург
16 октября, 10:21
А можно ещё один глупый вопрос? Я тут нашёл задание за 2017 год. И немного растерялся. Вопрос такой сейчас задания другое (С более современным стеком)?. А то про Spring boot в старом ничего. Или может всё таки нужно разобраться со старыми решениями?
Justinian Judge в Mega City One Master
17 октября, 22:02
Или может всё таки нужно разобраться со старыми решениями?
лично я не вижу смысл, если видишь смысл для себя - разбирайся
А то про Spring boot в старом ничего.
В новом задании конфигурировать спринг проект не нужно, да и Spring boot использует Spring mvc под капотом, поэтому используется оно в тестовом или нет - не важно. Проект стажировки никак не связан с тестовым. Разве что использование спринга и хибернейта - общее. На самой стажировке Spring Boot будет, как и Spring MVC.
Антон
Уровень 36, Санкт-Петербург
18 октября, 16:40
Спасибо вам за ответ, немного успокоили. А то я, во времени очень ограничен, и пытаюсь изучить только необходимое для тестового задания.
Justinian Judge в Mega City One Master
18 октября, 16:46
на здоровье, обращайся, а ты планируешь на следующую стажировку? А что значит ограничен во времени, у тебя мало времени на учебу сейчас, или ты хочешь непременно попасть именно на след стажировку?
Антон
Уровень 36, Санкт-Петербург
2 ноября, 10:16
Долго не отвечал, прошу прошения. Да, я хочу непременно попасть на зимнюю стажировку. И да, сейчас мало времени на занятия в связи с сезоном на работе. Попробовал изобразить старое тестовое задание но на Spring boot. https://github.com/PassanteAnton/Game.git
Justinian Judge в Mega City One Master
5 ноября, 21:27
Попадешь :) Будет почти месяц на решение тестового, за это время решишь, за это время решают те, кто спринга никогда в глаза не видел, так что не переживай. Главное чтобы на стажировку было время, около 15-20 часов в неделю
Андрей Шубный
Уровень 42, Москва, Russian Federation
6 ноября, 20:04
Подскажите пожалуйста, для выполнения подобного задания будет достаточно знаний полученных из курсов JR (Core+Multi+Collections)?
Justinian Judge в Mega City One Master
6 ноября, 23:38
Я скажу так, те кто прошел 3-4 квеста джава раша подобное задание решат. На сотни решающих задание, мне известеы единичные случаи, когда задания не решались, но в этих случаях либо поздно начинали решать либо было мало личного времени на джаву/задание Я советую мониторить начало стажировки, был период когда и за полтора-два месяца начинали набор, в начале декабря, но могут и в начале января открыть, и как только будет задание, сразу приступать к решению, активно пюспрашивая в разделе Чат - Стажировка, если на чем-то застреваешь. И тогда все будет ок. До того времени, ЕСЛИ будет время можешь погуглить Spring Boot CRUD , у Сулейманова Евгения на канале есть видео и пример кода на гитхабе, попробуй найти готовый проект, запустить у себя, сделать похожий но чуть изменив его, поиграться. Программирование это не про знания, которые позволяют решать задачу. Это про навыки, которые позволяют решать задачу по неизвестных доселе технологиях и которую неизвестно как решать. И поэтому, прошедшие три-четыре квеста, закаленные валидатором ребята справятся, поскольку дело не в знать решение, а в умении его найти. Тем более на джава раше хорошее коммюнити, и одного тебя с проблемами не оставят, главное спрашивай и обращайся, Чат, Помошющь, Форум.
Андрей Шубный
Уровень 42, Москва, Russian Federation
7 ноября, 15:55
Спасибо!
Justinian Judge в Mega City One Master
18 ноября, 06:24
нет, попыток хоть 100 штук, там автоматическая проверка, не прошло, подаешь еще раз. По поводу валидатора - в мире профессионального программирования юнит тесты (то что ты называешь валидатором), автотесты (артефакт работы QA Automation) и прочие виды автоматических тестов это неотъемлимый аттрибут работы. И ты их будешь писать ) Поэтому, я советую не противоставлять и не бороться с ними, а подружиться. Они не хорошие, не плохие, это просто проверка (валидатор кстати пропустит в большем количестве случаев, он много чего не учитывает, а человек бы не пропустил чаще, просто когда проф программист скажет - нет, это не то, это одно эмоциональное восприятие, а когда нечто где-то автоматическое говорит - нет, то вызываются совершенно другие эмоции :)) ), когда меняется задание на новое (тогда могут быть накладки, что-то не учитывается тестами) но всегда есть коммуникация + время на тестовое задание не меньше 3-4 недель обычно, с головой хватит. Другие задания сдали - и ты сдашь, не переживай. Есть подраздел Стажировка в разделе Чат, там будет активный движняк, будут проблемы - пиши там. По поводу подписки за 50 за попытку сдачи - правила могут отличаться, когда я занимался было так, но может и не нужна подписка - это ты уже сам увидешь когда будет набор на стажировку, сможешь ли скачать тестовое задание без подписки, можешь ли отправить на проверку. Но по моему опыту, 99% с тех кто отправлял задание - прошел на стажировку, пусть может нужно было повторно отправлять из-за недочетов или моментов, но тем не менее.
Nick
Уровень 39, Эстония
18 ноября, 07:06
Спасибо большое за такой развернутый ответ , очень благодарен , настроение поднялось)
Roman Pryshchepa Java Developer Expert
28 сентября, 11:35
Набор на стажировку окончен. Следующий набор будет ориентировочно через 3 месяца.
Илья Аров
Уровень 36, Москва, Россия
28 сентября, 18:17
Эх жаль, думал завтра сдать тестовое, вроде было до 30ого....
Roman Pryshchepa Java Developer Expert
29 сентября, 07:04
В теме стажировки все указано: В понедельник, 23-го августа, стартует набор на осеннюю онлайн-стажировку JavaRush. Набор будет продолжаться до 28 сентября (вы как раз успеете всё обдумать и решить тестовое задание), а сами занятия начнутся 30 сентября 2021 года. ... набор на онлайн-стажировку продолжается до 28-го сентября включительно (до 14:00 по МСК).
Дмитрий Backend Developer в Газпромбанк
25 сентября, 16:34
Запрыгнул в уходящий поезд. Признаюсь, тестовое задание далось мне очень нелегко, и много раз хотелось махнуть рукой и сказать: ну не моё это, смирись уже)
Александр
Уровень 35, самара, Россия
27 сентября, 15:43
как так? ты ж девелопер как написано в газпромбанке!!??
Дмитрий Backend Developer в Газпромбанк
29 сентября, 15:03
На оракле
Nancy Smith
Уровень 35
22 сентября, 13:54
java.lang.AssertionError: При запросе POST /rest/players/{id} с id в теле запроса, должны быть обновлены поля, кроме поля id Expected :PlayerInfoTest{id=5, name='Амарылис', birthday=2001-04-24} Actual :PlayerInfoTest{id=5, name='Амарылис', birthday=2001-04-24} а что не так то?...
Justinian Judge в Mega City One Master
22 сентября, 20:19
это вывод toString он не все поля показывает, представь что ты и я это джава объекты У нас 100 полей - имя, фамилия, возраст и тд.. А туСтринг такой: public String toString() { return "race = " + race; } И дальше идет сравнение: ты.equals(я); и будет AssertionError (ведь ты это не я) но вывод будет: Expected: {race=human} Actual: {race=human} сравнивает по всем полям, а на экран выводит только по тем, которые в туСтринг скорее всего проблема в дате
22 сентября, 21:34
Я в целях траблшутинга добавил полный состав полей в PlayerInfoTest.toString() - помогло найти различия между моим выводом и требуемым. Правда, при отправке на валидацию пришлось полностью вычищать свои изменения из папки test.
Maksim
Уровень 35, Пермь, Россия
26 сентября, 14:53
Скорее всего уже поздно, но столкнулся с такой же проблемой в двух тестах. Оказалось все очень просто, не делал проверку на banned поле, когда добавил все стало работать
Anonymous #2489173
Уровень 35
22 сентября, 08:16
А зачем в стажировку включать мавен и спринг, если они уже используются в тестовом задании?
Justinian Judge в Mega City One Master
22 сентября, 20:20
а зачем на мехмате преподают математику, если математика требуется при поступлении?
Anonymous #2489173
Уровень 35
23 сентября, 09:46
не знаю, я на мехмате не учился. если там всё то же, что требуется при поступлении, то смысла и правда нет
Justinian Judge в Mega City One Master
23 сентября, 11:13
если на мехмате не нужно изучать математику, то у меня вопросов нет
Anonymous #2489173
Уровень 35
8 октября, 02:11
сам придумал аргумент, сам с ним согласился, у самого отпали вопросы, такой самостоятельный мужичок, пярм не нарадуюсь)
Kamil Selby
Уровень 5, Санкт-Петербург, United States
29 октября, 13:10
Тебе был предоставлен ответ "вопросом" на твой вопрос!
Anonymous #2489173
Уровень 35
1 ноября, 03:12
А я хотел обычный ответ, не вопросом и не лицемерное подлизывание администрации от чувака, который пару месяцев назад хаял высшее образование, а теперь внезапно равняется на мехмат. Надо ж определиться - джавараш отличается от стандартного образования или двигается по тем же стандартам?: