Ruby認定試験対策問題のトップページ

総合問題 No.1

Ruby認定試験 の対策として、NaCl の有志で作成した模擬試験問題です。

ここでは総合的な問題を出題しています。

それでは問題です。

問題1

以下のハッシュhに対するメソッドの実行結果がtrueとなるものを全て選びな さい。(3つ回答)

h = { "Ruby" => "Matz", "Perl" => "Larry", "Python" => "Guido" }

回答

  1. h.member?("Matz")
  2. h.member?("Python")
  3. h.include?("Guido")
  4. h.include?("Ruby")
  5. h.has_value?("Larry")
  6. h.exists?("Perl")

問題2

次のプログラムを実行した結果、出力として正しいものを全て選びなさい。(1 つ回答)

title = 'Programming Ruby'
price = 3_990
puts '"#{title}" is #{price} yen.'

回答

  1. "#{title}" is 3_990 yen.
  2. "#{title}" is 3990 yen.
  3. Programming Ruby is yen.
  4. Programming Ruby is #{price} yen.
  5. "#{title}" is #{price} yen.
  6. Syntaxエラーが発生する

問題3

次のプログラムを実行した結果、出力として正しいものを全て選びなさい。 (1つ回答)

for i, j in [[1, 2], [3, 4], [5, 6]]
  p [i, j]
end

回答

  1. .

    [[1, 2], nil]
    [[3, 4], nil]
    [[5, 6], nil]
  2. .

    [nil, [1, 2]]
    [nil, [3, 4]]
    [nil, [5, 6]]
  3. .

    [1, 2]
    [3, 4]
    [5, 6]
  4. SyntaxErrorが発生する

問題4

String#gsubの結果が"abCDE"になるものを全て選びなさい。(1つ回答)

回答

  1. "abcde".gsub(/c|d|e/, "CDE")
  2. "abcde".gsub(/[c-e]+/) { |s| s.to_upper }
  3. "abcde".gsub(/[^ab]/) { |s| s.upcase }
  4. "abcde".gsub(/ab(cde)/) { $1.upcase }
  5. "abcde".gsub(/ab(cde)/) { "CDE" }
  6. "abcde".gsub(/\W+$/, "CDE")

問題5

以下の配列aに対して、文字数の少ない順番にソートしたい。配列aに対する操作 として正しいものを全て選びなさい。(2つ回答)

a = ["Magazine", "Sunday", "Jump"]

回答

  1. a.sort
  2. a.sort { |s| s }
  3. a.sort { |l, r| l <=> r }
  4. a.sort { |l, r| l.length <=> r.length }
  5. a.sort_by { |s| s }
  6. a.sort_by { |s| s.length }

問題6

プログラムを完成させ、以下の出力を得たい。

1
2
3
4
5

以下のプログラムの[ ア ]に入るものとして正しいものを全て選びなさい。 (2つ回答)

[   ア   ] do |i|
  puts i
end

回答

  1. 5.repeat
  2. (1...5).each
  3. 5.times
  4. (1..5).each
  5. 1.upto(5)
  6. 1.step(1, 5)

問題7

カレントディレクトリに以下の5つのファイルが存在する。

カレントディレクトリに対する「Dir.glob("[1-5].*")」の戻り値として正し いものを全て選びなさい。(1つ回答)

回答

  1. foo1.rb
  2. 2
  3. baz.3
  4. qux-4
  5. 5.quux
  6. 上記以外

問題8

Stringクラスに存在しないインスタンスメソッドを全て選びなさい。(1つ回答)

回答

  1. strip
  2. chop
  3. delete
  4. trim
  5. chomp
  6. squeeze

問題9

以下のように文字列sが定義されている。

s = "I slit the sheet, the sheet I slit, and on the slitted sheet I sit."

文字列sの内、「sheet」という文字列が出現する回数を数えるプログラムとし て、正しいものを全て選びなさい。(1つ回答)

回答

  1. /sheet/.match(s).length
  2. s.scan(/sheet/).length
  3. s.split(/sheet/).length
  4. s.count("sheet")
  5. s.split(/\s/).select { |word| word == "sheet" }.length
  6. s.slice("sheet").length

問題10

