Что нужно знать для java junior
Перейти к содержимому

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

  • автор:

Популярные вопросы на собеседовании Java Junior

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

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

Как проходит процесс найма Java-разработчиков

Как правило, этапы следующие: – Предварительный отбор. Это видео или телефонный звонок для сбора необходимой информации о кандидате. Рекрутер может спросить вас об образовании, предыдущем опыте, мотивации к смене работы и ожиданиях от работы. – Собеседование. После того, как вы прошли предварительный отбор, компания хочет узнать больше о ваших технических и мягких навыках. Наличие сильного технического опыта имеет важное значение, но компании хотят убедиться, что вы сможете без проблем взаимодействовать с коллегами. Коммуникация является жизненно важной частью любой команды разработчиков. – Техническое собеседование. Здесь смотрят, как вы выполняете конкретные профессиональные обязанности. Опрос может быть в формате теста, возможны варианты, где нужно самостоятельно придумать ответ. После чего следует предложение о работе. Конечно, это идеальный сценарий. Некоторые компании проводят шесть или семь раундов интервью, какие-то один-два.

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

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

Топ-10 вопросов на собеседовании для Junior Java developer

Подготовиться к собеседованию на позицию Java-разработчика не так сложно, как можно себе представить. Важно знать ответы на вопросы, которые могут задать рекрутеры. На какие темы следует обратить внимание: – ООП. – Java SE: коллекции, обработка исключений, многопоточность. – Шаблоны проектирования. – Java EE. – Spring. – Hibernate. – SQL. Возможные дополнительные темы: – SOLID. – JUnit. – Maven. – Jenkins. – JavaScript. – HTML. – CSS. Вопросы, которые скорее всего зададут вам рекрутеры: – Что такое ОПП? Назовите основные принципы и преимущества ООП. – Зачем нужны методы equals и hashCode? – Какие шаблоны проектирования вы знаете? – Какие способы создания потока вы знаете? – Что такое MVC? – Что такое ORM? И для чего это необходимо? – Что такое JDK, JRE и JVM? – Является ли Java статическим или динамическим типизированным языком? – Что такое функциональное тестирование? – Что такое жизненный цикл ошибки? Важно самостоятельно находить ответы на эти вопросы, не использовать готовые варианты. Так, пока вы будете искать ответ на определенный вопрос, изучите множество дополнительной информации. Что будет вашим огромным плюсом на собеседовании.

Что еще важно знать

Будьте готовы к тому, что рекрутер попытается выяснить как вы пришли к тому или иному умозаключению. И здесь важно уметь ответить на вопрос не только заученной фразой, но и объяснить нужные моменты своего ответа. Существует огромная разница между знанием языка и практическим применением. Важно не только уметь теоретически объяснить определенную тему, но и показать решение на практике, если того потребует рекрутер. Вас могут попросить решить онлайн-тест или выполнить проверку кода. Практический опыт – основной показатель того, подходит разработчик для определенной компании или нет. Часто, чтобы узнать, насколько большой практический опыт у кандидата, рекрутер просит описать последний проект, над которым вы работали, рассказать про все этапы от начала и до конца. Здесь важно упомянуть инструменты, которыми пользовались, как вы взаимодействовали с командой и какой результат получили.

Читать еще:

Что такое программирование и зачем оно нужно

В чем заключается суть программирования и зачем им нужно заниматься. Отвечаем простыми словами в блоге Kata Academy.

«Входить в IT неспеша» или как стать Middle Java Backend разработчиком минуя ступень Junior

Статья о том, как шаг за шагом при дефиците свободного времени обучиться и устроиться на работу сразу Middle Java разработчиком перескочив через Junior ступеньку, основанная на личном опыте, и о том, как мне это помогло, когда сразу после трудоустройства пришлось тянуть проект практически в solo.

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

Но сначала давайте пару слов о разнице между Junior и Middle

Если кратко, то всё сводится к разнице в знаниях, опыте в Java и фреймворках, способности эффективно решать задачи и самостоятельно и принимать небольшие проектные решения.

Для проведения более чёткой границы по hard skill’ам существуют матрицы компетенции, содержащие порядка сотни пунктов, которые чётко разграничивают что должны уметь Junior, Middle и Senior разработчики. К примеру, по одной такой матрице Junior должен как минимум знать monitor, wait/notify/notifyAll/sleep, synchronized, volatile, Thread, Future, Callable, основные Thread-safe коллекции, в то время как Middle должен к этому всему ещё знать ReentantLock, ReentantReadWriteLock, Standard Executors (Single-Thread, Fixed, Pooled), Scheduled Executor, Atomic (Integer, Boolean, etc), Concurrent collections, BlockingQueues.

Что было в моей жизни до IT

В школе учился в физмат классе. Всегда, мечтал стать программистом, но не верил в свои силы, поступил на ТехМаш и окончил универ с отличием став инженером в области машиностроения. Устроился CAE (Computer-aided engineering) инженером в российский филиал международной немецкой фирмы. Но в свои 30 лет понял, что хочу осуществить давнюю мечту и так начался мой путь в IT.

Почему я решил сразу стараться приобрести Middle компетенцию?

В 2017-2018 на рынке труда был переизбыток джунов, и некоторые эксперты заявляли, что на одну Junior вакансию может приходиться аж до 700 откликов! Естественно, это не повсеместно и один джун откликается ещё на несколько десятков вакансий. Но всё равно, конкурс был большой. Это впоследствии подтверждали те из коллег, кто трудоустраивался на свою первую работу в эти годы.

В это же время был ощутимый дефицит Middle специалистов и стали появляться курсы, которые утверждали, что сразу стать Мидлом реально. Я подумал, что за этим маркетинговым ходом всё же есть что-то рациональное и поэтому решил, что нужно попытаться сразу поднять планку компетенции выше уровня Junior, считая, что даже если по скиллам не буду соответствовать Middle, те знания, которые приобрету, чтобы его достичь всё равно будут весомым преимуществом среди других соискателей, что позволит легче пройти собеседование и трудоустроиться.

Как я учился

Что я использовал для обучения:

1. Учебники. Я так называю книги, которые содержат теорию, примеры, всё объясняется очень доступно, подробно и по ним удобно заниматься. Ярким примером такового я считаю «Изучаем Java» Кэти Сьерра, Берт Бэйтс. Она же Java Head First.

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

В конце статьи я прилагаю перечень литературы, по которой учился сам и рекомендую другим.

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

Хотел бы выделить канал Алишева @alishevN, Школу ITProger @itproger и Уроки Java @husivm

4. Тренажёры. Это курсы, в которых проверка задачи происходит в автоматическом режиме, нацеленные, в основном, на практику, где теория хоть и есть, но по сути является вторичной:

4.1 JavaRush – наверное, самый популярный ресурс среди прочих подобных, на котором недавно также появился свой полноценный курс.

4.2. Stepik – очень хорошие мини-курсы с тренажёрами и мини-лекциями по Java. Особенно хороши курсы по SQL, помогающие быстрее набить руку в написании запросов.

4.3. LeetCode – ваш помощник по решению алгоритмических задач.

5. Полноценные курсы. Образовательные платформы предлагают обучение «профессии» Java разработчика от 6 до 15 месяцев. Многие из них как раз и заявляют, что сделают из соискателя сразу мидла. Самое главное отличие от тренажеров: проверка домашних работ учителем, которому если что можно задать вопрос.
До трудоустройства я проходил таких два:

5.1. SkillBox, «Java-разработчик (архив)». Так получилось, что я попал в тот момент, когда курс задеприкейтили. Дело в том, что выпускной работой, над которой приходилось корпеть в течение всего курса, было создание клиента Телеграма – Javagram, для написания которого нужно было изучать Swing что было практически бесполезно для бэкэндера в 2020-м. В определённый момент времени Javagram стало пилить крайне сложно, API телеги менялось, курс отправили в архив и создали новый, который куда лучше, но я уже в него не попал, а в старом завяз, так и не пройдя до конца.

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

5.2 JavaOnlineProjects, «Topjava». В него я попал автоматически после тестового задания на 36-м уровне в JavaRush. На мой взгляд, самое лучшее по соотношению цена/качество что есть на рынке. По окончанию курса в моём портфолио было 2 проекта на самом востребованном стеке Spring’а.

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

Лучшим способом этого избежать – это пройти JavaRush до конца, изучив все материалы и разделы, взять ещё несколько курсов из JavaOPs, либо аналогичные от другой платформы.

