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

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

研修コース検索

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

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

文法、オブジェクト指向、組み込みライブラリ、実行環境の知識に標準添付ライブラリ知識やアプリケーション設計に必要となるクラスやオブジェクトに関する知識などRubyによるプログラム設計技術を問います。
この模擬問題集は、CTCテクノロジーのオリジナルです。

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

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

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

[コード]
 class Foo
   def bar(obj=nil)
    __(1)__
   end
   private
   def foo
     puts "foo"
   end
 end
 Foo.new.bar(Foo.new)
 
[実行結果] foo
1. foo
2. Foo.foo
3. self.foo
4. obj.foo
問1の解答と解説

解答:1

解説
private以降で定義されたメソッドはそのクラス、またはサブクラス内でのみ使用することができます。
そのメソッドを使用する時にはレシーバを指定することができません。

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

[コード]
 class Foo
   def foo
    __(1)__.bar
  end
  def bar
    puts "bar"
   end
 end
 Foo.new.foo

[実行結果] bar
1. Foo
2. it
3. self
4. this
問2の解答と解説

解答:3

解説
クラス内で定義したメソッドは、そのクラスのインスタンスから呼び出すことができます。
インスタンスメソッド内で「self」というキーワードを使用すれば、メソッドを呼び出したオブジェクト自身を参照することができます。
「it」、「this」といったキーワードはありません。

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

[コード]
 class Hello
   def greet
     "Hello "
   end
 end
 class World < Hello
   def greet
     __(1)__ + "World"
   end
 end
 puts World.new.greet

[実行結果] Hello World
1. self
2. super
3. greet
4. override
問3の解答と解説

解答:2

解説
親クラスの同名のメソッドを子クラスから呼び出す場合は「super」というキーワードを使用します。

問4.以下のコードを実行した結果を選択してください。

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

解答:4

解説
以下のように変数に値を代入することができます。
a, b = 1, 2
p a #=> 1
p b #=> 2
また、配列の頭に「*」を付けると要素を展開することができます。
代入式の左辺の変数の先頭に「*」を指定すると複数の要素を配列に集約して受け取ることができます。

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

[コード]
 module M
   CONST = "HELLO"
 end
 puts __(1)__

[実行結果] HELLO
1. ::M::CONST
2. CONST
3. M
4. M.CONST
問5の解答と解説

解答:1

解説
定数にアクセスする場合「::」という記号を使用します。
モジュールによって定数の名前空間が分かれておりますので、「モジュール::定数」の形式でアクセスします。
また、モジュールやクラスなどの定義の一番外側の領域をトップレベルと呼びます。
トップレベルより定数にアクセスする場合は「::モジュール::定数」という形式でアクセスすることができます。

問6.以下のコードを実行した結果を選択してください。

[コード]
 class Error1 < StandardError; end
 class Error2 < Error1; end
 begin
  raise Error2
 rescue Error1 => ex
  puts ex.class
 end
1. Error1
2. Error2
3. StandardError
4. 何も出力されない
問6の解答と解説

解答:2

解説
rescue節で捕捉できる例外は、指定した例外クラスと、そのクラスのサブクラスです。
この場合、捕捉する例外としてError1を指定していますが、Error1のサブクラスとして定義されたError2の例外がraiseメソッドで発生されているため、Error2の例外を捕捉することができます。

問7.例外処理の構文の説明として正しいものを選択してください。

1. 例外が発生する可能性のある処理を「try ~ end」で囲み 例外が発生した場合の処理をcatch節で指定する
2. 例外が発生する可能性のある処理を「catch ~ end」で囲み 例外が発生した場合の処理をthrow節で指定する
3. 例外が発生する可能性のある処理を「begin ~ end」で囲み 例外が発生した場合の処理をrescue節で指定する
4. 例外が発生する可能性のある処理を「do ~ end」で囲み 例外が発生した場合の処理をcatch節で指定する
問7の解答

解答:3

問8.rubyに標準で存在する定数ではないものを選択してください。

1. ENV
2. ARGV
3. ARGF
4. NULL
問8の解答と解説

解答:4

解説
ENVは環境変数を表すオブジェクトです。
ARGVはコマンドライン引数を表すオブジェクトです。
ARGFはコマンドライン引数に指定されたファイルを表すオブジェクトです。

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

[コード]
 class Foo
   def foo
    puts "foo"
   end
 end
 __(1)__

[実行結果] foo
1. Foo.new.foo
2. Foo.foo
3. foo
4. self.foo
問9の解答と解説

解答:1

解説
クラス内で定義したメソッドはインスタンスメソッドになります。
インスタンスメソッドは「オブジェクト.メソッド」の形式で呼び出すことができます。
オブジェクトは「クラス.new」で生成することができますので、連続して指定すると「クラス.new.メソッド」という指定になります。

問10.以下の実行結果にならないようにするために__(1)__に当てはまるものを選択してください。

[コード]
 class Foo
   def bar(obj=nil)
    __(1)__
  end
  protected
  def foo
    puts "foo"
  end
 end
 Foo.new.bar(Foo.new)

[実行結果] foo
1. foo
2. Foo.foo
3. self.foo
4. obj.foo
問10の解答と解説

解答:2

解説
protected以降で定義されたメソッドは、そのクラスとサブクラスのインスタンスから呼び出すことができます。
しかし、クラスをレシーバとして呼び出すことはできませんので、「Foo.foo」ではエラーになります。

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

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

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