IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

Ruby技術者認定試験【Gold】模擬問題(21~30) - Rubyの研修・教育ならCTC教育サービス

Ruby技術者認定試験【Gold】模擬問題

模擬問題 21~30 (1~10 / 11~20 / 31~40 / 41~50 / 51~60

問題は四択で10問ずつ合計60問あります。各問題には解答がついていますが、はじめは閉じた状態でトライしてみてください。
10問毎に「終了/採点」ボタンをクリックすると採点ができます。次の10問へお進みください。繰り返しトライすることも可能です。

問21.以下のコードの実行結果から__(1)__に当てはまるものを選択してください。

[コード]
 class Person
  __(1)__ :name
 end

person = Person.new person.name = "Suzuki" puts "Hello, " + person.name
[実行結果] Hello, Suzuki
1. attr_reader
2. attr_writer
3. attr_accessor
4. module_function
問21の解答と解説

解答:3

解説
選択肢中のメソッドはそれぞれ以下のような機能を提供します。

attr_reader :name
nameで指定した名前のインスタンス変数「@name」に設定された値を返すメソッドを定義します。「オブジェクト.name」という形式で使用することができます。

attr_writer :name
nameで指定した名前のインスタンス変数「@name」に値を設定するメソッドを定義します。「オブジェクト.name=(引数)」という形式で使用することができます。

attr_accessor :name
上記2つのメソッドの両方を呼び出すメソッドです。インスタンス変数の参照と変更ができます。

module_functionはモジュール関数を指定するメソッドです。

問22.以下のコードの実行結果から__(1)__に当てはまるものを選択してください。

[コード]
 /(\d+)/ =~ "hello24world"
 puts __(1)__

[実行結果] 24
1. $match
2. $0
3. $1
4. $reference
問22の解答と解説

解答:3

解説
正規表現内の括弧を記述すれば、その位置にマッチした文字列を後から参照することができます。

括弧は正規表現内で複数使用することができますが、一致した文字列は括弧が出現した順番に、特殊なローカル変数$1, $2, $3...の順番で代入されます。

問題では、括弧を1つ使用しているだけですので、正規表現に一致した文字列を取得する場合、「$1」を使用します。

問23.以下のコマンドの実行結果から__(1)__に当てはまるものを選択してください。

[コマンドライン]
 $ ruby __(1)__ 'p 1024 * 5'

[実行結果] 5120
1. -r
2. -v
3. -e
4. -s
問23の解答と解説

解答:3

解説
-eオプションは引数で指定した文字列を評価して、結果を出力するオプションです。

問24.以下のコードの実行結果から__(1)__に当てはまるものを選択してください。

[コード]
 class Person
  def __(1)__(name)
   @name = name
  end
  def info
   puts "My name is #{@name}."
  end
 end
 Person.new("Jim").info

[実行結果] My name is Jim.
1. init
2. initialize
3. new
4. Person
問24の解答と解説

解答:2

解説
initializeメソッドは、オブジェクトの初期化処理を定義するメソッドです。
オブジェクトが生成されるときに呼び出されます。

問25.以下のコードの実行結果として正しいものを選択してください。

[コード]
 class Class1
  def set_value(value)
   @value = value
  end

def get_value return @value end end
obj1 = Class1.new obj1.set_value("value1") puts obj1.get_value obj2 = Class1.new puts obj2.get_value
1. value1nil
2. value1value1
3. nilnil
4. 実行時にエラーになる
問25の解答と解説

解答:1

解説
@で始まる名前の変数はインスタンス変数です。
インスタンス変数はインスタンスメソッド内で使用します。
この変数はオブジェクト毎に異なるデータを保持することができます。

未初期化時に参照してもエラーにならず、nilが返されます。

問26.以下のコードの実行結果として正しいものを選択してください。

[コード]
 ary = [:job1, :job2, :job3]
 ary.push(:job4)
 ary.unshift(:job5)
 ary.pop
 ary.shift
 p ary
1. [:job1, :job2, :job3]
2. [:job4, :job2, :job5]
3. [:job3, :job2, :job1]
4. [:job4, :job5]
問26の解答と解説

解答:1

解説
Array#push, Array#pop, Array#unshift, Array#shiftはすべて配列の要素の追加と取り出しを行うメソッドです。

		ary = [:job1, :job2, :job3]
ary.push(:job4)
p ary #=> [:job1, :job2, :job3, :job4]
ary.unshift(:job5)
p ary #=> [:job5, :job1, :job2, :job3, :job4]
ary.pop
p ary #=> [:job5, :job1, :job2, :job3]
ary.shift
p ary #=> [:job1, :job2, :job3]

問27.以下のコードの実行結果として正しいものを選択してください。

[コード]
 ary = Array.new(3, "a")
 ary[0].next!
 p ary
1. ["a", "a", "a"]
2. ["b", "a", "a"]
3. 実行時にエラーになる
4. ["b", "b", "b"]
問27の解答と解説

解答:4

解説
Array.newは配列オブジェクトを生成します。
newメソッドには2つの引数を指定することができ、1つ目には配列の要素数、2つ目には要素の初期値を指定します。

問題文の「Array.new(3, "a")」では「["a", "a", "a"]」という配列が生成されます。
ここでの各要素は同じオブジェクトを参照することにご注意ください。

問28.以下の結果を出力するコードとして__(1)__に当てはまるものを選択してください。

[コード]
 class MyNum
  attr_reader :num
  def initialize(num)
   @num = num
  end
  __(1)__
 end

num1 = MyNum.new(30) num2 = MyNum.new(10) num3 = MyNum.new(20) p [num1, num2, num3].sort.map{|n| n.num }
[実行結果] [10, 20, 30]
1. include Comparable
2. include Enumerable
3. def <=>(other)
@num <=>other.num
end
4. def sort(other)
@num <=>other.num
end
問28の解答と解説

解答:3

解説
問題文のコードでは配列に対してsortメソッドを呼び出しています。
sortメソッドは、配列の要素に対して<=>演算子を使用して比較します。

数値や文字列などの既存のオブジェクトに関しては、<=>演算子が定義されているので、sortメソッドを使用することができますが、作成したクラスのオブジェクトには、<=>演算子を定義する必要があります。

問29.以下の結果を出力するコードとして__(1)__に当てはまるものを選択してください。

[コード]
 var1 = __(1)__
 var2 = __(1)__

puts var1.equal?(var2)
[実行結果] true
1. "hello"
2. /hello/
3. :hello
4. ["hello"]
問29の解答と解説

解答:3

解説
Object#equal?はオブジェクト同士の同一性判定用のメソッドです。引数で指定したオブジェクトがレシーバ自身であればtrueを返します。
:helloはシンボルオブジェクトを表しており、文字列が同じであれば同じオブジェクトを参照します。

問30.以下のコードを実行したときの結果として正しいものを選択してください。

[コード]
 a, b = [1, 2, 3]
 p a
 p b
1. 1
[2, 3]
2. [1, 2]
3
3. 1
2
4. [1, 2, 3]
nil
問30の解答と解説

解答:3

解説
Rubyは多重代入をサポートしておりますので、一度に複数の変数に代入することができます。問題文のコードは下記のコードと同様です。

a = 1
b = 2

左辺の変数の数より、右辺の値の数の方が多い場合は残りの値を破棄します。

※解答完了後は「終了/採点」をクリックし、結果が表示されるのをお待ちください。

※解答をクリアしてもう一度トライ解答される場合は「解答をクリア」をクリックしてください。

模擬問題 21~30 (1~10 / 11~20 / 31~40 / 41~50 / 51~60