6. Статьи на Хабре. Особенно полезны и интересны статьи образовательных компаний и преподавателей курсов. В некоторых таких статьях вынесены почти полностью лекции, которые преподаются на курсах платформы. Хотя очень часто люди и не относящиеся к каким-то образовательным компаниям пишут крайне хорошие статьи для новичков. Например, вот эта.

Если расписать путь по периодам:

В 2018-м я начал изучать Java по учебникам: выполнял каждое упражнение, писал каждый код, что встречал. Видеолекции обычно включал фоном при возможности.

В 2019-м продолжал учиться, стал кодить на тренажёрах, купил подписку на JavaRush.

В 2020-м учебники сменились пособиями, созрел и взял курс в SkillBox.

В 2021-м комбинировал разные практики в обучении и проходил стажировку в JavaOPS и доводил свою компетенцию до уровня Middle.

Почему получилось так долго?

У меня был дефицит времени, поэтому на обучение у меня уходило приблизительно 1-2 часа в день на всех этапах, кроме стажировки. Её совмещать с работой я не мог, поэтому пришлось уволиться, зато на стажировку и параллельное обучение у меня уходило по 5-6 и более часов в день.

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

При должном наличии времени занимаясь по 2-4 часа в день, данный путь можно спокойно осилить за 1,5 года.

Собеседование

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

Резюме

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

Тестовое задание

Обычно это было стандартное CRUD Spring Boot приложение с некой БД.
В этом не видел ничего сложного и страшного и если был заинтересован в вакансии, то всегда выполнял его.

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

Теоретическая часть технического интервью

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

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

Практическая задача на знание синтаксиса и работы Java. (опционально)

Обычно задачка на несколько строк кода, предусматривающая знание работы JVM.
Что будет выведено, упадёт ли приложение с ошибкой и тд…

Алгоритмическая задача (опционально)

Обычная вещь на интервью в Яндекс, но данную практику стали перенимать и другие работодатели. Так что рекомендую к этому подготовиться. Лучший ресурс для этого – LeetCode.

Написание SQL запроса (опционально)

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

Задача из практики в реальной жизни (опционально)

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

Из 10 собеседований, пройдённых за пару недель, я получил оффер по половине почти сразу и ещё один прилетел в течение месяца.

Если не считать первые два блина комом, то самое минимальное как меня оценивали – это Junior+ (подчеркнув, что это только лишь из-за отсутствия коммерческого опыта), на всех остальных меня оценили как мидла!

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

Трудоустройство

Взяли меня именно Middle Java разработчиком.

Мне обещали (более того, это даже прописали в трудовом договоре) возможности роста, бесплатное обучение, выполнение работы «с минимальной помощью ментора» и кучу других фишек.

Поэтому зарплатные ожидания я занизил, что было моей ошибкой, и лишь потом узнал, что мог просить в 1,7 раза больше! (верхний порог моей вилки).

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

Оказывается, ещё год назад в команде было всего 5 разрабов, но не находя общий язык с начальством, все они ушли один за другим.

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

Мои коллеги мидлы из других компаний и подразделений, с которыми я познакомился во время онбординга были в шоке. Друзья и знакомые рекомендовали сразу писать заявление и уходить.

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

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

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

Перед увольнением высказал пожелание, чтобы вместо меня выделили ставку и наконец‑то взяли Сеньора в команду, на что владелец продукта крайне удивился: «А ты разве не Сеньор?». Это мне придало сил и уверенности и им я как раз и собираюсь в ближайшее время стать, но для этого надо учиться, учиться и ещё раз учиться.

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

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

Задавался вопросом, а быть может надо было пытаться пройти стажировку и трудоустроиться Junior разработчиком раньше, а через пару лет опыта как раз бы и пришёл к Middle разработчику? — Возможно.

Знаю коллегу, который завершил ту же самую стажировку что и я и устроился в ту же фирму, что и я, но вот уже прошло почти 2 года, а он всё ещё Junior Java разработчик.
Так что не всё так однозначно.

Выводы, которые я сделал пока проходил этот путь

Нет никаких непреодолимых препятствий для того, чтобы стать разработчиком!:

  • Дефицит времени не делает цель недостижимой, он просто отодвигает её во времени. «Нет времени» зачастую просто отговорка. Я знаю людей, у которых по 2-е, 3-е детей, из которых есть совсем маленькие карапузы, требующие много времени и внимания. Но даже это их не останавливало, и они всё равно находили время для того, чтобы учиться.
  • Возраст тоже не является барьером. У меня в потоке на курсе было двое студентов, которых взяли на их первую работу джунами в 46 и 47 лет, и я уверен, что это не предел!
  • Расположение тоже не помеха, сейчас есть удалённые вакансии и даже переезжать никуда не нужно, что тоже на самом деле при большом желании не является преградой.

