Рубріки: Мнение

«Дружище, беги из этой компании!»: вопросы на собеседованиях по Java, которые нельзя задавать

Богдан Мирченко

Цель интервьюера на любом собеседовании — выбрать кандидата, задавая профильные вопросы. Но как уверен разработчик программного обеспечения Арнольд Галович, не все вопросы одинаково полезны и удачны, а некоторые и вовсе не актуальны. О чем уже не стоит спрашивать на собеседовании по Java, чтобы как минимум не тратить время зря, специалист рассказал в своем блоге. 

Вот что он написал. 

Примечание: в списке рассмотрены вопросы, которые задают айтишникам уровня Middle+. Они взяты из гугла. 

Почему Java — платформонезависимый язык?

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

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

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

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

Для чего нужен метод public static void main(String args[])?

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

Что такое конструкторы в Java?

Вдогонку к предыдущему вопросу. Его есть смысл задавать, если кандидат только начал изучать Java и программирование. 

Разница между классами ArrayList и Vector в Java?

Вопрос: кто-нибудь пользовался классом Vector в течение последних трех лет? Я лично ни разу не использовал его за всю карьеру. Еще в 2010 году компании Sun и Oracle рекомендовали использовать ArrayList

В чем смысл вопроса? Узнать, знает ли кандидат историю Java вплоть до 1990-х годов? Вопрос не имеет смысла. 

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

Как в Java создать бесконечный цикл?

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

Поверьте, в реальном проекте бесконечный цикл выглядит не так:

while (true) {
    // do stuff
}

Пять способа создания бесконечного цикла от разработчика Лекса Фридмана. 

В чем разница между С++ и Java?

Можно спросить даже, в чем разница между Java и JavaScript, но проверять знание лексики — это плохо. К тому же, зачем Java-разработчику знать специфику С++? 

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

Вот как на этот вопрос отвечают сами интервьюеры: 

  • Простота. Разве это особенность?
  • Объектно-ориентированность. Да, но все же это не тянет на особенность. Тем более ООП — это больше, чем просто создание классов и интерфейсов.
  • Переносимость. Подразумевается способность языка работать на разных платформах. Да, но я не уверен, что кто-то считает это особенностью.
  • Платформенная независимость. В чем разница между этим и переносимостью? На вопрос, вероятно, не ответит даже его автор.

Сколько типов областей памяти выделяет JVM?

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

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

Возвращаясь к заданному вопросу, ответ будет таким:

  • Class(Method)Area;
  • Heap;
  • Stack;
  • Program Counter Register;
  • Native Method Stack.

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

Является ли пустое имя файла .java допустимым именем исходного файла?

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

delete, next, main, exit и null: что из этого в Java является ключевым словом?

Что?! Вы просто задаете вопросы из спецификации языка? 

Как установить Java?

Это, наверное, вообще какая-то шутка. 

Как указать путь к файлу в Java?

Чушь. Как это связно с Java? По словам автора вопроса, кандидат должен объяснить, как установить переменную окружения path в Windows, Mac, Linux и Solaris. 

Серьезно? 

Заключение

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

think about it

Останні статті

Что такое прокси-сервер: пояснение простыми словами, зачем нужны прокси

Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…

21.11.2024

Что такое PWA приложение? Зачем необходимо прогрессивное веб-приложение

Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…

19.11.2024

Как создать игру на телефоне: программирование с помощью конструктора

Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…

17.11.2024

Google Bard: эффективный аналог ChatGPT

В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…

14.11.2024

Скрипт и программирование: что это такое простыми словами

Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…

12.11.2024

Дедлайн в разработке: что это такое простыми словами

Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…

11.11.2024