おじさんのべんきょうべや

一応エンジニアのおじさん(30代)の技術系中心のブログにします

Ruby Goldに出た問題とか

Rubyの資格のGoldに合格しました

よく言われる「資格なんか意味ねーよ、ポートフォリオ作れ」論は確かにその通りなのですがRuby初心者がRubyを学ぶにはとても役立ちました。試験のRubyのバージョンは2.1と古いのですが根本的な部分は特に変わってないので大丈夫です。

さて、この試験受けたことある人はご存知かと思いますが、合格or不合格が試験終了時にすぐ分かる&どの問題を落としたのかが明かされない、という問題流出を懸念?しての措置があります。

受験費用も高い(¥15,000+税)のでこんな試験、一発合格したいですよね。私も試験前は先人の皆様の体験記などを漁って「こんな問題が出たよ!」というのを熟読させていただきましたので、私も還元したいと思います。(「合格するためににこんな勉強しました〜」とかは別に特別なことなんもやってないので割愛します。)

覚えてる範囲でこんな問題でたよ

選択肢まではハッキリ覚えてないですが、覚えてるやつをいくつか載せときます。

rubyコマンドのrオプションの意味を選択してください

①引数で指定したディレクトリを$LOAD_PATH変数に追加する。
②引数で指定したファイルを読み込む。
③引数で指定したディレクトリを環境変数RUBYLIBに追加する。
④引数で指定したディレクトリはrequireやloadメソッドが呼ばれたときに検索される。

〜〜〜解説〜〜〜

公式の合格教本の基礎力確認問題にあった「l」オプションの説明の問題と選択肢は同じだった気がします。試験では「r」オプションが問われました。
ちなみにこの問題の正解はです(正解を見たければドラッグしてね)。

次のプログラムの実行結果は?
def foo
  puts "foo"
end

class C
  foo
  def foo
    puts "foobar"
  end
  def bar
    foo
  end
end

C.new.bar



foo


foo
foobar


foobar
foobar


例外発生

〜〜〜解説〜〜〜
一番ネストの浅いところで定義したメソッドはObjectクラスをオープンしてメソッドを追加してることになるので、色んなとこで使えるようになります。
ということさえ知っていれば解けると思います。
正解はです。

次のプログラムの実行結果は?
class A
  @@var = 0
  def hoge
    @@var
  end
end

class B < A
  @@var = 1
end

class C < A
  @@var = 2
end

p B.new.hoge

①0
②1
③2
④例外発生

〜〜〜解説〜〜〜

親クラスと子クラスのクラス変数の扱いに関する問題です。
正解はです。

結果が3になるものを選べ

ちょっと選択肢覚えてないので2択です。

a = 1,2,3

for var in a do
  result = var
end
p result

a = 1,2,3

a.each do |var|
  result = var
end
p result

〜〜〜解説〜〜〜
これは意外と盲点というか、あまりRexや参考書では見なかった問題でした。
が、どっかで「rubyでfor文が使われないのはこういう理由だから〜」というのを見た記憶がうっすらあったので何とか答えることができました。
正解はです。

次のプログラムを実行して結果が3になる選択肢を選べ
class Foo
  @var = 1
  def foo
    @var = 2
  end

  class << self
    @var = 3

    def foo
      @var = 4
    end
  end
end

class << Foo
  def var
    p @var
  end
end
Foo.var

p Foo.new.foo

class << Foo
  p @var
end

p Foo.foo


〜〜〜解説〜〜〜
試験中はちょっとあやふやに答えてしまいました。
クラスインスタンス変数とかちゃんと知ってないと答えるの難しいですよね。
確か実際にはこんなに綺麗に選択肢の順番が答え通りじゃなかった気がするけど。。。
答えはです。


あとはお世話になったブログ(以下)で紹介されていたような問題も結構ありましたね。
可変長引数を問う問題で、答えが1,2,3,4になる選択肢を選べとかいう問題もありましたね。

個人的にはinstance_evalとかclass_evalとかの問題が全く出なかったのが残念?な気がしましたが、たまたまかもしれません。
あとはprivateに定義したメソッドを、サブクラスからpublicに変えれるかみたいな問題が2問くらい出た気がしますがもう忘れてしまいました。

お世話になったブログ

media.growth-and.com

qiita.com


以上、Ruby Gold合格体験記でした。