class StackTask {

Программа напечатает 15. Значение long передаётся по значению через a, b, c и d, а println вызывается один раз в последнем методе.

Короткий ответ

Что ответить на собеседовании

Программа напечатает 15. Значение long передаётся по значению через a, b, c и d, а println вызывается один раз в последнем методе.

Подробный разбор

Ответ с пояснениями

Условие

class StackTask {

public static void main(String[] args) {
    a(15);
}

public static void a(long item) {
    b(item);
}

public static void b(long item) {
    c(item);
}

public static void c(long item) {
    d(item);
}

public static void d(long item) {
    System.out.println(item);
}

}

Ответ

Программа напечатает 15. Значение long передаётся по значению через a, b, c и d, а println вызывается один раз в последнем методе.

В абстрактной модели JVM каждый вызов имеет собственный stack frame с локальными переменными и стеком операндов. long занимает две позиции локальных переменных. После возврата кадры снимаются в обратном порядке. JIT может встроить методы и изменить фактическое размещение данных, поэтому по исходнику нельзя точно посчитать физический размер native-стека.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее