Bird
Raised Fist0
Javaprogramming~20 mins

Stack memory in Java - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Stack Memory Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this Java code involving stack memory?

Consider the following Java method call sequence. What will be printed to the console?

Java
public class StackTest {
    public static void main(String[] args) {
        methodA();
    }

    static void methodA() {
        int x = 5;
        methodB(x);
    }

    static void methodB(int y) {
        y += 10;
        System.out.println(y);
    }
}
A15
B10
C5
DCompilation error
Attempts:
2 left
💡 Hint

Remember that methodB receives a copy of the value passed from methodA.

❓ Predict Output
intermediate
2:00remaining
What happens to local variables when a method finishes?

What will be the output of this Java program?

Java
public class StackMemoryDemo {
    public static void main(String[] args) {
        int a = 3;
        int b = multiplyByTwo(a);
        System.out.println(b);
    }

    static int multiplyByTwo(int num) {
        int result = num * 2;
        return result;
    }
}
A6
B3
C0
DRuntime error
Attempts:
2 left
💡 Hint

Think about what the method returns and what is printed.

❓ Predict Output
advanced
2:00remaining
What is the output of this recursive method affecting stack memory?

Analyze the following Java code and determine what it prints.

Java
public class RecursionStack {
    public static void main(String[] args) {
        printNumbers(3);
    }

    static void printNumbers(int n) {
        if (n == 0) return;
        System.out.print(n + " ");
        printNumbers(n - 1);
    }
}
A1 2 3
B3 2 1
C3 2 1 0
D0 1 2 3
Attempts:
2 left
💡 Hint

Look at the order of the print statement and the recursive call.

❓ Predict Output
advanced
2:00remaining
What error occurs when stack memory overflows in Java?

What will happen when running this Java program?

Java
public class StackOverflowDemo {
    public static void main(String[] args) {
        recurse();
    }

    static void recurse() {
        recurse();
    }
}
ANo output, program runs forever
BNullPointerException
COutOfMemoryError
DStackOverflowError
Attempts:
2 left
💡 Hint

Think about what happens when a method calls itself endlessly without stopping.

🧠 Conceptual
expert
2:00remaining
How does Java manage stack memory for method calls?

Which statement best describes how Java uses stack memory during method execution?

AStack memory is shared between all threads and stores global variables only.
BJava stores all objects created in methods on the stack memory permanently.
CEach method call creates a new stack frame storing local variables and parameters; frames are removed when methods return.
DJava uses stack memory only for static variables and constants.
Attempts:
2 left
💡 Hint

Think about what happens when a method is called and when it finishes.

Practice

(1/5)
1. What does stack memory primarily store in Java?
easy
A. Method calls and local variables
B. Objects and class variables
C. Static variables and constants
D. Files and network connections

Solution

  1. Step 1: Understand stack memory role

    Stack memory stores data related to method execution like local variables and method calls.
  2. Step 2: Differentiate from heap memory

    Heap stores objects, while stack stores method calls and local variables.
  3. Final Answer:

    Method calls and local variables -> Option A
  4. Quick Check:

    Stack memory = method calls + local variables [OK]
Hint: Stack = method calls + local variables [OK]
Common Mistakes:
  • Confusing stack with heap memory
  • Thinking objects are stored in stack
  • Mixing static variables with stack data
2. Which of the following is the correct way to declare a local variable inside a method in Java?
easy
A. static int x = 10;
B. local int x = 10;
C. var int x = 10;
D. int x = 10;

Solution

  1. Step 1: Recall local variable syntax

    Local variables inside methods are declared simply with type and name, e.g., int x = 10;
  2. Step 2: Identify invalid keywords

    Keywords like 'local' or 'var int' are invalid in Java, and 'static' is not allowed for local variables.
  3. Final Answer:

    int x = 10; -> Option D
  4. Quick Check:

    Local variable syntax = type + name + value [OK]
Hint: Local vars: type name = value; no extra keywords [OK]
Common Mistakes:
  • Using 'local' keyword which doesn't exist
  • Trying to use 'static' inside methods
  • Confusing 'var' usage in older Java versions
3. What will be the output of this Java code?
public class Test {
  public static void main(String[] args) {
    int a = 5;
    int b = 10;
    int c = add(a, b);
    System.out.println(c);
  }
  public static int add(int x, int y) {
    return x + y;
  }
}
medium
A. 15
B. 510
C. Compilation error
D. Runtime error

Solution

  1. Step 1: Trace method calls and parameters

    Main calls add(5, 10), passing values 5 and 10 as local variables on the stack.
  2. Step 2: Calculate return value

    Add method returns 5 + 10 = 15, which is stored in c and printed.
  3. Final Answer:

    15 -> Option A
  4. Quick Check:

    5 + 10 = 15 [OK]
Hint: Add method returns sum; print result [OK]
Common Mistakes:
  • Concatenating numbers as strings
  • Confusing method parameters with global variables
  • Expecting runtime or compile errors
4. Identify the error in this Java code related to stack memory usage:
public class Demo {
  public static void main(String[] args) {
    int result = factorial(4);
    System.out.println(result);
  }
  public static int factorial(int n) {
    if (n == 0) return 1;
    else return n * factorial(n - 1);
  }
}
medium
A. Stack overflow due to too many local variables
B. Missing base case causing infinite recursion
C. No error, code runs correctly
D. Incorrect method return type

Solution

  1. Step 1: Check recursion base case

    The factorial method has a base case: if n == 0 return 1, stopping recursion.
  2. Step 2: Confirm recursion correctness

    Each recursive call reduces n by 1, so recursion ends properly without stack overflow.
  3. Final Answer:

    No error, code runs correctly -> Option C
  4. Quick Check:

    Base case present, recursion safe [OK]
Hint: Check for base case to avoid stack overflow [OK]
Common Mistakes:
  • Assuming missing base case when it exists
  • Confusing local variables with stack overflow cause
  • Thinking return type is wrong
5. Consider this recursive method that calculates the sum of numbers from n down to 1:
public static int sum(int n) {
  if (n <= 0) return 0;
  else return n + sum(n - 1);
}

What will happen if you call sum(1000000) in Java, and why?
hard
A. It will return the correct sum without issues
B. It will cause a stack overflow error due to deep recursion
C. It will run infinitely without stopping
D. It will cause a compile-time error

Solution

  1. Step 1: Analyze recursion depth

    Calling sum(1000000) causes 1,000,000 recursive calls, each adding a stack frame.
  2. Step 2: Understand stack memory limits

    Java's stack size is limited; deep recursion like this exceeds it, causing stack overflow error.
  3. Final Answer:

    It will cause a stack overflow error due to deep recursion -> Option B
  4. Quick Check:

    Deep recursion > stack size = stack overflow [OK]
Hint: Very deep recursion causes stack overflow error [OK]
Common Mistakes:
  • Assuming recursion always works regardless of depth
  • Thinking it runs infinitely without base case
  • Confusing runtime errors with compile errors
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard