Что нужно знать для java junior

от admin

Введение

Для новичка мир программирования кажется необъятным и войти в него достаточно сложно. На момент написания данной статьи мой опыт как Java разработчика составляет более трех лет. Часто знакомые интересуются как стать программистом. Что для этого необходимо знать и с чего лучше начинать? Данная статья была написана с целью дать ответы стандартные вопросы. Все написанное в статье основывается на моем личным опыте и отражает мое видение ситуации.

Данная статья первая в цикле про то, как стать junior-разработчиком.

Градации разработчиков

На российском трудовом рынке принято условное деление разработчиков в зависимости от опыта и знаний. Данные категории весьма условны, поскольку требования к стажеру в Яндекс могут быть выше, чем к мидлу в небольшую компанию, занимающуюся разработкой сайтов. Рассмотрим общепринятые требования.

  • Intern (Стажер) — знает синтаксис языка и имеет представление о структурах данных, умеет решать простенькие задачки. Часто нанимают для обучения и первые несколько месяцев стажер решает только учебные задачи. Можно сказать, что это похоже на курсы, за которые платят зарплату.
  • Junior (Младший разработчик) — знает синтаксис языка, структуры данных, наиболее популярные алгоритмы (часто спрашивают на собеседованиях), имеет представление о базах данных, фреймворке, с которым будет работать, и системе контроля версий. Как правило, джуны выполняют достаточно простые задачи или фиксят баги. В отличие от стажера, очень желательно иметь опыт работы или несколько своих проектов.
  • Middle (Разработчик) — требования, как к джуну, но знания по всему перечисленному должны быть достаточно глубокими. Необходимо иметь от года опыта и уметь самостоятельно выполнять задачи, разрабатывать сервисы и задумываться об архитектуре.
  • Senior (Старший разработчик)—обширный опыт, глубокие знания в предметной области, понимание, что может пойти не так, и умение предвидеть ошибки, выстроить правильную архитектуру, а также хорошие коммуникативные навыки.

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

Какой язык выбрать?

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

  1. Предполагаемая сфера деятельности.
    Фронтенд — графическая оболочка, то, что мы видим в браузере. Тут все просто и по сути только один распостраненный язык — JavaScript.
    Бэкенд — выполняется на сервере, зачастую графической оболочки нет, работа происходит “через терминал”, отправили набор данных, получили другой набор. Список языков, используемых в бэкенде, достаточно обширен, но наиболее популярными являются: Java, C#, Python, PHP, Ruby, Go, Rust, JavaScript.
    Мобильная разработка — зависит от платформы:
    iOS — Swift/Objective C
    Android — Java/Kotlin
    Возможна кроссплатформенная разработка на JavaScript с такими фреймворками, как ReactNative и NativeScript.
  2. Сложность настройки окружения для запуска первого приложения. Если для обучения JavaScript можно пользоваться блокнотом и запускать код в браузере, то для запуска проекта на питоне придется научиться настраивать виртуальное окружение, решать конфликты с путями и зависимостями, а также освоить навык пользования консолью. Это не плохо, но может забрать пару вечеров, главное в такие моменты не сдаться и не забить.
  3. Популярность языка.
    Чем выше популярность, тем больше комьюнити и выше шанс, что возникшая проблема уже была кем-то решена и, вероятно, достаточно вбить ошибку в строку браузера и решение будет доступно по первой ссылке. Как правило, чем больше комьюнити, тем больше различных инструментов существует для данного языка, и тем выше их качество.

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

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

Опять же, на мой взгляд, стоит остановиться на одном из трех языков: JavaScript, Python или PHP. Они достаточно зрелые и имеют достаточно развитую экосистему. У них огромное сообщество, это приводит к тому, что можно легко найти документацию на любую функцию и библиотеку, есть множество тем на форумах с обсуждением ошибок, встречающихся при разработке. Большое количество книг/статей/видеоуроков. Относительно просто настраивается окружение для разработки.

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

