Вопросы и задачи на собеседовании Java в 2024 году

HR Рынок ИТ
Блог
 Вопросы и задачи на собеседовании Java в 2024 году
Поделиться:

Пишешь однажды, запускаешь где угодно – это про легендарные свойства Java.

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

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

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

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

1. Какие существуют спецификаторы доступа для классов Java?

Спецификаторы доступа — это ключевые слова, используемые перед именем класса, определяющим область доступа. Их четыре типа: public, private, protected и отсутствие модификатора (он же модификатор по умолчанию)

2. Что такое bytecode?

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

3. Что такое OutOfMemoryError?

Это одна из критических ошибок во время исполнения программы, она связана с работой виртуальной машины Java. Вызывается, когда JVM не может выделить объект, потому что на него не хватает памяти, и сборщик мусора не может выделить больше памяти. 

4. Какие признаки JavaBean?

Основные признаки JavaBean:

  • Класс должен иметь стандартный конструктор без параметров.

  • Свойства должны быть доступны через геттеры (get) и сеттеры (set) методы.

  • Имена геттеров и сеттеров должны соответствовать стандартной схеме: для свойства "foo" геттер должен иметь имя "getFoo", а сеттер – "setFoo".

  • Класс должен реализовывать java.io.Serializable интерфейс, чтобы его можно было сериализовать.

5. Что такое стектрейс? Как его получить?

Это список вызовов методов, которые привели к возникновению исключения (exception) в программе. С его помощью можно определить, в какой части произошла ошибка, а также узнать, как программа пришла к этому месту. Для получения стек-трейса в джава можно воспользоваться методом printStackTrace() класса Throwable.

6. Что такое конструкторы? Какие типы знаете?

Это методы класса в Java, которые вызываются при создании нового объекта и занимаются инициализацией поля нового объекта. Их два типа:

  • Конструктор по умолчанию – без параметров. Он создается компилятором, если в классе не определен ни один конструктор. 

  • Пользовательский конструктор – создается программистом и может иметь параметры. Он может выполнять любой код и инициализировать поля объекта значениями, переданными в параметрах.

7. Объекты каких стандартных классов immutable в Java?

В языке Java объекты классов String, Integer, Byte, Character, Short, Boolean, Long, Double и Float являются immutable. 

8. Дайте краткую характеристику immutable object. Зачем они нужны?

Это объекты, которые нельзя изменить после их создания. Такие объекты, как строки (String) или числа (Integer), являются неизменяемыми. Основные преимущества неизменяемых объектов – надежность и защита от изменений со стороны других частей программы. Также они обеспечивают безопасность многопоточного программирования и помогают улучшить производительность.

9. Как сделать immutable object?

Нужно задать поля объекта как final. 

10. Каковы преимущества immutable object перед обычными объектами?

Преимущества неизменяемых объектов включают в себя:

  • Безопасность потоков.

  • Простота.

  • Повторное использование.

  • Кешеруемость.

  • Сравнение.

Варианты вопросов с ответами для Java middle во время технического собеседования

Через пару-тройку лет работы джун прокачивает свои скиллы до middle-уровня и перерастает в опытного.

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

1. Назовите преимущества использования Spring?

Он легкий и весит около 2 Мб, поддерживает аспектно-ориентированное программирование (АОП) и обеспечивает связную разработку; он отделяет бизнес-логику приложения от системных служб, это хорошо спроектированный веб-фреймворк MVC, Spring предоставляет интерфейс управления транзакциями, который можно масштабировать как для локальных, так и для глобальных транзакций.

2. Сравните методы wait() и sleep() в Java.

Wait() приостанавливает поток до тех пор, пока не истечет указанное количество миллисекунд. Либо пока он не получит желаемое уведомление от другого потока. Sleep() блокирует операции, которые удерживают монитор/блокировку общего объекта в течение указанного количества миллисекунд. 

3. Есть ли в Java статический класс?

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

4. Что такое загрузчик классов Java?

Загрузчик классов относится к части среды выполнения Джава, которая загружает классы по запросу в виртуальную машину JVM. При запуске JVM используются три загрузчика:

  • Начальный загрузчик

  • Загрузчик классов расширений

  • Загрузчик классов системы/приложения.

