Рубрики
Без рубрики

Сколько Java Вам нужно выучить, чтобы получить Свою Первую работу?

Что нужно знать потенциальному Java junior, чтобы получить первую работу или даже претендовать на должность стажера в хорошей компании? Какие инструменты помогут программисту Java выйти на следующий уровень? Какие технологии вам следует изучить, а от каких лучше воздержаться?. Помечено как начинающие, java, программирование, обучение.

От ЯвапАдавана до яванского джедая

Что нужно знать потенциальному Java junior, чтобы получить первую работу или даже претендовать на должность стажера в хорошей компании? Какие инструменты помогут программисту Java выйти на следующий уровень? Какие технологии вам следует изучить, а от каких лучше воздержаться?

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

Мне так часто задают этот вопрос, что я решил написать статью, на которую потом смогу сослаться, чтобы ответить на него. Кроме того, это будет полезно не только тем, кто спросит меня лично, но и всем, кто уже решил (или никак не решил) связать свою жизнь с программированием на Java.

Какие источники я использовал, чтобы ответить на Главный вопрос статьи?

Чтобы ответить на главный вопрос статьи как можно полнее, я опирался на:

  • Мой собственный опыт работы старшим разработчиком Java, который брал интервью у многих потенциальных Java-юниоров
  • Мой опыт работы репетитором (вернее, опыт моих учеников)
  • Результаты одного опроса, проведенного порталом CodeGym для своих выпускников
  • Некоторые ответы с интернет-форумов

Прежде всего: Ядро Java – это Должен

Ядро Java обычно означает базовые основы языка программирования. Он содержит следующие компоненты.

Синтаксис Java

  • Классы, переменные и методы
  • Примитивные типы данных
  • Струнные
  • Основные операторы
  • Основные конструкции: петли, ответвления

Синтаксис Java – это своего рода азбука этого языка. Студенты учатся этому на практике, как маленькие дети учатся читать и писать. Наиболее сложными понятиями здесь являются принципы программирования, такие как циклы и ветви. Они могут быть трудными для абсолютных новичков, но обычно после кодирования некоторых задач будущие программисты начинают понимать их.

Прежде чем они получат свое первое предложение о работе в качестве разработчика Java или стажера Java, 92,4% программистов знают синтаксис Java на хорошем или отличном уровне. А как насчет остальных 7,6%? Они знали это на среднем уровне, и им посчастливилось получить предложение о стажировке. Однако это чистая удача. Каждый кандидат должен свободно владеть синтаксисом Java, и слава богу это быстро и легко освоить.

Объектно-ориентированное программирование (ООП)

Java и ООП – почти синонимы, потому что все в этом языке программирования является объектом.

Если вы привыкли к процедурному программированию, поначалу может быть сложно перестроиться и мыслить в объектном стиле. Однако на самом деле ООП не так уж и сложен. Более того, это очень красивая концепция. Важно писать много кода и в то же время думать о том, как строятся иерархии объектов.

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

Большинство (80,3%) людей, которые получают свою первую работу, связанную с Java, хорошо знают принципы ООП и постоянно их используют.

Однако “хорошие знания” иногда могут иметь разные определения в зависимости от вашего опыта. “Я читал об ООП и использовал наследование и инкапсуляцию. Я думал, что хорошо это знаю, но понял, что вроде бы что-то знал раньше, но не понимал нюансов. По-настоящему глубокое понимание уровней абстракции и того, как их использовать, пришло ко мне только во время работы стажером Java над большим проектом”, – сказал Энди, который сейчас работает Java junior в одной из международных аутсорсинговых компаний.

Согласно опросу Code GymPortal, 78,8% Java-юниоров и стажеров используют ООП в своей работе очень часто, 12,1% время от времени, а 7,6% стажеров используют их редко (обычно они работают с модульным тестированием и различными небольшими задачами).

Структура коллекций

Группа отдельных объектов, представленных как единое целое, представляет собой коллекцию. Java предоставляет фреймворк коллекций для различных коллекций. Коллекции основаны на популярных структурах данных: списках, регулярных и связанных, наборах, хэш-картах и так далее. Поэтому, изучая коллекции, было бы неплохо также немного лучше ознакомиться со структурами данных. Основные подтемы:

  • Список
  • Набор
  • Карта
  • Список массивов
  • Связанный список
  • Очередь
  • Деке
  • HashSet , HashMap , Хэш-таблица
  • Набор деревьев , Карта деревьев Основная трудность в изучении коллекций заключается в том, чтобы понять, как они работают и когда какую структуру использовать. Это приходит с практикой. Кроме того, из всего множества конструкций в реальной работе постоянно используются лишь немногие. В качестве учебного пособия может быть полезно воссоздать вашу собственную версию коллекции. Почти все (96,9%) Java-юниоры и стажеры используют платформу collection framework на своей первой работе, и 80,3% респондентов знали коллекции на хорошем или отличном уровне до того, как получили свое первое предложение о работе.

Обработка исключений

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

  • Механизм обработки исключений
  • Попробуй-поймай-наконец
  • Бросать, бросает
  • Иерархия исключений в Java
  • Отмеченные/непроверенные исключения
  • Разница между ошибкой и исключением
  • Ошибка недоступного блока перехвата
  • Выбрасывание исключений вручную

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

Потоки ввода/вывода Java

Java выполняет операции ввода и вывода с использованием потоков. Поток – это своего рода непрерывный поток данных. В программах Java вам довольно часто приходится считывать или записывать данные. Это не самая простая тема для начинающих, и иногда она не часто используется в работе новичков (это действительно зависит от проекта, над которым они работают). Что ж, 22,7% людей, получивших свою первую работу на Java junior/trainee, сказали, что они часто используют потоки ввода-вывода, 31,8% время от времени, 25,8% редко. Таким образом, чуть менее 20% вообще не использовали их в течение первого года работы в роли разработчика Java.

Основные подтемы:

  • Потоки байтов ( FileInputStream , FileOutputStream )
  • Потоки символов ( FileReader , FileWriter )
  • Стандартные потоки ( System.in , System.out )

Многопоточность/параллелизм Java

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

Тем не менее, если вам это очень сложно, многопоточность – это та тема, в которую вам не нужно углубляться поначалу. Таким образом, только 12,1% респондентов отметили, что знали тему на хорошем уровне до своего первого предложения, в то время как 31,8% признаются, что вообще ничего не понимали в этой теме. Большинство (56,2%) опрошенных заявили, что у них “было некоторое представление” о многопоточности, когда они начинали. Следовательно, многопоточность может стать вашим конкурентным преимуществом на собеседованиях Java junior. Вам решать погрузиться в него поглубже или получить первоначальные идеи. Решите некоторые проблемы с кодированием и сосредоточьтесь на других темах.

Основные подтемы:

  • Жизненный цикл потока (новый, выполняемый, ожидающий, ожидающий по времени, завершенный)
  • Демоны
  • Синхронизация потоков
  • Обработка взаимоблокировки потоков
  • Операции с потоками
  • Ждать , уведомлять , Уведомлять всех
  • Прерывание потоков
  • Sleep , выход , присоединиться

В течение первого года работы в качестве стажера Java или младшего разработчика 9,1% часто использовали многопоточность и 36,4% время от времени, в то время как 39,4% использовали ее редко.

Лямбда-выражения

Java-лямбда-выражения появились в Java 8, но новички часто игнорируют этот удобный инструмент. Лямбды расширили Java, сделав концепцию функционального программирования доступной на этом языке. Лямбда-выражение – это функция, которая может быть создана без принадлежности к какому-либо классу, и вы можете передать ее как объект или выполнить по требованию. Только 22,7% респондентов знали лямбды задолго до своего первого предложения о работе, в то время как 48,5% оценили свои знания по этой теме как “близкие к нулю”. “В то же время более 85% новых программистов заявили, что использовали лямбда-выражения в первый год своей работы.

Основные подтемы:

  • Лямбды, интерфейс с одним методом
  • Реализации анонимного интерфейса
  • Вывод лямбда-типа
  • Параметры лямбды
  • Тело лямбда-функции
  • Возвращает значение из лямбда-выражения
  • Лямбды как объекты
  • Переменный захват
  • Ссылки на методы в виде лямбд

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

В своей практике я встречал парней, которые получали работу, зная только базовые понятия — синтаксис Java и ООП. Чаще всего они становились стажерами Java, но иногда я сталкивался с кем-то с почти нулевыми навыками Java junior. С одной стороны, им повезло: они осуществили свою мечту стать программистом и могли учиться непосредственно на рабочих заданиях. С другой стороны, работодатели быстро поняли, что их уровень квалификации был слабым, и в течение длительного времени они получали однотипные монотонные задания, что часто приводило в отчаяние. Мой совет таким программистам – расти быстрее, пока тебе все это не надоест. Решайте практические задачи, читайте — и переходите к следующему этапу.

Где изучать основные темы Java

Code Gym – один из моих любимых онлайн-курсов, посвященный ядру Java. Вы можете найти здесь все основные темы Java (кроме лямбд на данный момент) и более 1200 упражнений. Лямбда-выражения на jenkov.com имеет хороший учебник, в котором вы можете найти все, что вам нужно знать о лямбдах. Java в CodeCademy . CodeCademy – одна из самых известных платформ для практического обучения. В этом курсе вы можете найти большинство основных тем Java.

Алгоритмы и структуры данных: Сомнительный

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

Их оппоненты уверены, что самостоятельное написание алгоритмов – отличное упражнение в мышлении программиста, а кроме того, это проверка на его наличие у студента. Я, скорее всего, отношусь ко второму, особенно учитывая тот факт, что на собеседованиях Java junior их часто просят написать тот или иной алгоритм, иногда даже на листе бумаги. Хотя знание алгоритмов не связано со знанием Java как такового, я рекомендую всем будущим программистам поработать над этой темой. Это не будет лишним.