Немного ложки дёгтя

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

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

И ещё несколько рекомендаций сомневающимся как не ошибиться с выбором пути

1. Первоначально понять, а действительно ли хочется быть разработчиком, ведь в IT есть не только программисты.

2. Если да, то определиться с областью, в которой хочется вести разработку. (front, back, gamedev, …)

3. Не покупать сразу курсы за OverДохрена денег, а приобрести учебник «для начинающих», «для чайников», «за 24 часа» и просто попробуйте. Если понравилось – Ваше. Есть сомнения – Нет.

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

5. Использовать любую возможность писать код по учебнику и в тренажёрах, учить теорию: установить на смартфон JavaRush, Stepik, Sololearn, фоном включать лекции, когда есть возможность, с собой носить учебник или хотя бы Карманный справочник, брать его в поездки.

6. Выучить основы Git’а, зарегаться на ГитХабе и начать уже писать код и выкладывать его.

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

8. Если оценивают как мидла – проси ЗП как у мидла!

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

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

Ещё пару слов напоследок

Рынок постоянно меняется. Бум курсов и автоматизации многих процессов разработки постепенно сводит на нет дефицит людей с навыками уровня Junior. И на этом фоне, на мой взгляд, люди с навыками уровня Middle, даже если у них нет как такового опыта работы, будут в разы более востребованы.

Полный список литературы, который мне был полезен на протяжении всего обучения

  1. Java 9 (8) для чайников | Барри Берд — Книга именно для тех, кто вообще ничего не знает о программировании. Всё очень хорошо и доходчиво объясняется и разжёвывается.
  2. Изучаем Java | Кэти Сьерра, Берт Бэйтс. Она же Java Head First. – Это, пожалуй, лучший учебник, который не даст скучать: Пазлы, ребусы, задания и всё для наилучшего понимания и усвоения материала.
  3. Java для всех (Программирование на Java для начинающих) | Алексей Васильев – Не так всё разжёвывается, как в предыдущем, но оригинал книги автор писал на русском, что ликвидирует возможные косяки перевода. Плюс немного больше материала.
  4. Java за 24 часа | Кейденхед Роджерс – Прекрасный учебник. Несмотря на хайповое название действительно содержит кучу приличных и интересных вещей.
  5. Java SE 9 (8) Базовый курс | Кей Хорстманн – Книги содержат все моменты теории Java и хорошо и лаконично её описывают. Ничего лишнего.
  6. Java SE 9(8) Вводный курс | Кей Хорстманн – Книги содержат все моменты теории Java которые появились именно начиная с 8-й версии.
  7. Java Concurrency на практике | Брайан Гетц – Однозначно лучшее пособие по многопоточности в Java.
  8. SQL для чайников | Аллен Тейлор – Из той же серии, что и Java 9 (8) для чайников. Доступно крайне простым языком.
  9. Spring Boot 2.0 | Фелипе Гутьеррес – На мой взгляд, это лучшая книга по Spring Boot с примерами для быстрого старта.
  10. Spring 6 (5) для профессионалов | Юлия Козмина и другие – полное, хоть и не исчерпывающее, руководство по Спрингу. Единственное, в виду некачественного перевода, без слёз её читать на русском нельзя. Лучше пользоваться оригиналом.
  11. Паттерны объектно-ориентированного проектирования | Банда четырёх. – Самая базовая и известная книга про шаблоны проектирования.
  12. Java 8 Карманный справочник | Роберт и Патрисиа Лиугуори – очень полезная вещь, но не как справочник, а как краткий конспект для подготовки к собеседованию.
  13. Java. Эффективное программирование | Джошуа Блох – это вообще классика, которая должна быть в библиотеке любого Java разработчика.
  • Java
  • Учебный процесс в IT
  • Карьера в IT-индустрии

17 вопросов джуну: что должен знать Junior-разработчик

Аватарка пользователя Марина Александровна

Что должен знать Junior-разработчик и не завышены ли требования? Разобрали популярные вопросы с собеседований, разделив их на hard и soft skills.

