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

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

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

Автор оригинала: John Selawsky.

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

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

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

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

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

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

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

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

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

Синтаксис Java

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Потоки байтов ( Поток ввода файлов , Поток вывода файлов )
  • Потоки символов ( Читатель файлов , Пишущая машинка )
  • Стандартные потоки ( System.in , System.out )

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Это не будет лишним.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Guava-это набор общих библиотек с открытым исходным кодом для Java, в основном разработанный инженерами Google.
  • Apache Commons-это огромный проект Apache, ориентированный на все аспекты многоразовых компонентов Java.
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% использовали его во время работы.
Java API для веб — служб RESTful-90,9% использовали его во время работы.

Где учиться весне/Зимней спячке

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

Весенний урок по строительству Весеннее практическое задание Учебник по пружинам и руководство по пружинной загрузке на 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://www.codementor.io/@johnselawsky/how-much-java-do-you-need-to-learn-to-get-your-first-job-1be9w0rvxb”