If I wanted to show them how eXtreme I was, I would start by writing
some tests:

-----
# fizzbuzz_test.rb

require 'spec'
require 'fizzbuzz'

describe :fizzbuzz do
 # This is just so we can read the results of all those 'puts'
 before do
   @output = StringIO.new()
   $stdout = @output
   fizzbuzz()
   @output.rewind
   @lines = @output.readlines.map {|str| str.chop}
 end

 after do
   $stdout = STDOUT
 end

 it "should print 1 as the first line" do
   @lines[0].to_i.should == 1
 end

end
-----

Then we make it pass

-----
# fizzbuzz.rb

def fizzbuzz()
 puts 1
end

if __FILE__ == $0
 fizzbuzz()
end
-----

Add another test

-----
# fizzbuzz_test.rb

it "should have 100 lines" do
 @lines.size.should == 100
end
-----

Make it pass

-----
# fizzbuzz.rb

def fizzbuzz()
 (1..100).each do |num|
   puts num
 end
end
-----

Keep the rhythm going

-----
# fizzbuzz_test.rb

it "should print 'Fizz' as the third line" do
 @lines[2].should == 'Fizz'
end
-----
# fizzbuzz.rb

def fizzbuzz()
 (1..100).each do |num|
   if num % 3 == 0
     puts 'Fizz'
   else
     puts num
   end
 end
end
-----
# fizzbuzz_test.rb

it "should print 'Buzz' as the fifth line" do
 @lines[4].should == 'Buzz'
end
-----
# fizzbuzz.rb

def fizzbuzz()
   if num % 3 == 0
     puts 'Fizz'
   elsif num % 5 == 0
     puts 'Buzz'
   else
     puts num
   end
 end
end
-----
# fizzbuzz_test.rb

it "should print 'FizzBuzz' as the fifteenth line" do
 @lines[14].should == 'FizzBuzz'
end
-----
# fizzbuzz.rb

def fizzbuzz()
 (1..100).each do |num|
   if num % 15 == 0
     puts 'FizzBuzz'
   elsif num % 3 == 0
     puts 'Fizz'
   elsif num % 5 == 0
     puts 'Buzz'
   else
     puts num
   end
 end
end
-----

And one more for good measure:

-----
# fizzbuzz_test.rb

it "should print 'Buzz' as the last line" do
 @lines.last.should == 'Buzz'
end
-----

The final results are

-----
# fizzbuzz.rb

def fizzbuzz()
 (1..100).each do |num|
   if num % 15 == 0
     puts 'FizzBuzz'
   elsif num % 3 == 0
     puts 'Fizz'
   elsif num % 5 == 0
     puts 'Buzz'
   else
     puts num
   end
 end
end

if __FILE__ == $0
 fizzbuzz()
end
-----
# fizzbuzz_test.rb

require 'spec'
require 'fizzbuzz'

describe :fizzbuzz do
 # This is just so we can read the results of all those 'puts'
 before do
   @output = StringIO.new()
   $stdout = @output
   fizzbuzz()
   @output.rewind
   @lines = @output.readlines.map {|str| str.chomp}
 end

 after do
   $stdout = STDOUT
 end

 it "should print 1 as the first line" do
   @lines[0].to_i.should == 1
 end

 it "should print 100 lines" do
   @lines.size.should == 100
 end

 it "should print 'Fizz' as the third line" do
   @lines[2].should == 'Fizz'
 end

 it "should print 'Buzz' as the fifth line" do
   @lines[4].should == 'Buzz'
 end

 it "should print 'FizzBuzz' as the fifteenth line" do
   @lines[14].should == 'FizzBuzz'
 end

 it "should print 'Buzz' as the last line" do
   @lines.last.should == 'Buzz'
 end

end
-----

Now before pulling such a stunt, I might ask plainly if they were
looking for a trivial solution to a trivial problem, in which case I
would immediately write down the final answer, or if they wanted me to
suspend disbelief and imagine this is a part of a large and important
system rather than a one off game, in which case I might do the
previous.  After all, who wants to work for people that make you guess
what they want?

Jason Merrill