Как считаете, завышены ли сегодня требования к Junior-разработчикам?
В пределах нормы
Они даже занижены

Что должен знать Junior-разработчик, чтобы получить должность или удержаться на уже «завоёванной» позиции?

Джун — это уже пусть и младший, но специалист. Подразумевается, что он самостоятельно умеет писать код, может справиться с простыми задачами сам, а со средними по сложности задачами — под присмотром ментора.

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

Что касается технических требований к джунам, то в последние годы они действительно выросли. Профессия программиста стала доступнее из-за курсов, и рынок переполнился начинающими разработчиками. Поэтому компании начали выставлять определённые требования, чтобы найти из общей массы тех, кто лучше других.Например, теперь на позицию начинающего front-end разработчика недостаточно просто знать JavaScript, HTML5/CSS3: нужны базовые знания одного из популярных фреймворков (React, Vue, Angular). Кажется, что со временем требования будут расти ещё сильнее.

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

Hard skills

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

Где проходили обучение, участвовали ли в реальных проектах?

В Galileosky мы всегда обращаем внимание на следующие моменты:опыт некоммерческих проектов, в основном небольших проектов, реализованных в рамках обучения;Pet-проекты, база работ на GitHub (само наличие проектов + качество кода);участие в хакатонах и конкурсах (особенно победы);посещение профильных мероприятий: митапов, конференций, лекций;сертификаты об окончании курсов или изучения технологий и пр.

Назовите принципы ООП. Старо как мир, но всё так же актуально. Держите шпаргалку по принципам ООП: там всё разложено по полочкам. Если вы хорошо разбираетесь в ООП, можете рассказать о своём опыте их применения на практике. Идеально, если вы также расскажете, почему те или иные принципы не стоит применять в некоторых ситуациях.

Какие алгоритмы сортировки вы знаете? Напишите код с использованием быстрой сортировки. Ох уж эти алгоритмы сортировки — понять бы, где они пригодятся в реальной жизни. А зачем вообще Junior-разработчику это знать? Тут всё просто: понимание принципов и гибкость мышления. Опять же, с помощью небольшого примера вы покажете, что владеете синтаксисом языка и умеете объяснять, что происходит в вашем коде.

Perl-разработчик: чем занимается и почему востребован

Какие технологии вы знаете?

Для работы на реальном проекте мало знать сам язык программирования. Младшему разработчику необходим большой багаж знаний. Если мы рассматриваем разработчика на Java, кроме самого языка, необходимо иметь хотя бы начальные знания о Spring, базах данных, SQL, системах контроля версий. Это не означает глубокое изучение всех аспектов, но представление о работе с этими технологиями быть должно, даже если нет реальной практики. Зачастую разница между Middle- и Junior-разработчиком — это реальный опыт.%save-sc1%Если говорить о знании конкретных технологий, от начинающего разработчика требуется опыт разработки на каком-то классическом языке программирования со строгой типизацией — подойдёт Java, C++, C#. При этом не так важно, на каком языке программирования придётся писать в будущем: синтаксис языка выучить легко, а вот понимание, что «можно» делать, а чего «нельзя» — нет.

Расскажите, с какими IDE вы работали. Достаточно назвать одну, но хорошо в ней разбираться: какие редакции есть, как подключить библиотеку к проекту, чем выбранная среда разработки лучше других, какие плагины вы использовали, etc. Это то, что должен знать Junior-разработчик.

Есть ли опыт работы с базами данных? Сколько нормальных форм вы знаете и чем они отличаются? Знать, как обращаться к БД, нужно, а вот что касается нормальных форм — это, скорее, плюс, чем необходимость. Будет хорошо, если вы назовёте СУБД, с которыми работали, обозначите их ключевые особенности.

Также к навыкам стоит добавить SQL. Да, на SQL сейчас никто не пишет, но без SQL невозможно понимание логики работы СУБД.

У вас был свой проект? В чём заключалась задача и как вы её решали? Чтобы стать Junior-разработчиком, нужно знать теорию и применять её на практике. Разумеется, вы как джун уже должны были что-то писать, будь то на курсах или для себя. Перед собеседованием стоит разобрать один из самых сложных проектов, вспомнить, какие проблемы возникали в процессе работы над ним, и как вы их решали.