Что необходимо знать?

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

  • Синтаксис языка.
    Достаточно посмотреть видеоуроки на ютубе, чтобы в целом понять синтаксис и самостоятельно уметь выполнять простейшие операции. Более глубокие знания лучше получать из книг или в процессе решения задач гуглить неизвестные конструкции.
  • Типы и структуры данных.
    Необходимо понимать, какие есть структуры данных, чем они отличаются, и что будет при их взаимодействии, например, что будет, если сложить число и строку.
  • ООП.
    Ответы на три первых пункта есть в книгах, однако, если хочется ускорить процесс, то они хорошо гуглятся и на эти темы много статей и видео.
  • Как работает сборщик мусора и компилятор.
    Этот вопрос один самых часто задаваемых на собеседованиях. Достаточно прочитать статью о том, как происходит выполнение кода и сборка мусора в выбранном языке. Точных подробностей никто ждать не будет, но представление иметь желательно.
  • Решение задач.
    Гуглится по запросу: задачи с решением //Выбранный язык//.
  • Базы данных.
    Почитать про нормализацию, про проектирование баз данных и индексы. Уметь писать простые запросы с несколькими объединениями. Неплохая статья https://habr.com/ru/post/480838/.
  • Работа с консолью.
    Крайне желательно не пугаться открытия терминала и выполнения операций в нем.
  • Система контроля версий (Git).
    Видеоуроки о работе с гитом.
    Официальная документация, более полная и, возможно, кому-то более понятная инструкция по работе с гитом.
  • Алгоритмы.
    Знание алгоритмов применяется на практике достаточно редко, однако, оно позволяет задумываться о производительности написанного кода и расширяет кругозор. На собеседованиях, как правило, вопросы ограничиваются алгоритмами сортировки. Чаще всего просят реализовать пузырьковую сортировку или быструю сортировку. Также важно уметь оценивать временную сложность алгоритмов.
  • Фреймворки.
    Поскольку мало кто пишет проекты с нуля, практически всегда используются различные фреймворки, значительно упрощающие работу. От стажера и джуниора собеседующий не будет ожидать глубокого понимания, однако, желательно попробовать сделать самостоятельный проект. Самым простым способом изучения, на мой взгляд, является разработка проекта по образу и подобию. На ютубе достаточно много видеоуроков, в которых показывается разработка проекта и объясняются тонкости работы.

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

Откуда брать информацию?

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

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

Если знаний по выбранному языку нет совсем, то проще всего будет начать с видеоуроков. После них будет понятно хотя бы, как можно запустить написанную программу, а иногда это действительно вызывает сложности. Достаточно неплохой канал “Гоша Дударь”, у него есть видео почти по всем популярным языкам, которые называются “с нуля до профи”. Понятно, что посмотрев десяток видео и научившись писать простенькие программы, профи не стать, но понимание синтаксиса и основных операций появится. Примеры лучше писать один под другим, закомментировав старые, не стирая их. Чтобы через пару недель можно было открыть файл и быстро вспомнить, если что-то забудется.

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

После этого желательной перейти к книгам, поскольку в хорошей книге все последующие пункты будут описаны. По питону достаточно неплохая книга Эрика Мэтиза “Изучаем Python”, по PHP Линна Бейли, Майкла Моррисона “Изучаем PHP и MySQL”, по Java Бэрта Бейтса “Изучаем Java”. Указанные книги легко читаются, материал преподносится неплохо, и примеры достаточно интересные, пусть и несколько устаревшие. По SQL достаточно основательная книга Алана Бьюи “Изучаем SQL”, но читается тяжело, я проходил по 20 страниц в день.

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

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

Плюсы платных курсов:

  • Если они хорошо продуманы, то подача материала будет структурирована, информация будет свежей, и все важные моменты будут затронуты.
  • У вас будет ментор, который будет отвечать на глупые вопросы и поможет разобраться со сложным материалом.
  • При отсутствии должной мотивации на курсах развиваться проще, поскольку вас “проталкивают вперед”, и вроде деньги заплачены, скорее всего будет жалко не получить результата.
  • По окончании курсов, скорее всего, будет проект, который можно предоставить как портфолио.

