Bird
Raised Fist0
Rubyprogramming~20 mins

How Ruby interprets code at runtime - Practice Exercises

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Ruby Runtime Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Ruby method call and variable scope
What is the output of this Ruby code when run?
Ruby
def greet
  name = "Alice"
  puts "Hello, #{name}!"
end

greet
puts name
AHello, Alice!\nNameError: undefined local variable or method `name' for main:Object
BHello, Alice!\nAlice
CNameError: undefined local variable or method `name' for main:Object\nHello, Alice!
DHello, Alice!\nnil
Attempts:
2 left
💡 Hint
Think about where variables defined inside methods are accessible.
❓ Predict Output
intermediate
2:00remaining
Ruby block variable behavior
What will this Ruby code output?
Ruby
x = 10
[1, 2, 3].each do |x|
  puts x
end
puts x
A1\n2\n3\n10
B10\n10\n10\n10
C1\n2\n3\n3
D1\n2\n3\nNameError
Attempts:
2 left
💡 Hint
Consider if the block variable x affects the outer x.
🔧 Debug
advanced
2:00remaining
Identify the runtime error in Ruby code
What error does this Ruby code raise when run?
Ruby
def divide(a, b)
  a / b
end

puts divide(10, 0)
ANoMethodError: undefined method `/`
BArgumentError: wrong number of arguments
CTypeError: String can't be coerced into Integer
DZeroDivisionError: divided by 0
Attempts:
2 left
💡 Hint
What happens when you divide by zero in Ruby?
🧠 Conceptual
advanced
2:00remaining
Ruby constant lookup at runtime
Given this Ruby code, what will be printed when run?
Ruby
module A
  X = 100
  class B
    X = 200
    def self.show
      puts X
    end
  end
end

A::B.show
ANameError: uninitialized constant X
B200
C100
Dnil
Attempts:
2 left
💡 Hint
Constants inside classes override outer module constants with the same name.
❓ Predict Output
expert
2:00remaining
Ruby dynamic method definition and runtime behavior
What is the output of this Ruby code?
Ruby
class C
  define_method(:hello) do |name|
    "Hello, #{name}!"
  end
end

obj = C.new
puts obj.hello("Bob")
AArgumentError: wrong number of arguments (given 1, expected 0)
BNoMethodError: undefined method `hello' for #<C:0x0000>
CHello, Bob!
DSyntaxError: unexpected `do'
Attempts:
2 left
💡 Hint
Look at how define_method creates methods at runtime.

Practice

(1/5)
1. What does it mean that Ruby interprets code at runtime?
easy
A. Ruby only checks code syntax but does not run it.
B. Ruby converts all code to machine language before running.
C. Ruby runs code only after saving it to a file.
D. Ruby reads and runs code line by line as the program runs.

Solution

  1. Step 1: Understand interpretation

    Interpreting means reading and executing code step by step during program execution.
  2. Step 2: Compare options

    The option "Ruby reads and runs code line by line as the program runs." describes this process correctly; others describe compiling or partial actions.
  3. Final Answer:

    Ruby reads and runs code line by line as the program runs. -> Option D
  4. Quick Check:

    Interpretation = line-by-line execution [OK]
Hint: Interpret means run code step-by-step as you go [OK]
Common Mistakes:
  • Confusing interpretation with compilation
  • Thinking Ruby only checks syntax
  • Believing Ruby runs code after saving only
2. Which of the following is the correct way to print "Hello" in Ruby?
easy
A. echo "Hello"
B. console.log("Hello")
C. print("Hello")
D. printf("Hello %d")

Solution

  1. Step 1: Identify Ruby print syntax

    Ruby uses the method print or puts to output text; print("Hello") is valid.
  2. Step 2: Check other options

    echo is PHP, console.log is JavaScript, printf("Hello %d") is C-style but errors due to missing argument for %d.
  3. Final Answer:

    print("Hello") -> Option C
  4. Quick Check:

    Ruby print method = print("Hello") [OK]
Hint: Use print or puts to show text in Ruby [OK]
Common Mistakes:
  • Using JavaScript or PHP print commands
  • Missing parentheses in print
  • Confusing printf with print
3. What will be the output of this Ruby code?
count = 0
3.times do
  count += 1
end
print count
medium
A. 3
B. 0
C. 1
D. Error

Solution

  1. Step 1: Understand the times loop

    The times method runs the block 3 times, increasing count by 1 each time.
  2. Step 2: Calculate final count

    Starting from 0, after 3 increments, count becomes 3.
  3. Final Answer:

    3 -> Option A
  4. Quick Check:

    0 + 1 + 1 + 1 = 3 [OK]
Hint: times runs block that many times, increment count each time [OK]
Common Mistakes:
  • Thinking count stays 0
  • Confusing times with for loop syntax
  • Expecting error due to block
4. Find the error in this Ruby code:
def greet
  puts "Hello"
end

greet(1)
medium
A. ArgumentError: wrong number of arguments
B. No error, prints Hello
C. SyntaxError due to missing parentheses
D. NameError: greet not defined

Solution

  1. Step 1: Check method definition

    greet is defined without parameters, so it expects zero arguments.
  2. Step 2: Check method call

    Calling greet(1) passes one argument, causing ArgumentError.
  3. Final Answer:

    ArgumentError: wrong number of arguments -> Option A
  4. Quick Check:

    Method params mismatch = ArgumentError [OK]
Hint: Method defined with no params, calling with one causes error [OK]
Common Mistakes:
  • Thinking Ruby ignores extra arguments
  • Confusing syntax error with argument error
  • Assuming greet is undefined
5. Given this Ruby code:
def add(x, y)
  x + y
end

result = add(2, 3) + add(4, 5)
print result

How does Ruby interpret and calculate the final output?
hard
A. It prints the string 'add(2, 3)add(4, 5)'
B. It adds 2 and 3, then adds 4 and 5, sums both results to print 14
C. It throws an error because add is called twice
D. It adds 2 and 3, ignores second add call, prints 5

Solution

  1. Step 1: Evaluate first add call

    add(2, 3) returns 5 by adding 2 + 3.
  2. Step 2: Evaluate second add call and sum

    add(4, 5) returns 9; sum 5 + 9 = 14.
  3. Step 3: Print the result

    print outputs 14 as the final result.
  4. Final Answer:

    14 -> Option B
  5. Quick Check:

    5 + 9 = 14 [OK]
Hint: Each method call runs fully, then sums results [OK]
Common Mistakes:
  • Thinking only first add runs
  • Expecting string concatenation instead of addition
  • Assuming error on multiple calls
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