5. Как работает метод Get HashMap?

HashMap основан на структуре данных хеш-таблицы и использует метод hashCode() для вычисления хэш-кода, чтобы найти местоположение корзины в базовом массиве, а также метод equals() для поиска объекта в том же bucked в случае коллизии.

6. В чем состоит главная особенность ООП?

Главная особенность ООП (объектно-ориентированного программирования) – программа строится на основе объектов, которые имеют свойства и поведение. В этом подходе данные и функции для их обработки объединены в одном классе. Классы могут наследоваться друг от друга, и таким образом создавать дополнительные классы с более сложным поведением.

7. Расскажите какие недостатки в ООП?

Как любой подход к программированию, ООП имеет свои недостатки: 

  • Сложность

  • Избыточность

  • Производительность

  • Наследование

  • Полиморфизм

  • Тестирование

  • Ресурсоемкость

8. Что такое перегрузка (overloading) метода?

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

9. Что такое класс POJO?

Это простой Java-класс, который не зависит от каких-либо фреймворков или библиотек и следует определенным правилам. POJO означает "Plain Old Java Object" (Простой старый Java-объект) и используется для передачи данных между различными слоями приложения.

10. Расскажите о подражании Java. Каковы особенности использования ключевого слова super?

Подражание (наследование) – это механизм, который позволяет создавать новый класс на основе существующего, заимствуя его свойства и методы. В Джава подражание реализуется с помощью ключевого слова "extends". Особенность использования ключевого слова "super" в том, что оно позволяет обращаться к методам и свойствам родительского класса из дочернего класса. 

11. Что такое сигнатура метода? 

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

Практические задачи для Java junior

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

В этой статье вы найдете задачи разного уровня сложности.

Задача 1. Какой результат выведет вызов метода foo()?

void foo() {

   String m = "Hello";

   System.out.print(m);

   bar(m);

   System.out.print(m);

}

void bar(String m) {

   m += " World!";

}

Ответ: “HelloHello”.

Задача 2. Какой результат будет выведен в консоль?

public abstract class OurAbstractClass {

   public OurAbstractClass() {

       System.out.println("This is abstract class constructor");

   }

}

class OurDemoClass extends OurAbstractClass {

   public OurDemoClass() {

       System.out.println("This is demo class constructor");

   }

   public static void main(String[] args) {

       OurDemoClass ourDemoClass = new OurDemoClass();

   }

}

Ответ:

This is abstract class constructor

This is demo class constructor

Задача 3. Какая проблема возникнет с этим кодом?

public static void main(String[] args) {

   try {

       foo();

   } catch (IOException e) {

       e.printStackTrace();

   } catch (FileNotFoundException e) {

       e.printStackTrace();

   }

public static void foo()throws IOException,FileNotFoundException {

}

Ответ: Данный код не скомпилируется. Это вопрос на знание иерархии исключений.

Практические задачи для Java middle

Задача 1. Напишите функцию, которая принимает на вход массив объектов и возвращает массив имен всех объектов.

Ответ:

function getNames(arr) {

let names = [];

for (let i = 0; i < arr.length; i++) {

names.push(arr[i].name);

}

return names;

}

Задача 2. Напишите функцию, которая принимает на вход массив чисел и возвращает новый массив c тем же количеством элементов, где каждый элемент является произведением всех элементов исходного массива, кроме текущего.

Ответ:

function productArray(arr) {

let result = [];

for (let i = 0; i < arr.length; i++) {

let newArr = arr.slice(0,i).concat(arr.slice(i+1));

let product = newArr.reduce(function(acc, val) {

return acc * val;

});

result.push(product);

}

return result;

}

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

Ответ:

function capitalizeWords(str) {

return str.replace(/\b[a-z]/g, function(char) {

return char.toUpperCase();

});

}

Хочешь работать с нами? Отправь свое резюме

Нажимая на кнопку, вы соглашаетесь с Политикой конфиденциальности персональных данных

Файлы cookie обеспечивают работу наших сервисов. Используя наш сайт, вы соглашаетесь с нашими правилами в отношении этих файлов.