ru:https://highload.today/blogs/java-interview/ ua:https://highload.today/uk/blogs/java-interview/
logo
Карьера      28/01/2022

Однажды кандидат сказал, что на простые вопросы отвечать не будет: как мы берем в команду Java-разработчиков

Михаил Косенко BLOG

Java TechLead и ментор обучения в NIX

Больше 20 лет я профессионально занимаюсь программированием, около 10 лет — непосредственно набором и подготовкой Java-специалистов в NIX. За это время я провел сотни, если не тысячи собеседований. И сегодня хочу поделиться с кандидатами советами, как успешно пройти собеседование на позицию Java Developer.

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

В качестве дисклеймера подчеркну: все, что описано в этой статье — мое личное мнение.

Почему Java — хороший выбор для старта карьеры в разработке

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

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

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

Для разработки на Java нужна уверенная техническая база

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

  • структуры данных;
  • алгоритмы;
  • принципы работы систем, компьютеров, ОП;
  • Онлайн-курс Бізнес-аналіз. Basic Level.
    В ході курсу студенти навчаться техніці збору і аналізу вимог, документуванню та управлінню документацією, управлінню ризиками та змінами, а також навчаться моделювати процеси і прототипуванню.
    Приєднатися
  • теория вычислений;
  • хранение и обработка данных;
  • базы данных;
  • технология разработки программного обеспечения.

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

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

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

Советы для тех, кто только задумывается об IT

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

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

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

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

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

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

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

Советы для тех, кто делает первые шаги в IT

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

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

Как составить резюме на позицию Java Developer

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

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

Какие софт-скиллы могут быть:

Онлайн-курс Бізнес-аналіз. Basic Level.
В ході курсу студенти навчаться техніці збору і аналізу вимог, документуванню та управлінню документацією, управлінню ризиками та змінами, а також навчаться моделювати процеси і прототипуванню.
Приєднатися
  • самообучаемость
  • умение работать в команде
  • самостоятельность
  • дружелюбность
  • способность выходить из сложных ситуаций
  • коммуникабельность
  • усидчивость
  • ответственность

Все ваши яркие положительные черты следует описать в резюме.

Кроме того, важный пункт — знание английского и других иностранных языков.

Если у вас есть наработки в репозитории на GitHub, обязательно дополните резюме ссылкой не него:

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

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

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

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

Читайте также: «Даже цвета могут сыграть против вас»: как разработчику составить резюме, которое устроит на работу мечты. Инструкция и примеры

Чего ожидать от собеседования?

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

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

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

По моему мнению, претендент на позицию Junior Java Developer должен:

  • четко понимать принципы ООП;
  • знать основные библиотеки, входящие в JDK: коллекции, ввод-вывод, многопоточность.

Также на собеседовании мы проверяем знания концепций Internet и базовых знаний компьютерных наук.

Дополнительный плюс — умение взаимодействовать с базами данных, знание основных фреймворков (Spring, Hibernate) и умение работать с инструментами сборки (maven, gradle).

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

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

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

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

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

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

Помните: ответы на технические вопросы — не единственный критерий для оффера. Зачастую учитывается и то, то как вы впишитесь в команду.

И если вдруг вы не подошли именно по этому критерию (а вам, скорее всего, об этом не скажут), то это просто говорит о том, что это не ваша команда. Ваша команда еще впереди.

Советы для тех, кто уже не джуниор

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

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

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

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

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

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

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

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

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

P.S.

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

Дерзайте!

Дерзайте!

Темы и материалы для подготовки к интервью на позицию Junior Java Developer

Для того, чтобы базово разобраться в программировании на Java, советую новичкам ознакомиться с такими материалами:

ООП:

Основы Java: 

  • Java (JDK, JVM, JRE, компилятор) 
  • Типы данных 
  • Примитивы 
  • Приведение типов 
  • Логические / Математические операции 
  • Ссылочные типы 
  • Массивы 
  • Работа со строками 
  • Условные операторы 
  • Циклы
  • Исключения 
  • Классы, объекты, интерфейсы
  • Коллекции 
  • Что нового в Java 8?
  • Ввод / Вывод 
  • Многопоточность 
  • Работа с базой, JDBC 
  • Servlet API

Java фреймворки, библиотеки и инструменты: 

  • Maven 
  • Git 
  • Hibernate 
  • Apache Commons 
  • Apache Tomcat

Spring:

  • Web
  • Data 
  • Security
  • Boot

Базы данных: 

  • MySQL
  • PostgreSQL
  • MongoDB 
  • H2

Клиентское окружение: 

1. HTML 

2. CSS: 

3. JavaScript 

Книги:

  • Дж. Гленн Брукшир, Денис Брилов «Компьютерные науки. Базовый курс», 13-е издание 
  • Кей Хорстманн «Java. Библиотека профессионала»
  • Боб Мартин «Чистый код: создание, анализ и рефакторинг» 
  • Joshua Bloch, Effective Java. 3rd Edition
  • Владстон Ферреро Фило «Теоретический минимум по Computer Science»  
  • Денис Брилов «Компьютерные науки. Базовый курс».

Читайте также: Как пройти собеседование на Python-разработчика: что важно знать и уметь

If you have found a spelling error, please, notify us by selecting that text and pressing Ctrl+Enter.

Job Interview Crash Course.
Отримайте 6 шаблонів відповідей на співбесіді, які ви зможете використовувати для структурування своїх відповідей. Отримайте знижку 10% за промокодом ITCENG.
Приєднатися

Этот материал – не редакционный, это – личное мнение его автора. Редакция может не разделять это мнение.

Топ-5 самых популярных блогеров марта

Founder at Shallwe, Python Software Engineer (Django/React)
Всего просмотровВсего просмотров
95
#1
Всего просмотровВсего просмотров
95
Career Consultant в GoIT
Всего просмотровВсего просмотров
90
#2
Всего просмотровВсего просмотров
90
CEO & Founder в Trustee
Всего просмотровВсего просмотров
43
#3
Всего просмотровВсего просмотров
43
Рейтинг блогеров

Ваша жалоба отправлена модератору

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: