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問くらい出た気がしますがもう忘れてしまいました。