Какие методологии создания продукта вы знаете? Назовите несколько принципов Agile. Да, вам стоит почитать об Agile. Даже если вы твёрдо уверены, что никогда не столкнётесь с командной разработкой, поверьте — столкнётесь. Это не то, что обязательно знать Junior-разработчику, но будет плюсом, если вы разбираетесь.

В macOS нашли скрытый PDF-документ со статьёй про биткоин из 2008 года

Есть ли опыт работы с Git? Какой веб-сервис для хостинга проектов вы используете? Неважно, GitHub это, GitLab или BitBucket. Интервьюера интересует главное — разбираетесь ли вы в системе контроля версий.

Также вас могут попросить решить несколько несложных задач.

Минимальный испытательный набор состоит из трёх тестов.Во-первых, оценивается логическое мышление соискателя. Для этого человеку дают несколько достаточно простых задач, которые позволяют проверить, может ли кандидат выполнить обобщение или сделать выводы из поступившей информации.Во-вторых, смотрят, как кандидат усваивает информацию, как работает его внимание и память. Обычно перед разработчиком ставится задача из 5–6 вводных пунктов, после чего идёт обсуждение её решения. Кандидат должен резюмировать задачу, описать своё решение, а затем сделать выводы.В-третьих, по косвенным признакам, оценивается коммуникабельность кандидата — развитие его речевых навыков и способность работать в команде. Часто от соискателей на Junior-позицию требуется проактивность (её оценят, предложив несколько «поведенческих» задач) и скорость мышления.

Soft skills

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

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

В удалённой работе гораздо большую роль начинают играть soft skills. Гибкие навыки — это не только умение общаться с коллегами, но и банальное уважение к коллегам, к примеру, в чатах — когда ты отмечаешь коллегу, дублируешь сообщение, которое могло потеряться, и закрепляешь важные ссылки на самом верху.

IT-сфера изменчива, постоянно появляются новые технологии. Готовы ли вы всё время учиться?

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

Каков ваш уровень английского языка?

Для нас, в EPAM, важным фактором является также уровень английского языка — не ниже Intermediate, поскольку после обучения можно попасть на проект с распределённой командой, с разработчиками из других стран.

Кроме того, аутсорсинговые компании зачастую работают с иностранными заказчиками, организовывают с ними встречи и созвоны. И вообще, читать и писать документацию стоит на английском, да и на Stack Overflow лежит всё, что нужно знать Junior-разработчику. Поэтому перед собеседованием обязательно подтяните английский язык.

Умеете ли вы справляться со стрессом?

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

Если возникла проблема, как вы будете её решать? Это больше вопрос на самостоятельность, нежели на способы решения.

Хочется поделиться советом: прежде чем идти к более опытным коллегам с вопросом, постарайтесь сами разобраться в проблеме. Во всех командах очень ценится, когда человек подходит не просто с вопросом «А как это сделать?», а уже обладает какой-то информацией, прикинул варианты решения и обращается за советом, как решить проблему правильнее.

Можете ли вы оценить время выполнения задачи? Да, это то, что должен уметь Junior-разработчик уже с кое-каким опытом, но на стадии обучения вы должны были получить хотя бы базовый навык оценки сроков.

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

Что должен знать Junior-разработчик? Отвечают эксперты

Аватарка эксперта Олег Власенко

Олег Власенко
заместитель генерального директора SimbirSoft

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

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

Тем временем джун — это уже пусть и младший, но специалист. Подразумевается, что он самостоятельно умеет писать код, может справиться с простыми задачами сам, а со средними по сложности задачами — под присмотром ментора. Соответственно, такой специалист обязан обладать уверенными знаниями как минимум одного языка и фреймворка. Да, его знания, скорее всего, не будут глубокими, но он должен знать основы. Значительная часть сил джуна уходит на освоение нового. Ведь чтобы стать мидлом и выйти на новый уровень оплаты своего труда, джуну придётся освоить несколько фреймворков пусть и поверхностно, глубоко изучить как минимум один фреймворк, возможно, подготовиться и сдать экзамен по сертификации, получить опыт в разных проектах. Соответственно, важнейшими soft skills для джуна (да и для любого ИТ-специалиста вообще) будут навыки самообучения, навыки и опыт решения любых проблем, самодисциплина и мотивация к обучению.

Если рассматривать hard skills, то, наверное, нужно упомянуть такие профессиональные навыки, как умение искать информацию в поисковых системах, знание средств коллективной разработки (Git и другие), знание IDE, языка и фреймворка.