Минусы платных курсов:

  • Главным минусом является длительность курсов. Хорошие курсы идут полгода/год. За это время можно научиться решать задачки, устроиться стажером и получить полгода/год реального рабочего опыта. Если работу совмещать с обучением по книгам, статьям и курсам на ютуб, то за это время можно стать очень крепким джуном. И претендовать на заработную плату по верху рынка. И, опять же, лучше работать стажером и получать пусть и маленькую, но зарплату, чем платить аналогичные деньги за курсы.
  • Самым ценным умением программиста является навык работы с информацией (“гугления”), поэтому стоит с самого начала стараться все неизвестные вопросы решать самостоятельно.
  • Существует большое количество телеграмм каналов, групп Вконтакте и форумов. В них можно найти ментора, который будет подсказывать, и единомышленников. Часто ребята объединяются и вместе начинают изучать язык, помогают друг другу с непонятными темами.
  • Ну а по поводу мотивации, когда я проходил книгу “изучаем Java”, в послесловии автора были такие слова “Если вы освоили весь материал, то после выхода на работу вы сможете легко позволить себе поездку на море”. После прохождения книги и перехода на Java я действительно перешел на другой проект и поехал в отпуск, так что, возможно, это будет мотивировать.

Резюмируя

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

Стоит заниматься пока интересно, часа/получаса в день вполне достаточно, чтобы за пару недель набрать знаний для трудоустройства на стажера. На джуна при таком расслабленном ритме понадобится пара месяцев, если поднажать, то можно успеть и за месяц.

Java Junior: вопросы на собеседовании, необходимые навыки и знания

Какие вопросы могут быть на собеседовании Java Junior

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

На собеседовании на позицию Java Junior могут быть общие вопросы по языку или по его отдельным фреймворкам. Направление вопросов точно буд е т зависеть от того, в какой IT-области работает компания, в которую вы собираетесь трудоустроит ь ся.

Из этого следует, что нужно быть хорошо теоретически подготовленным, чтобы не впадать в ступор от поставленных вопросов и не повторять убийственное : «Я не знаю».

Вероятные вопросы на собеседовании Java Junior

  1. Что такое ОПП, его принципы, отличия от других подходов в программировании, преимущества и недостатки?

  2. Объяснение понятий «наследование», «абстракция», «инкапсуляция», «полиморфизм».

  3. Назвать отличия между «JRE», «JVM», «JDK».

  4. Назвать отличие между абстрактным классом и интерфейсом.

  5. Реализация статических блоков в Java.

  6. Возможна ли перезагрузка метода static?

  7. Разница между переменной экземпляра и переменной статики .

  8. Нужно объяснить разницу между статической и динамической загрузкой класса.

  9. Нужно объяснить разницу между String, StringBuffer, StringBuilder .

  10. Объяснить различие между heap и stack памятью в Java.

  11. Нужно объяснить работу сборщика мусора.

  12. Рассказать об особенностях статического класса.

  13. Нужно рассказать о понятиях «Autoboxing» и «Generics».

  14. Рассказать о методах класса Object.

  15. Рассказать все о б «equals».

  16. Что такое «hashCode()»? Рассказать все об этом методе.

  17. Объяснить значение конструктора.

  18. Рассказать о видах и иерархии исключений в Java.

  19. Объяснить значение «error».

  20. Рассказать о строках и методах, способах и инструмент ах взаимодействия с ними.

  21. Объяснить, что такое рефлексия , и ее значени е в Java.

  22. Рассказать о значении, функциях и действиях Аннотации в Java.

  23. Что такое дистанционное управление и как его реализовать в Java?

  24. Какими технологиями безопасности обладает Java?

  25. Объяснить значение JAAS.

  26. Рассказать все о рефакторинге.

  27. Рассказать о Коллекциях, об их интерфейсах, элементах и их отличиях.

  28. Реализация хеш-таблиц в Java.

  29. Рассказать подробнее о разных функциональных интерфейсах.

  30. Объяснить работу лямбда-выражений.

  • Java Core;

  • алгоритмы и структуры данных;

  • unit-тестирование;

  • различные библиотеки, GUI и прочие компоненты;

  • популярные фреймворки.