以下のプログラムを実行した結果、ローカル変数spanに代入される値として正 しいものを全て選びなさい。(1つ回答)

t1 = Time.now
t2 = Time.mktime(2007, 11, 19)
span = t1 - t2

回答

  1. 時間を表す浮動小数点数
  2. 分を表す浮動小数点数
  3. 秒を表す浮動小数点数
  4. ミリ秒を表す浮動小数点数
  5. Timeクラスのインスタンス
  6. TimeSpanクラスのインスタンス

問題11

実行した結果、エラーになるものを全て選びなさい。(1つ回答)

回答

  1. 2 + 8
  2. 3 * 10
  3. 4 ** 10
  4. "abcde" * 3
  5. "abcde" + 1
  6. "abcde" + "fghij"

問題12

次のプログラムを実行した結果、"Hello, Ruby!"が出力されない条 件である[ ア ]を全て選びなさい。(2つ回答)

if [   ア   ]
  puts("Hello, Ruby!")
end

回答

  1. true
  2. false
  3. 0
  4. 100
  5. ""
  6. nil

問題13

組み込みクラスArrayで、配列の内容から重複した要素を削除するインスタン スメソッドを全て選びなさい。(1つ回答)

回答

  1. grep
  2. compact
  3. reject
  4. uniq
  5. select
  6. flatten

問題14

配列aの内容を表示したい。ただし、"#" で始まる文字列は表示したくない。 以下のプログラムの[ ア ]に入るものとして正しいものを全て選びなさい。 (1つ回答)

a = {"foo", "bar", "# baz", "qux"}
a.each do |line|
  if /^#/.match(line)
    [   ア   ]
  end
  puts(line)
end

回答

  1. retry
  2. redo
  3. return
  4. raise
  5. next
  6. break

問題15

次のプログラムを実行した結果、出力として正しいものを全て選びなさい。 (1つ回答)

a = ["foo", "bar", "baz"]
b = [1, 2, 3]
c = ["first", "second", "third"]
p a.zip(b, c)

回答

  1. [["first", 1, "foo"], ["second", 2, "bar"], ["third", 3, "baz"]]
  2. [["first", "foo", 1], ["second", "bar", 2], ["third", "baz", 3]]
  3. [[1, "foo", "first"], [2, "bar", "second"], [3, "baz", "third"]]
  4. [[1, "first", "foo"], [2, "second", "bar"], [3, "third", "baz"]]
  5. [["foo", 1, "first"], ["bar", 2, "second"], ["baz", 3, "third"]]
  6. [["foo", "first", 1], ["bar", "second", 2], ["baz", "third", 3]]

問題16

プログラムを完成させて、Fileクラスのインスタンスfに対して、必ずcloseメ ソッドが実行されるようにしたい。以下のプログラムの[ ア ]に入るものとし て正しいものを全て選びなさい。 (1つ回答)

f = File.open(path)
begin
  puts f.read
[   ア   ]
  f.close
end

回答

  1. finally
  2. rescue
  3. except
  4. else
  5. catch
  6. ensure

問題17

実行した結果、エラーになるものを全て選びなさい。(2つ回答)

回答

  1. 回答1

    s = "Hello, Ruby!"
    s["Ruby"] = "World"
    puts s
  2. 回答2

    class MyProgramError < StandardError; end
  3. 回答3

    i = 3
    i++
    puts i
  4. 回答4

    puts "Hello, Ruby!", "Hello, World!"
  5. 回答5

    flag = TrueClass.new
    if flag
      puts "Hello, Ruby!"
    end
  6. 回答6

    if s = gets then puts s end

問題18

Fileクラスのクラスメソッドではないのものを全て選びなさい。(2つ回答)

回答

  1. dirname
  2. rename
  3. flock
  4. path
  5. unlink
  6. size

問題19

Stringクラスのeachメソッドと同様の処理を行うメソッドを全て選びなさい。(1つ回答)

回答

  1. succ
  2. split
  3. each_line
  4. next
  5. squeeze
  6. each_byte

問題20

"edcba-edcba".count("a-e")を評価した結果を全て選びなさい。(1つ回答)

回答

  1. 0
  2. 1
  3. 5
  4. 10
  5. 11

リンク