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, нужно достаточно глубоко разбираться в компьютерных науках. Сюда относятся:

  • структуры данных;
  • алгоритмы;
  • принципы работы систем, компьютеров, ОП;
  • Курс English For IT: Communication від Enlgish4IT.
    Почни легко працювати та спілкуватися з мультикультурними командами та міжнародними клієнтами. Отримайте знижку 10% за промокодом ITCENG.
    Інформація про курс
  • теория вычислений;
  • хранение и обработка данных;
  • базы данных;
  • технология разработки программного обеспечения.

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

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

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

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

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

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

Курс English For Tech course від Enlgish4IT.
Лише 7 тижнів по 20-30 хвилин щоденного навчання допоможуть вам подолати комунікативні бар'єри. Отримайте знижку 10% за промокодом ITCENG.
Дійзнайтеся більше

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

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

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

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

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

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

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

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

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

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

Онлайн-курс "AWS для початківців" від robot_dreams.
Навчіться працювати з cloud-native системами та побудуйте власний застосунок для зберігання даних у системі AWS.Досвід і фідбек від Fullstack Developer in Amazon.
Детальніше про курс

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

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

  • самообучаемость
  • умение работать в команде
  • самостоятельность
  • дружелюбность
  • способность выходить из сложных ситуаций
  • коммуникабельность
  • Курс QA Manual (Тестування ПЗ мануальне) від Powercode academy.
    Навчіться знаходити помилки та контролювати якість сайтів та додатків.
    Записатися на курс
  • усидчивость
  • ответственность

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

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

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

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

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

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

Курс-професія "Unreal Engine Developer" від robot_dreams.
Отримайте фундаментальні знання з розробки ігор, навчіться кодити на С++ та використовувати Blueprints і Gameplay Ability System, щоб створювати віртуальні всесвіти на топовому рівні.
Про курс

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

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

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

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

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

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

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

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

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

Курс UI/UX дизайну від Mate academy.
Допоможемо швидко освоїти базові знання, необхідні для того, щоб отримати першу роботу у сфері UI/UX дизайну. Після закінчення курсу ви отрмаєте сертифікат та допомогу з працевлаштуванням.
Дізнатися більше про курс

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

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

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

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

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

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

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

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

Онлайн-курс "Креативна майстерня ілюстраторів" від Skvot.
Прокачайте візуальне мислення і скіл сторітелінгу.Дізнайтесь, як розвивати селф-бренд, комунікувати з клієнтами та монетизувати свою творчість.З практикою та детальним фідбеком.
Детальніше

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

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

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

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

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

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

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

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

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

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

Курс Quality Assurance (QA) від Mate academy.
Курс для тих, хто хоче навчитись QA з нуля. Ви опануєте усі потрібні знання та навички, які потрібні спеціалісту у цій ніші. А після завершення курсу ми допоможемо з працевлаштуванням. .
Зареєструватись на курс

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

P.S.

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

Дерзайте!

Дерзайте!

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

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

ООП:

Основы Java: 

  • Java (JDK, JVM, JRE, компилятор) 
  • Типы данных 
  • Онлайн-інтенсив "Analytics Bootcamp" від robot_dreams.
    Навчіться верифікувати й аналізувати дані та визначати ключові метрики, які підходять саме вашому продукту.Опануйте SQL для аналітики даних та їх візуалізацію в Tableau.
    Приєднатись
  • Примитивы 
  • Приведение типов 
  • Логические / Математические операции 
  • Ссылочные типы 
  • Массивы 
  • Работа со строками 
  • Условные операторы 
  • Циклы
  • Исключения 
  • Психологічний профорієнтаційний тест для IT-фахівців від Hillel IT School.
    Пройдіть психологічний профорієнтаційний тест для IT-фахівців щоб дізнатися ваші сильні сторони, вподобання і інтереси і з'ясувати, яка IT-спеціальність вам підходить.
    Пройти тест
  • Классы, объекты, интерфейсы
  • Коллекции 
  • Что нового в Java 8?
  • Ввод / Вывод 
  • Многопоточность 
  • Работа с базой, JDBC 
  • Servlet API

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

  • Maven 
  • Курс Frontend розробки від Mate academy.
    Front-end розробник одна з найзатребуваніших професій на IT ринку. У Mate academy ми навчимо вас розробляти візуально привабливі та зручні інтерфейси. Після курсу ви зможете створювати вебсайти і застосунки, що вразять і користувачів, і роботодавців.
    Дізнатися більше про курс
  • Git 
  • Hibernate 
  • Apache Commons 
  • Apache Tomcat

Spring:

Базы данных: 

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

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.

Онлайн-курс "Асинхронне програмування" від robot_dreams.
Опануйте підходи асинхронного програмування на Python для розробки швидких та ефективних програм.Вас навчатиме Lead Python Software Engineer у SoftServe.
Детальніше про курс

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

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

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

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