Как подготовиться к собеседованию Java Junior

  1. Нужно правильно оформить резюме. Самое главное — в резюме нужно указывать только достоверную информацию о себе, своих знаниях, навыках и опыте. При этом можно составлять несколько резюме для разных компаний, чтобы акцентировать в резюме конкретные скиллы под требования конкретных компаний.

  2. Оформляйте мотивационное письмо. Иногда может так получиться, что вы не будете полностью соответствовать требованиям вакансии. Но ваше нутро будет вам подсказыва ть , что вы легко справитесь с поставленными задачами. Для этого и составляется мотивационное письмо, где вы сможете объяснить, почему именно вы подходите для этой вакансии.

  3. Подготовка к собеседованию. Первым делом нужно максимально узнать о компании, в которую вы хотите устроиться работать, чтобы понимать , что вас может ожидать на собеседовании. Попрактиковаться в решении небольших Java-задач. Освежить память по теоретической части языка программирования. Подготовить список вопросов, которые вы хотите задать при собеседовании. Проверить ваш Git-репозиторий, чтобы показать проекты, над которыми вы работали. Подготовить небольшой рассказ о себе и своих сильных сторонах. Можно попросить кого-либо провести с вами тестовое собеседование.

  4. Проявить себя на собеседовании. Покажите, что вы замотивированы получить работу и что все , что вы написали в своем резюме , — это истинная информация о вас. Расскажите о своих профессиональных качествах, например, если вы изучаете новый стек, то обязательно сообщите об этом. Будьте максимально честным. Если что-то вам не ясно: вопрос или задача, то не бойтесь задавать уточняющие вопросы.

Заключение

Есть такое поверье, что если завалили первое собеседование, то просто похвалите себя за это. Потому что очень многие молодые разработчики не доходят даже до собеседования. А вы дошли. Поэтому нужно проанализировать свои слабые стороны и идти на следующее собеседование. Завалили и это? Анализ, исправление ошибок — и вперед к следующему собеседованию. И так до тех пор , пока не устроитесь на работу.

Запомните одну простую вещь: как бы сильно вы н и готовились к собеседованию, требования к Java Junior в разных компаниях буд у т разн ыми , а значит , и вопросы на собеседовании могут быть разные.

Мы будем очень благодарны

если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.

Что нужно знать, чтобы стать Java Junior, и что со всем этим делать?

Что нужно знать, чтобы стать Java Junior, и что со всем этим делать? - 2