Другое дело, что во время реальной работы программиста вам, скорее всего, не понадобится алгоритм сортировки пузырьков и тому подобное. Гораздо важнее будет знать, в каких библиотеках можно найти стандартные алгоритмы. В ходе опроса 69,6% студентов заявили, что они знали и кодировали алгоритмы сортировки и поиска на хорошем и среднем уровне до получения первого предложения о работе.

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

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

Где изучать алгоритмы и структуры данных

Во-первых, вы можете найти хорошую книгу, такую как Алгоритмы Роберта Седжвика и Кевина Уэйна. Кроме того, у тех же авторов есть онлайн-курс на Coursera . Этот – один из моих любимых, и он использует Java. GeeksforGeeks – это огромное онлайн-сообщество, где вы можете найти множество лекций и упражнений по алгоритмам.

Модульное тестирование

Каждый хороший программист может тестировать код, и не только свой собственный, поэтому научитесь писать модульные тесты для своего кода. Иногда новички пренебрегают модульным тестированием, предпочитая System.out.println тип проверки (если вы уже пробовали писать код, вы понимаете, что я имею в виду). Помните, что модульные тесты гораздо полезнее, чем выполнение проверок с использованием консольного вывода. Модульные тесты также являются первым, что компании обычно доверяют новым разработчикам для написания. Согласно опросу, 57,5% респондентов использовали JUnit до своего первого успешного собеседования, связанного с Java, и более 83% уже использовали модульное тестирование в первый год работы.

Где научиться модульному тестированию

Будет, найдите учебное пособие (например, это видеоурок или этот текстовый учебник ), а затем создайте тесты для всего вашего кода!

Служебные библиотеки и Полезные компоненты

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

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

Более половины респондентов знали об этих технологиях до того, как получили свою первую работу, связанную с Java. Все новички использовали JSON/Jackson на своей работе, и большинство из них использовали JDBC (84,8%) или log4j2 (83,3%). Две трети респондентов использовали сервлеты в течение первого года обучения в качестве младших и стажеров Java.

  • Guava – это набор общих библиотек с открытым исходным кодом для Java, в основном разработанный инженерами Google.
  • Apache Commons – это огромный проект Apache, ориентированный на все аспекты повторно используемых компонентов Java.

Во время учебы я рекомендую вам посвятить время log4j, JSON, JDBC (вместе с SQL и инструментами базы данных). Однако другие технологии из списка и библиотеки могут быть полезны для.

Где узнать о библиотеках утилит и полезных компонентах

  • Текстовое руководство по log4j на tutorialspoint или видеокурс по Udemy
  • В Code Gym есть несколько тем JSON, log4j, JDBC и упражнений в их курсе.
  • Java-сервлеты на эврике

Весна/Переход в спящий режим

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

  • Весна — 33,3% респондентов оценили свои знания о Весне как “хорошие или отличные”, в то время как 21,2% ничего не знали об этой структуре.
  • Spring Boot — 42,4% респондентов знали Spring Boot (хороший или отличный уровень), а 36,4% этого не знали.
  • Гибернация — 43,9% знали гибернацию на хорошем или отличном уровне, в то время как 27,3% никогда ее не пробовали.
  • Java API для веб—сервисов RESTful – 90,9% использовали его во время работы.

Где научиться Spring/Hibernate

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

Весенний учебник по строительству Весеннее практическое задание Spring tutorial и руководство по загрузке spring/| на spring.io Переход в спящий режим и весна на Udemy RESTful API на Udemy

Дизайн и архитектурные шаблоны и принципы программирования

Шаблоны проектирования – это хорошо зарекомендовавшие себя решения для решения некоторых конкретных проблем. Если вы их не знаете, вы доставляете своему будущему работодателю головную боль. Найдите время, чтобы прочитать о шаблонах и применить их на практике. Та же история и с архитектурными шаблонами, например, MVC. Я всегда прошу своих студентов создать несколько программ с использованием MVC. Это становится намного сложнее, но после этого они знают, как этим пользоваться.

Кроме того, было бы полезно прочитать о простом и хорошо читаемом коде в соответствии с принципами KISS, DRY и SOLID. Честно говоря, их легко понять, но требуется время, чтобы использовать их на практике. Вот почему, когда я проводил собеседования с кандидатами на младшие должности, я никогда не требовал от кандидатов глубоких знаний этих принципов, понимая, что они приходят с практикой.

Где узнать и прочитать о шаблонах и принципах

Гуру рефакторинга ТВЕРДЫЙ, ПОЦЕЛУЙ, СУХОЙ, ЯГНИ

Создавайте средства автоматизации, серверы приложений и не-Java

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

Где узнать об инструментах автоматизации сборки, серверах приложений и не-Java

Учебные пособия и руководства по Gradle Maven за 5 минут Введение в Tomcat 7 JBoss SQL , JavaScript , HTML , CSS на w3schools

Выводы

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

Впервые опубликовано на Лучшее программирование .

Оригинал: “https://dev.to/selawsky/how-much-java-do-you-need-to-learn-to-get-your-first-job-57lc”