- Вопрос № 1: каковы особенности языка Java
- Вопрос № 2: что умеет виртуалка Java
- Вопрос № 3: чем отличаются классы и интерфейсы
- Вопрос № 4: провокация
- Вопрос № 5: переменные
- Вопрос № 6: где новички обычно путаются
- Вопрос № 7: как передать по ссылке и по значению
- Заключение
Приходящие устраиваться на работу Junior-разработчики по Java порой проваливают собеседование в силу того, что привыкли к теории. А на собеседовании от работодателя льются вопросы по практической части «Hello, World!». Чтобы подготовиться к подобным вопросам по Java, сегодня здесь будут раскрыты основные 10 тем, из которых обычно берет вопросы работодатель на собеседовании.
Вопрос № 1: каковы особенности языка Java
Первый и ожидаемый вопрос, конечно, будет про особенности Java. Здесь нужно упомянуть про объектно-ориентированное программирование. Рассказать про методологию программирования, основанную на представлении программы в виде совокупности объектов. Каждый из последних является экземпляром определенного класса, занимает особое место в иерархии.
После того как эти слова будут сказаны, может последовать вопрос про наследование классов. Расскажите о том, что один класс наследует другой. Выражается наследование переменной «extend».
Существующий класс называют «parent», а создаваемый «child». Это на сленге программистов. Существующий и создаваемый классы известны под названием «superclass» и «subclass». Может быть, даже вас попросят написать код.
Рассказывая про ООП и приводя примеры, не забудьте упомянуть о концептах объектно-ориентированного программирования: инкапсуляция, полиморфизм, абстракция. О наследовании уже было рассказано.
Затем работодатель может возвратиться снова к особенностям языка Java. Нужно продолжить ответ и назвать следующие особенности:
- кроссплатформенность;
- высокая производительность;
- мультипоточность.
К сведению! Не забудьте упомянуть, что программа, написанная на Java, может быть запущена на любой платформе. Главное, чтобы была настроена виртуальная Java-машина.
Ответив на первый вопрос, не расслабляйтесь. Следующим вопросом на собеседовании будет: «Возможности виртуальной машины».
Вопрос № 2: что умеет виртуалка Java
Скажите, что через виртуалку и выражается кроссплатформенность языка. Приведите общий пример:
- Машина компилирует написанный код в байт-код. Эта кодировка запускается на виртуалке.
- Машина продолжает интерпретировать его в машинный код под любую платформу.
Просьба рассказать о разнице между интерфейсом и абстрактным классом будет третьей в топе вопросов по Java.
Вопрос № 3: чем отличаются классы и интерфейсы
Здесь джуниор-разработчику нужно будет раскрыть весь свой потенциал. Расскажите все, что вы изучили об абстрактных классах. Скажите, что у них есть постоянные и переменные. Упомяните про методы объявления с различными модификаторами доступа.
Интерфейсы состоят из постоянных значений и методов объявления с общим доступом. Они нужны для копирования множественного наследования. Классы в интерфейсе будут наследованы от одного родительского.
Эту тему необходимо не только знать, но и понимать. Без осознания различий интерфейсов и классов можно даже не пытаться учить язык Java. Если же вы новичок и только взялись за обучение, то в нем вам помогут советы от опытных программистов.
Дальше пойдут вопросы о синтаксисе языка.
Вопрос № 4: провокация
Опытный работодатель, принимая на работу джуниора, обязательно будет задавать провокационные вопросы. Например, он может попросить рассказать о двух классах, которые не наследуются от Object.
Если вы хорошо изучали язык, то знаете, что таких классов не существует. Поэтому нужно будет ответить, что все классы прямо или через родительские наследуются от объекта.
Вопрос № 5: переменные
Вопросы о переменных будут присутствовать на собеседовании. Будут спрашивать про переменные внутри метода. Необходимо ответить, что они могут существовать до тех пор, пока применяется этот метод. Эту переменную еще называют локальной: «Local Variable».
Уточните, что локальной переменной не станет, когда закончится действие метода.
Работодатель обязательно спросит начинающего разработчика о внутриклассовых переменных. Такие фичи существуют, пока есть объект. Пример внутриклассовой переменной.
Вопрос № 6: где новички обычно путаются
Это вопрос о переменной «Final». Работодатель спросит: можно ли ее считать константой? Действительно, для подобных переменных нельзя присвоить новое значение. Но тут не забудьте добавить, что будет она постоянной или нет, зависит от того, на какой тип данных она ссылается.
Например, если на «immutable», то будет константой. Если же она ссылается на «mutable», то переменная не будет постоянной.
Работодатель может поинтересоваться, что вы знаете о «mutable» и «immutable». Скажите, что «mutable»-объекты — это те объекты, чьи состояния и их переменные можно изменить после создания. Приведите пример классов: StringBuilder, StringBuffer.
А «immutable»-объекты, их состояния и переменные не получится изменить. Приведите примеры типа String, Integer, Double.
Может быть, вас попросят прописать immutable-класс. Напишите его правильно. От этого зависит ваша компетентность в глазах работодателя.
Вопрос № 7: как передать по ссылке и по значению
В Java, в отличие от C++, указатели создали неявными, чтобы упростить кодировку. Когда вы создаете объект, то в ссылке будет храниться адрес объекта от оператора «new». Попытаетесь передать такую ссылку в качестве параметра функции — получите в том месте, где она передается, копию. Это значит, что передача произойдет по значению. Копия будет ссылаться на адрес оригинала. Произведите какие-нибудь действия над ней, оригинал изменится. Укажите, что подобное поведение сработает только с объектами.
Если отправить примитив в метод и поменять его, изменениям подвергнется только копия.
Существует еще много вопросов, которые может задать работодатель. Вот некоторые из них:
- Что такое примитивы и объекты?
- Что такое перезагрузка и переопределение?
- Что такое package level acces?
- Можно ли перегрузить метод «static»?
- Что такое модель памяти в Java?
- Особенности использования статических классов.
- Типы аргументов и их количество.
- Зачем вы изучили Java?
- Почему используют язык Java в качестве написания Backend?
- Расскажите про модификаторы доступа.
- Что вы знаете о возвращаемых типах?
- Расскажите о связи между HashCode и Equals.
- Что означает Error в языке Java?
- Другие каверзные и простые вопросы.
Но описанные выше топ-вопросы по Java на собеседовании — основные, которые будут заданы при приеме на работу кодера.
Заключение
Теперь вы знаете, как пройти собеседование и не провалить его. Тщательно подготовьтесь к нему, перечитайте, повторите в голове все, что изучали на уроках по Java. Не теряйтесь, когда будут задавать неправильные или провокационные вопросы по типу № 4. Это делается специально, чтобы посмотреть на вашу стрессоустойчивость и сообразительность.