Термин Java Core достаточно широк. Под этим именем понимают и элементарный синтаксис языка, и такую сложную тему, как многопоточность. Собственно, курс JavaRush главным образом посвящён именно Core. Java Syntax. Основы языка. Все эти типы данных, операторы, циклы и ветвления. Естественно, 92.4% получивших работу оценили своё знание синтаксиса как “хорошее или отличное”. Тем не менее, 7.6% респондентов умудрились стать Java Trainee со средним знанием синтаксиса. Однако это нужно оценивать скорее как везение (или хвастовство респондентов:)). Разумеется, синтаксис языка должны знать все, кто претендует на работу программиста. Объектно-ориентированное программирование (ООП). Всё в Java состоит из объектов, поэтому ООП можно считать одной из самых главных тем языка. Объектно-ориентированный подход может поначалу показаться непривычным, особенно если вы раньше изучали только процедурные языки, но переучиться на объекты не составляет труда. Самые большие сложности у новичков вызывают уровни абстракции и их самостоятельное распределение — начинающий программист должен уметь грамотно составить иерархию объектов, понять, за что будет отвечать интерфейс, а что можно вынести в абстрактный класс, составить лестницу наследования и так далее. Как обычно эту сложность решает практика. Большинство респондентов, а это 80.3% получивших первую работу, хорошо знали принципы ООП и использовали их постоянно. В первый год работы Java Junior и стажерами 78,8% опрошенных пользовались принципами ООП очень часто, 12,1% — время от времени. 7,6% слушателей использовали их редко — эти ребята были заняты в основном модульным тестированием и разными небольшими задачами. То есть, разумеется, они тоже пользовались классами или объектами (без этого в Java никак), но редко составляли иерархии классов. Collections Framework. Коллекция — это совокупность отдельных объектов, представленных как единое целое. В Java для представления коллекций есть очень толковый Collections Framework. Коллекции основаны на популярных структурах данных — списках, обычных и связных, множествах, хэш-таблицах. Так что при изучении коллекций было бы неплохо поближе познакомиться со структурами данных. Основная трудность в изучении коллекций — понять и запомнить принцип их работы. Если понимаешь, каким образом в них происходит обращение к элементу, извлечение из коллекции и добавление в неё, то начинаешь понимать, где применять ту или иную структуру. Это приходит с практикой. Но, к счастью, из огромного количества коллекций активно используются в реальной работе далеко не все. 80,3% респондентов отметили, что хорошо или даже отлично знали коллекции до того, как получили первое предложение о работе, и практически все 96,9% Junior’ы и стажеры используют коллекции на своей первой работе. alt=»Что нужно знать, чтобы стать Java Junior, и что со всем этим делать? — 3″ width=»800″ />Обработка исключений. Исключение — это выходящая из ряда вон ситуация, которая может возникнуть при выполнении вашей программы. Все классы исключений являются подтипами класса java.lang.Exception. Механизм обработки исключений значительно упрощает процессы поиска ошибок в программах. Обычно студенты довольно рано начинают использовать исключения, скажем, на JavaRush На JavaRush эта тема поднимается ещё в первом квесте Java Syntax. Практически все получившие первую работу выпускники JavaRush умели обращаться с исключениями, и, естественно, использовали их во время работы. Потоки ввода/вывода (I/O Streams Java). Самые первые программы, написанные на Java, обычно содержат что-то вроде System.out.println(“Hello world”). Зачастую новички понимают, что метод println выводит строку в консоль, но понятия не имеют, зачем там System и out, и как они работают. Немного позже выясняется, что Java выполняет операции ввода и вывода с помощью потоков (streams), непрерывного потока данных. Потоки — не самая простая тема для понимания, и она не так уж часто используется в работе новичков: только 22,7% людей, получивших первую работу Java Junior/Trainee, сказали, что они часто используют потоки ввода-вывода, 31,8% — время от времени, 25,8% — редко. Так что чуть менее 20% вообще не использовали их в течение первого года работы в роли Java-разработчика. Во время учёбы 18.2% не испытывали особых трудностей с потоками и знали их отлично, 36.4% оценили свои знания как хорошие, а вот 10.6% проигнорировали эту тему. Многопоточность (Java Multithreading/Concurrency). Пожалуй, именно эта тема вызывает самое большое непонимание у начинающих разработчиков. Невзирая на то, что многопоточность в Java реализована очень хорошо, в ней сложно разобраться, и проблемы могут возникнуть даже при написании простейших программ (например, многопоточного “Hello, world”). Многие работодатели это понимают и не требуют глубокого понимания многопоточности от начинающих, рассчитывая, что оно придёт с опытом. Только 12%,опрошенных отметили, что они знали тему на хорошем уровне до получения первого оффера, в то время как почти 32% респондентов признали, что вообще ничего не смыслили в этой теме. Большинство же, 56,2%, заявили о том, что «имели некоторое представление» о многопоточности. Так что если трудности работы со thread’ами вам сейчас кажутся непреодолимыми, эти цифры могут вас обнадёжить. Тем не менее, если вы хотите получить конкурентное преимущество на собеседовании, именно эта тема может стать вашим коньком. На реальных проектах новичков также довольно редко допускают до работы с потоками. Так, 15.1% начинающих программистов вообще не сталкивались с Java Multithreading в своей работе, а 39.4% сталкивались, но редко. Часто в первый год работы пришлось работать с многопоточностью лишь 9.1% респондентов. Лямбда-выражения. Лямбда-выражения и намёки на функциональное программирование появились в Java 8, но новички не так уж часто используют этот удобный инструмент. Лямбда-выражение — это функция, которая может быть создана без принадлежности к какому-либо классу, и вы можете передать ее как объект или выполнить по запросу. Только 22,7% опрошенных выпускников хорошо знали Лямбда-выражения прежде, чем получить первое предложение о работе, а 48,5% оценили свое знание темы как «близкое к нулю». В то же время более 85% новых программистов заявили, что использовали лямбда-выражения в первый год работы. Справедливости ради укажем, что невысокий процент знающих эту тему может быть связан с тем, что в на JavaRush лямбда-выражения пока что представлены только в новом квесте Java Syntax Pro и статьях. Таким образом, мы можем смело утверждать, что знание Core Java для любого потенциального Java Junior и даже Trainee просто необходимо. Разумеется, некоторые темы, например, многопоточность допустимо знать несколько хуже, но синтаксис Java, ООП и коллекции должны прочно внедриться в ваше сознание.

Читать:
Rdp wrapper как удалить

Алгоритмы и структуры данных

По поводу изучения алгоритмов сортировки и поиска ведутся постоянные споры. С одной стороны, лучшие алгоритмы уже давно написаны и включены в библиотеки всех популярных языков программирования, в том числе и Java. И их можно легально использовать, не заморачиваясь написанием собственного кода. Однако специалисты, обучающие программистов, всё-таки рекомендуют каждому начинающему разработчику потренировать мозг написанием всех этих алгоритмов пузырька, слияния, бинарного поиска и им подобным. Во-первых, эти алгоритмы — своего рода лакмусовая бумажка умений программиста (именно не знаний, а умений) и понимания человеком, что такое программирование в принципе. Если мозг уже хорошо настроен на подобную работу, вы будете писать алгоритмы относительно легко. И тем не менее, следует помнить: алгоритмы вам нужны именно для тренировки мозга… и для того, чтобы пройти собеседование: проводящие их въедливые Senior-разработчики очень любят мучить соискателей просьбами написать тот или иной алгоритм. А вот в работе большинство (48.5%) использует стандартные библиотечные алгоритмы, эффективные и проверенные, в то время как 16% респондентов вообще не использовали сортировку в первый год работы программистом.Что нужно знать, чтобы стать Java Junior, и что со всем этим делать? - 469,6% выпускников утверждают, что до получения первого предложения о работе они неплохо ориентировались в алгоритмах сортировки и поиска и могли написать их самостоятельно.Что нужно знать, чтобы стать Java Junior, и что со всем этим делать? - 5Мы уже затрагивали тему структур данных, когда говорили о коллекциях Java. Да, в них лучше разобраться, чтобы знать, где и какую структуру применить. Составление собственных структур данных по образу и подобию библиотечных — отличное упражнение, которое поможет вам лучше в них разобраться. Вы можете, например, попробовать написать собственную версию ArrayList или предложить свой односвязный список (обычный LinkedList в Java — двусвязный).Что нужно знать, чтобы стать Java Junior, и что со всем этим делать? - 6Во время работы начинающие программисты использовали главным образом стандартные структуры данных.Что нужно знать, чтобы стать Java Junior, и что со всем этим делать? - 7

Unit-тестирование

Библиотеки утилит, GUI и полезные компоненты

  • Сервлеты — это программные компоненты Java, которые расширяют возможности сервера.
  • JDBC — это независимый от платформы стандарт взаимодействия между приложениями Java и базами данных. JDBC реализован в виде пакета java. sql входит в состав Java SE (Standard Edition).
  • log4j — самая известная библиотека для регистрации сообщений. Он позволяет писать вызовы библиотеки в java-коде, а затем гибко настраивать его, не изменяя уже написанный код.
  • Jackson/JSON. JSON (JavaScript Object Notation) — чрезвычайно популярный открытый стандартный формат файлов и формат обмена данными, а Jackson — это высокопроизводительный процессор JSON для Java.

Frameworks

Что нужно знать, чтобы стать Java Junior, и что со всем этим делать? - 10

