Bird
Raised Fist0
Rubyprogramming~20 mins

Everything is an object mental model in Ruby - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Ruby Object Mastery
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 Ruby code?
Consider this Ruby code snippet. What will it print when run?
Ruby
puts 42.class
puts "hello".class
puts :symbol.class
A
Integer
String
Symbol
B
Fixnum
String
String
C
Integer
String
String
D
Fixnum
String
Symbol
Attempts:
2 left
💡 Hint
Remember in modern Ruby versions, Fixnum and Bignum are unified into Integer.
🧠 Conceptual
intermediate
1:30remaining
Which statement best describes Ruby's object model?
Choose the statement that correctly explains Ruby's 'everything is an object' model.
AAll values, including numbers, strings, and even classes themselves, are objects.
BOnly user-defined data types are objects; primitives like numbers are not.
COnly strings and arrays are objects; numbers are treated as primitive values.
DObjects exist only when explicitly created with 'new'; literals are not objects.
Attempts:
2 left
💡 Hint
Think about how you can call methods on numbers and strings in Ruby.
🔧 Debug
advanced
2:00remaining
Why does this Ruby code raise an error?
Look at this Ruby code. Why does it raise a NoMethodError?
Ruby
5.upcase
ABecause 'upcase' requires an argument which is missing here.
BBecause 'upcase' is a private method and cannot be called directly.
CBecause numbers cannot be objects in Ruby.
DBecause 5 is an Integer and Integer does not have an 'upcase' method.
Attempts:
2 left
💡 Hint
Check which methods are available for Integer objects.
❓ Predict Output
advanced
2:00remaining
What is the output of this Ruby code involving classes as objects?
What will this Ruby code print?
Ruby
puts Class.class
puts Integer.class
puts 10.class.class
A
Class
Object
Class
B
Class
Integer
Integer
C
Class
Class
Class
D
Class
Class
Integer
Attempts:
2 left
💡 Hint
Remember that classes themselves are instances of Class.
❓ Predict Output
expert
2:30remaining
What is the output of this Ruby code using singleton methods?
Examine this Ruby code and determine what it prints.
Ruby
obj = "42"
 def obj.description
   "The number is #{self}"
 end
puts obj.description
puts 42.respond_to?(:description)
A
NoMethodError
false
B
The number is 42
false
C
The number is 42
true
D
NoMethodError
true
Attempts:
2 left
💡 Hint
Think about whether the singleton method is defined on the string "42" or on the variable obj.

Practice

(1/5)
1. In Ruby, which of the following is not considered an object?
easy
A. Numbers like 5
B. Strings like "hello"
C. Booleans like true
D. Variables themselves

Solution

  1. Step 1: Understand Ruby's object model

    In Ruby, everything you work with directly, like numbers, strings, and booleans, are objects.
  2. Step 2: Differentiate variables from objects

    Variables are names or references pointing to objects, but they themselves are not objects.
  3. Final Answer:

    Variables themselves are not objects -> Option D
  4. Quick Check:

    Variables are references, not objects [OK]
Hint: Remember: variables point to objects, they aren't objects themselves [OK]
Common Mistakes:
  • Thinking variables are objects
  • Confusing object instances with variable names
  • Assuming booleans are not objects
2. Which of the following is the correct way to call the method upcase on a string object name in Ruby?
easy
A. name.upcase
B. upcase(name)
C. name->upcase()
D. upcase.name()

Solution

  1. Step 1: Recall Ruby method call syntax

    In Ruby, methods are called on objects using dot notation: object.method.
  2. Step 2: Apply to the string object

    For the string variable name, calling upcase is done as name.upcase.
  3. Final Answer:

    name.upcase -> Option A
  4. Quick Check:

    Method call syntax = object.method [OK]
Hint: Use dot (.) to call methods on objects in Ruby [OK]
Common Mistakes:
  • Using function-style calls like upcase(name)
  • Using arrow (->) notation from other languages
  • Placing method after dot incorrectly
3. What will be the output of the following Ruby code?
num = 10
puts num.class
medium
A. Integer
B. Fixnum
C. Numeric
D. Object

Solution

  1. Step 1: Understand the class method

    The class method returns the class of the object it is called on.
  2. Step 2: Identify the class of the number 10 in Ruby 3.12+

    In modern Ruby versions, integers are instances of the Integer class (Fixnum and Bignum were unified).
  3. Final Answer:

    Integer -> Option A
  4. Quick Check:

    10.class = Integer [OK]
Hint: Use .class to find an object's type in Ruby [OK]
Common Mistakes:
  • Choosing Fixnum (old Ruby versions)
  • Confusing Numeric with Integer
  • Thinking class returns Object always
4. The following Ruby code prints nothing. What is the problem?
text = "HELLO"
puts text.upcase!
medium
A. Missing parentheses for method call
B. Using upcase! on a string literal causes error
C. The method upcase! returns nil if no changes made
D. Strings are not objects, so methods can't be called

Solution

  1. Step 1: Understand upcase! behavior

    The upcase! method modifies the string in place and returns nil if no changes were made.
  2. Step 2: Analyze the code's output

    Since "HELLO" is uppercase, upcase! makes no changes and returns nil, so puts prints nothing.
  3. Step 3: Identify the error cause

    The return value nil is printed when no mutation occurs.
  4. Final Answer:

    upcase! returns nil if no changes made -> Option C
  5. Quick Check:

    Bang methods can return nil if no change [OK]
Hint: Bang (!) methods may return nil if no change happens [OK]
Common Mistakes:
  • Thinking bang methods always return a string
  • Assuming strings are not objects
  • Missing that upcase! modifies in place
5. Given the code below, what will be the output?
class NumberWrapper
  def initialize(value)
    @value = value
  end

  def to_s
    "Value is: #{@value.to_s}"
  end
end

num = NumberWrapper.new(42)
puts num.to_s
hard
A. 42
B. Value is: 42
C. Value is: @value
D. Error: undefined method to_s

Solution

  1. Step 1: Understand the class and method definitions

    The class NumberWrapper stores a value and defines a to_s method that returns a string including the value.
  2. Step 2: Analyze the to_s method call

    The method returns the string "Value is: " plus the string version of @value, which is 42.
  3. Step 3: Check the output of puts num.to_s

    It prints the string returned by to_s, which is "Value is: 42".
  4. Final Answer:

    Value is: 42 -> Option B
  5. Quick Check:

    Custom to_s returns formatted string [OK]
Hint: to_s returns string representation of any object [OK]
Common Mistakes:
  • Expecting just the number without text
  • Confusing instance variable with string literal
  • Thinking to_s is undefined
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