Завышены ли требования к джунам? Уверен, нет. Всё проясняется, если разделить понятия стажёр и джун и рассматривать джунов, как младших специалистов, а не просто тех, кто начал учиться.

Аватарка эксперта София Техажева

София Техажева
руководитель программ «Python-разработчик» и «Алгоритмы для разработчиков» в Яндекс.Практикуме

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

Требования к hard skills будут зависеть от направления. Например, мы уже подробно рассказывали, что работодатели ждут от Junior-Python-разработчика. Для таких специалистов это чаще всего знание языка программирования Python, алгоритмов и структур данных, опыт работы с базами данных и фреймворками.

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

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

Аватарка эксперта Александр Махновский

Александр Махновский
руководитель отдела разработки Аванпост

По нашему опыту в последние годы требования к Junior-разработчикам у нетоповых компаний снизились. Связано это с кадровым голодом, вызванным, с одной стороны, ростом рынка, с другой, демографическим провалом девяностых–начала 2000-х.

В целом для джуна, планирующего работать в прикладной разработке, требования можно определить следующим образом:

  • Знать синтаксис языка, на котором предстоит работать.
  • Знать основу стандартной библиотеки языка и представлять её структуру в целом.
  • Понимать принципы работы технологической платформы и среды исполнения (например jvm).
  • Понимать принципы работы реляционных СУБД, иметь навыки работы с ними.
  • Знать основы веб-разработки.
  • Понимать, как в целом устроен мир: как работает сетевое взаимодействие, какая инфраструктура существует в интернет- и корпоративных сетях, понимать отличия парадигм программирования, скриптовых языков от компилируемых и т. д.
  • Уметь решать простые прикладные задачи, т. е. применять знания, перечисленные выше, с пользой.
  • Умение слушать, воспринимать постановку задач и пояснения, не упускать детали, но и не зацикливаться на них.
  • Способность и желание обучаться в процессе работы.
  • Умение задавать вопросы и в целом формулировать мысли.
  • Любознательность и стремление к развитию.
  • Ответственность.

Как правило, у всех ребят, приходящих к нам на собеседование, всё в порядке с основными хард-скиллами, учитывая, что они предварительно проверяются простейшим тестовым заданием.

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

Это не самые высокие требования: могу с уверенностью сказать, что 10-15 лет назад требования были значительно серьезней. Отрасль была менее лояльной к новичкам, готовность брать на работу, платить не самую низкую зарплату и учить была у единиц компаний. Сейчас же все, даже самые небольшие софтверные и не только компании, готовы вкладываться в обучение вчерашних студентов, несмотря на все сопутствующие риски. Всё, что нужно джуну сегодня, — общая адекватность и минимальные знания технологий.

Как стать разработчиком с нуля

Выводы

Мнения насчёт того, завышены требования к джунам или нет, очень разнятся. Но практически все эксперты сходятся в том, что Junior-разработчик должен знать о преимуществах и сферах применения выбранного языка или технологии, уметь работать с Git, знать основные алгоритмы, библиотеки и фреймворки в своей сфере, быть в курсе возможностей хотя бы одной IDE, знать английский не ниже уровня Intermediate и уметь работать в команде.

Что нужно знать чтобы стать Junior Java Developer? [закрыт]

Закрыт. На этот вопрос невозможно дать объективный ответ. Ответы на него в данный момент не принимаются.

Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы на него можно было дать ответ, основанный на фактах и цитатах.

Закрыт 3 года назад .

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

Отслеживать
задан 10 фев 2021 в 17:06
holodholod holodholod
9 2 2 бронзовых знака

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

  1. java синтаксис
  2. java core
  3. Алгоритмы + типы данных + collections
  4. multithreading (что-то знать про Concurrent)
  5. Уметь делать простые SQL запросы
  6. Spring Hibernate или аналоги, можно и без этого, но сложно будет найти вакансию.
  7. Тестирование, хоть как-то. Может быть не must have, но лишним не будет. Но свой код тестировать уметь нужно.
  8. Git или аналог
  9. Будет плюсом Docker

А вообще открываете вакансию на hh, и там будет стек.

Отслеживать
ответ дан 10 фев 2021 в 17:25
406 3 3 серебряных знака 11 11 бронзовых знаков
Спасибо, а что с математикой? Нужна ли она?
11 фев 2021 в 7:35

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *