JavaRush/Java блог/Онлайн-стажировка /Онлайн-стажировка JavaRush: старт зимнего набора
Dr-John Zoidberg
41 уровень

Онлайн-стажировка JavaRush: старт зимнего набора

Статья из группы Онлайн-стажировка
участников
Друзья! Декабрь на дворе, и если вы ждали знака, который покажет, что бы такого интересного и полезного сделать в новом году, то вот он: 12-го декабря стартует набор на зимнюю стажировку JavaRush. Чтобы вы успели всё обдумать, решить тестовое задание, а также хорошо провести праздники, набор продлится вплоть до 24-го января 2020 года. Онлайн-стажировка JavaRush: старт зимнего набора - 1Согласно условиям стажировки, для поступления вам нужно справиться с тестовым заданием будучи на 35-м уровне JavaRush (или выше). Так что если вы ещё не успели дойти до 35-го уровня — поднажмите, время ещё есть. Чтобы подать заявку и получить тестовое задание, переходите в раздел стажировки, и нажимайте на кнопку “Подать заявку”. Учёба на онлайн-стажировке начнётся 30-го января и продлится три месяца. Ниже — ответы на часто задаваемые вопросы об онлайн-стажировке. Если после прочтения у вас ещё есть, что спросить, пишите вопросы в комментарии. Удачи в поступлении! (И в Новом Году!)

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

Стажировка дает уникальную возможность получить реальный опыт в работе с технологиями, которые требуются для работы Java Junior, но их непросто, а некоторые — и вовсе невозможно освоить, обучаясь самостоятельно:
  • Spring,
  • Spring MVC,
  • Spring Security,
  • Hibernate,
  • JPA,
  • JSP,
  • JSTL,
  • ORM,
  • REST,
  • Bootstrap,
  • AJAX,
  • jQuery,
  • Git,
  • Junit.
Разумеется, за 12 недель стажировки вы не успеете изучить эти весьма серьезные технологии досконально. Тем не менее, вы получите представление о том, как их используют в реальных проектах и сможете законно упомянуть их в своем резюме.

Сколько времени потребуется на стажировку?

Записывайтесь только если сможете уделять обучению не менее 6-8 часов в неделю.

Каковы условия участия?

  • уровень на JavaRush 35 или выше;
  • у вас есть (или была, но закончилась меньше года назад) годовая подписка Internship, Internship+, Mentor или Premium Project. Также подойдёт активная подписка PREMIUM PRO;
  • вы осилили тестовое задание, и получили подтверждение на почту с дальнейшими инструкциями.
Если вы уже дошли до 30-го уровня, но до 35-го ещё не добрались, «качайтесь» быстрее! Времени достаточно: набор на онлайн-стажировку продолжается до 24-го января включительно (до 14:00 по МСК).

Могу ли я проапгрейдить свою Premium-подписку до Premium Pro?

В обновлённом JavaRush механизм апгрейда подписок не предусмотрен. Если ваша подписка не предполагает участие в стажировке, вам нужно приобрести подписку PREMIUM PRO. Раньше участвовать в стажировке можно было только с годовой подпиской (Internship, Internship plus и пр.), теперь появилась возможность оплачивать стажировку помесячно, приобретая PREMIUM PRO. Оплату нужно вносить каждый месяц начиная с месяца набора (в данном случае — это декабрь или январь) и заканчивая последним месяцем стажировки — апрель. Итого — 4 или 5 месяцев оплаты подписки PREMIUM PRO.

Я сделал тестовое задание. Что дальше?

Оставьте свои контактные данные в разделе «Стажировка» -> «Отправить заявку». Также надо в заявке оставить ссылку на выполненное тестовое задание.

Я не могу сделать тестовое задание. Могу ли я всё равно поучаствовать в стажировке?

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

Когда будет следующая стажировка?

Стажировки JavaRush проходят 4 раза в год, раз в сезон. Ближайшая стажировка стартует в конце января 2020 года, следующая — ориентировочно в конце мая 2020 года.

Я уже прошёл стажировку/начал, но не закончил стажировку. Хотел бы пройти её ещё раз. Так можно?

Начиная с весеннего набора-2017, стажировку можно проходить сколько угодно раз. Если вы регистрируетесь на стажировку повторно, тестовое задание отправлять не нужно.

Сколько длится стажировка?

12 недель. Набор открыт до 24 января 2020 года включительно (до 14:00 по МСК), старт самой стажировки — 30 января. После 24 января заявки приниматься не будут. Если не успеете — придется ждать старта следующей стажировки, ориентировочно в конце мая 2020 года.

Как все будет происходить?

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

Как будут проходить занятия?

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

Как я буду получать отзывы и обратную связь?

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