Раньше от Java Junior никто не ожидал знания Spring или Hibernate. Но времена меняются, и сегодня этого порой ожидают даже от Trainee. Изучать эти технологии самостоятельно непросто. Даже если всё кажется понятным, студенты частенько забывают что к чему очень быстро. Порой даже приложения, самостоятельно написанные на Spring — не панацея. Поможет только активная работа. Тем не менее, перед успешным собеседованием треть респондентов была знакома со Spring на хорошем уровне, а 45.5% разбирались в нём средне. Ситуация со Spring boot несколько хуже (36.4% вообще его не знала), а о хороших знаниях Hibernate заявило почти 44% опрошенных выпускников JavaRush.В то же время во время работы главным Java-фреймворком пользовалось почти 88% новоиспечённых программистов, Spring Boot — 83%, Hibernate — 81%. alt=»Что нужно знать, чтобы стать Java Junior, и что со всем этим делать? — 11″ width=»800″ />

Build Automation tools и серверы приложений

Что нужно знать, чтобы стать Java Junior, и что со всем этим делать? - 12

Большинство опрошенных выпускников JavaRush пробовали работать со сборщиками проектов. Чаще всего это был Maven (40.9% попробовали его на практике, ещё 30.3% использовали его время от времени, а 12.1% уже во время учёбы использовали его постоянно). В работе с Maven пришлось сталкиваться 72.7% (часто), 7.6% (иногда) и 3% (редко). Что касается Gradle, тут ситуация несколько хуже. Только 22.7% практиковались с этим сборщиком, причём большинство из них — только опробовали технологию. В работе Gradle применяли почти половина респондентов.Ant давно растерял свои позиции, и это отразилось на его популярности среди наших выпускников: возилось с ним только 3% опрошенных. А работать с ним пришлось 12% ответивших на вопросы. Среди серверов приложений лидирует Tomcat, с ним во время учёбы разобралось более 77% опрошенных, 11% опробовали GlassFish, 12% — JBoss. Похожим образом выглядит популярность серверов среди тех, кто уже работает. Только 31.8% получивших работу не сталкивались с Tomcat. Также выпускники JavaRush во время первого года работы программистом опробовали такие серверы, как WebSphere, Jetty, Netty, Wildfly, Weblogic. alt=»Что нужно знать, чтобы стать Java Junior, и что со всем этим делать? — 13″ width=»800″ />

С каким уровнем Java можно идти на стажировку, а с каким — претендовать на зарплату 250 000 рублей?

Привет, Хабр! Меня зовут Даниил Пилипенко, я — программный директор факультета backend-разработки направления «Программирование» в Skillbox и директор центра подбора IT-специалистов SymbioWay.

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

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

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

на какой доход можно рассчитывать;

какие знания нужно получить, чтобы зарабатывать больше;

по каким критериям выбирать обучение.

Для начала давайте разберемся, какими знаниями и навыками должен обладать начинающий Java-разработчик.

Что должен знать и уметь начинающий Java-разработчик?

Чтобы устроиться на работу на должность младшего Java-программиста, нужно:

Знать

Уметь

синтаксис языка, все основные операторы и конструкции;

основы объектно-ориентированного программирования: что такое классы, методы, статический контекст, константы, наследование, полиморфизм, инкапсуляция, перегрузка и переопределение;

принципы клиент-серверного взаимодействия, в том числе, HTTP и REST;

язык запросов SQL как минимум на уровне JOIN-ов;

писать “чистый” работающий и достаточно оптимальный с точки зрения производительности код;

работать с разными типами данных и коллекциями;

работать с исключениями;

писать и понимать лямбда-выражения и работать с функциональными интерфейсами;

работать со Stream API;

работать с сетью и с файлами.

Еще вам понадобится опыт:

работы со сборщиком (например, Maven или Gradle) и с подключением внешних библиотек;

отладки и профилирования приложений;

работы с системой контроля версий Git;

разработки хотя бы несложных веб-приложений на Spring Boot;

работы с командной строкой Linux (bash);

Это обязательная база, без которой не получится работать. Конечно, эти списки могут корректироваться и уточняться в зависимости от требований и задач конкретного работодателя.

И, если вы не владеете другими языками программирования и у вас нет никакого опыта в разработке, осваивать профессию придется полностью с нуля.

А если все навыки есть и опыт командной разработки тоже, можно смело устраиваться на работу и развиваться дальше. Когда в знаниях есть пробелы, нет уверенности в своих силах или практики разработки более-менее крупных проектов, тогда вам в стажеры. Рассмотрим карьерные треки с вилкой зарплат.

Стажер, 40 000 – 50 000 рублей в месяц

С позиции стажера часто начинается карьера любого программиста, в том числе Java-разработчика. Найти вакансии стажера можно на популярных агрегаторах — таких, как HeadHunter, Яндекс.Работа или SuperJob Student. Последняя площадка полностью посвящена стажировкам.

Вам в стажеры, если:

вы знаете только основы Java;

у вас есть практика решения задач, но только самостоятельная, и нет опыта командной разработки;

вы еще учитесь, но хотите начать подрабатывать и обучаться на практике.

Junior-разработчик, 50 000 – 90 000 рублей в месяц

Если у вас есть все перечисленные базовые знания и вы разрабатывали проекты в команде, можно претендовать на должность младшего Java-разработчика. А если вы еще учитесь, но получаете дополнительное образование, у вас есть опыт в других языках — вполне возможно, вы сможете устроиться на работу в середине обучения. В таком случае и зарплата может быть сразу 60 000 – 70 000 рублей. Все зависит от вашего стремления учиться, а также качества и скорости решения задач, которое вы приобретете в процессе такого обучения.

Можно учиться и работать параллельно. Курсы по Java в среднем длятся 6-9 месяцев. В Skillbox модуль на неделю — это где-то 1,5-2 часа видео и 5-6 часов домашних заданий. Вы сможете посвящать обучению один неполный выходной или по часу в день в течение недели и совмещать с основной работой или учебой.

Обучайтесь в своем темпе. Например, некоторым нашим студентам хватает 2-3-х месяцев для прохождения базового курса.

Middle-разработчик, 90 000 – 250 000 рублей в месяц

У вас есть все знания и навыки junior-разработчика, вы работаете по профессии, но хотите развиваться, идти дальше и зарабатывать больше. Для этого нужно интенсивно учиться, в том числе:

Освоить фреймворк Spring. Если сделать это перед трудоустройством, то вы сможете сразу претендовать на зарплату от 90 000 рублей.

Освоить работу с базами данных, алгоритмами и Enterprise-технологиями в Java. Это поможет вам быстрее вырасти до уровня middle/middle+ и зарплаты до 250 000 рублей в месяц при условии постоянной реальной практики на работе.

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

На что обратить внимание при выборе курсов в Java-программировании?

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

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

Командная разработка. Чем больше практики, реальных проектов, тем лучше, а здесь никуда без работы в коллективе. Уровень сложности — максимальный. Это отличный опыт и ваш главный козырь при трудоустройстве. Неизвестно, когда на работе вам попадется такой проект, так что используйте возможности во время обучения по-максимуму.

Обязательная стажировка. Если после обучения вам нужно обязательно стажироваться — вы учитесь на уровень Junior. Это неплохо, если после короткого обучения (6 месяцев максимум) вы уже можете идти работать. Но лучше, если программа предусматривает помощь в трудоустройстве. Это значит, что образовательное учреждение или платформа не сомневается в уровне подготовленных кадров и предоставляет выбор: если вы хотите учиться недолго — можно идти на стажировку. А если пройти полное обучение, то можно сразу устраиваться на работу.

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

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

Программа курса. Тут все просто: чем больше практики, тем лучше, но теория тоже нужна. Практика в среде разработки, а не на виртуальном тренажере — дополнительный плюс. Обращайте внимание, чтобы авторы курса не тратили ваше время на устаревшие технологии, например, сервлеты и JSP, JSTL. Некоторые обучающие платформы до сих пор этому учат и берут за это деньги.

Диплом. Круто, если по результатам обучения вы выполните не только индивидуальный, но и командный диплом. Это дополнительный бонус при трудоустройстве.

Подведем итоги

Если у вас есть опыт в разработке на других языках, проходите базовое обучение по Java и смело вливайтесь в профессию. Если таких знаний нет, нужно погружаться с нуля. А если вы хотите выйти на новый уровень и зарабатывать больше, ищите продвинутые курсы уровня PRO и обязательно проходите обучение технологиям Enterprise-разработки и фреймворку Spring.

Похожие статьи