Процесс регистрации на стажировку

  1. Заходите в раздел «Стажировка» -> «Отправить заявку».
  2. Загружаете задание.
  3. Решаете, заполняете все формы (для подачи заявки на стажировку желательно использовать почту google), нажимаете «Отправить заявку». После того, как вы отправили заявку на стажировку, на карте квестов (https://javarush.com/) статус стажировки изменится на «Проходится: вы отправили заявку на стажировку».
  4. Дожидаетесь результатов автоматической проверки задания (этот процесс занимает до 1 мин). В отдельных случаях может понадобиться ручная проверка задания, которая может длиться несколько дней.
Если будут вопросы по тестовому, задавайте их в этом топике или в чате Онлайн-стажировка. Если есть индивидуальный вопрос - его можно написать на почту internship@javarush.co.
Комментарии (65)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Roman Pryshchepa Java Developer Expert
24 января 2020, 13:17
Текущий набор на стажировку окончен. Следующий набор стартует ориентировочно в апреле-мае. Следите за публикациями в группе.
Roman Pryshchepa Java Developer Expert
21 января 2020, 07:35
ВАЖНО!!! Если при отправке задания на проверку (на сервер) не проходят тесты с after и before (при этом локально они проходят), то убедитесь, что при тестировании локально у вас сервер приложения запускается в часовом поясе UTC.
22 января 2020, 16:55
Ну у меня лично когда тесты локально проходят, не проходят на сервере и наоборот соответственно. Так что не нужно подстраивать под решение теста локального с выбором кораблей с датой производства от 3000 года до 3011.
Александр
Уровень 41
Expert
23 января 2020, 11:36
Если выполнено условие из поста выше, то и локально и на сервере тесты будут пройдены.
Александр
Уровень 36
15 января 2020, 10:20
Подскажите, делаю все по инструкции: 5. Собрать проект (в терминале: mvn -DskipTests=true clean install) Терминал идеи пишет: "mvn" не является внутренней или внешней командой, исполняемой программой или пакетным файлом. Получается мавен нужно ставить отдельно? и если да, то почему об этом в инструкции ни слова?
Александр
Уровень 36
15 января 2020, 10:20
Отвечаю сам себе: Нужно скачать мавен отсюда: https://maven.apache.org/download.cgi Затем нужно распаковать архив и добавить путь к папке bin в системную переменную PATH. Тогда сборка заработает.
Keks
Уровень 41
15 января 2020, 01:58
Я столкнулся с проблемой - п.5 TestTask: Собрать проект (в терминале: mvn -DskipTests=true clean install) Проект не собирается. Кто может подсказать от чего отталкиваться? Можно ли собрать проект не из командной строки? Встрял ппц
skybright Project Manager в construction company Expert
15 января 2020, 06:31
Проверь правильность переменной JAVA_HOME(путь к своей java 8 или выше) На Linux
export JAVA_HOME=/usr/java/jdk1.5.0_07/bin/java
В Windows
set JAVA_HOME="C:\Java\jdk7"
Keks
Уровень 41
15 января 2020, 12:30
Благодарю. Ваш совет очень помог, все получилось ;)
Artem Pyrishev
Уровень 35
14 января 2020, 18:58
Какой объем тестового задания ? Сколько примерно времени займет?
skybright Project Manager в construction company Expert
15 января 2020, 06:33
Задание не сложное, если знать технологии. Но так как их еще не знаешь, то дней 5. У меня заняло 25 часов
Artem Pyrishev
Уровень 35
16 января 2020, 12:11
Благодарю.
skybright Project Manager в construction company Expert
14 января 2020, 18:21
Чтобы прошел тест getAllWithFiltersShipTypeAfterBefore (тест проверяет чтобы 3011 год не включался!) ваш метод должен вернуть эти корабли: Hunter IV 3010 Mark IX Hawk 3003 Amaterasu 3007
20 января 2020, 17:12
У меня эти корабли и возвращает! Но на стажировку этот тест не проходит!
Валентин
Уровень 35
14 января 2020, 13:13
Грустно что не подключен javax.validation.constraint и pom менять нельзя пришлось кучу валидационного кода раскидывать по проекту, вместо нескольких проверочных аннотаций :(
Радик
Уровень 35
13 января 2020, 23:03
Подскажите, как проверить на EmptyBody у корабля ? Когда content("{}") updateShipEmptyBodyTest Ума не приложу...
Валентин
Уровень 35
14 января 2020, 07:00
content("{}") - значит ни одно из свойств корабля не должно изменятся, и корабль не должен сохранятся. А сама функция должна возвращать корабль id, которого было переданно (rest/ship/{id}). Но должна отдавать его в виде удобном для чтения Springом - это или Map<String, String> (в этом виде принимаются данные корабля и на вход) или new ResponseEntity<>(savedShip, HttpStatus.OK);
Радик
Уровень 35
14 января 2020, 07:43
Спасибо! Видимо, проверка на equals нужна?
Валентин
Уровень 35
14 января 2020, 08:51
Видимо понимаю не правильно, но все же... В тесте updateShipEmptyBodyTest уже содержится проверка с помощью equals ожидаемого и действительного результата ("actual.equals(expected)") Необходимо правильно реализовать функцию обновления в контроллере
@PostMapping("/{id}")
    public ResponseEntity<Ship> updateShipById(
            @PathVariable String id,
            @RequestBody Map<String, String> requestShip
    ){}
и запустить тест.
Радик
Уровень 35
14 января 2020, 10:03
Согласен. Но я не могу придумать, как правильно сделать проверку на пустоту тела. При этом я в качестве RequestBody принимаю экземпляр Ship, надеюсь так тоже можно. Т.е. что значит content("{}") ? Все поля экземпляра null ?
Радик
Уровень 35
14 января 2020, 10:45
Получилось, спасибо, друг)
Андрей
Уровень 41
10 января 2021, 13:54
А как в итоге сделал?
10 января 2020, 14:29
Подскажите, в чем может быть проблема - все тесты проходят и приложение работает как надо, а при подаче заявки выдает - Причина отказа: Test com.space.controller.GetAllTest.getAllWithFiltersAfterBeforeMinCrewMaxCrew line:245 message: Возвращается не правильный результат при запросе GET /rest/ships с параметрами after, before, minCrewSize и maxCrewSize. ?
Валентин
Уровень 35
13 января 2020, 16:54
Также столкнулся с этим. Тесты приложения успешны, а при подаче заявки тест не проходится. Не понятно в чем ошибка!
Валентин
Уровень 35
14 января 2020, 13:08
Угадал как закрыть тесты getAllWithFiltersAfterBeforeMinCrewMaxCrew и getAllWithFiltersShipTypeAfterBefore - прошел на стажировку. Нет слов - одни эмоции! Для нетерпеливых: используйте Stream API ship.getProdDate().after(new Date(after)) и ship.getProdDate().before(new Date(before)) или в помощь Specification с criteriaBilder.between(root.get("prodDate"), after, before) Для администрации: не спешите удалять комментарий, 1. согласно условию "7. При передаче границ диапазонов (параметры с именами, которые начинаются на «min» или «max») границы нужно использовать включительно." и "Диапазон значений года 2800..3019 включительно" возникает ощущение что after и before включительно, но необходимо after включительно, before исключительно. Было бы полезно явно указать это в задании. 2. Необходимо исправить тест getAllWithFiltersShipTypeAfterBefore. Когда он успешен, проект не принимается, а когда падает - проект принимается! Т.е. валидатор может блефовать... техасский холдем с валидатором... где мой верный кольт!
Валентин
Уровень 35
14 января 2020, 13:58
Для ищущих истинну: after и before должны быть в виде Date, больше либо равно after, строго меньше before Поэтому у тех, кто отнимал от before какое-то число, валидация проходила, потому что before уменьшался, но был все еще больше ближайшей доступной даты корабля. Если перевести before в год и сравнивать, так чтобы дата производства была < before, то тоже должен быть успех. Но если при этом и after перевести в год, то неудача. Возможные косяки в процессе: 1. использовать нативный sql и сравнивать after и before с помощью конструкции YEAR() 2. перевести даты after и before в год в java-коде и сравнивать как int 3. использовать включительное сравнение для before - prodDate <= before 4. использовать включительное сравнение для before в спецификации .le(), .lessThanOrEqual() если нашли еще что-либо - значит ваша пятая точка склонна к приключениям больше чем моя :)
Павел Медведев
Уровень 35
6 января 2020, 18:06
Помогите плз , все юнит тесты проходят кроме одного , ткните меня в ошибку .Можно в пм , Спасибо. java.lang.AssertionError: Возвращается не правильный результат при запросе GET /rest/ships с параметрами shipType, after и before. at org.springframework.test.util.AssertionErrors.fail(AssertionErrors.java:37) at org.springframework.test.util.AssertionErrors.assertTrue(AssertionErrors.java:70) at com.space.controller.GetAllTest.getAllWithFiltersShipTypeAfterBefore(GetAllTest.java:121) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.springframework.test.context.junit4.statements.RunBeforeTestExecutionCallbacks.evaluate(RunBeforeTestExecutionCallbacks.java:74)
Egor
Уровень 41
13 января 2020, 06:26
У меня решилось тем, что заменил "new Date(before)" на "new Date(before-3600001)". Правда не разобрался, с чем это связано) Позже разберусь)
Радик
Уровень 35
13 января 2020, 22:16
Если разобрался, напиши в личку, пожалуйста. Такой же затык у меня)
Egor
Уровень 41
15 января 2020, 11:52
Есть подозрения, но нет уверенности) 3600001 - это 1 час и 1 миллисекунда. 1 миллисекунда понятна - чтоб не включало конец периода. А вот час, видимо, связан с временной зоной.
hidden #1801022
Уровень 37
16 января 2020, 21:10
спасибо огромнейшее... перелопатила весь проект...
Василий Петров
Уровень 37
22 января 2020, 22:09
Я в итоге сдал с такой же поправкой на 1 час. По другому никак не сходились одновременно и локальные тесты и при сдаче задания. Что-то видимо с тайм-зонами намудрили, но сил докопаться пробами и ошибками через сдачу задания уже нет. И так успел ровно за месяц пройти 35 уровней и сдать тест.