おぴよの気まぐれ日記

おぴよの気まぐれ日記

岡山やプログラミング、ファッションのこと、子育てや人生、生き方についての備忘録。

Rubyゴールド落ちちゃったから資格試験に出た問題を振り返ってみる

こんにちは@opiyoです。

去年Rubyシルバーを取得したので、せっかくならばゴールドまで取りたいと思って受験してきました。

シルバー取得した時に書いた記事はこちらです。 opiyotan.hatenablog.com

結果は100点中74点

合格ラインは………


75点

くそっー めちゃくちゃ悔しいぞ 最後に書き直したあいつのせいだ。 こんな感じだた。

def hoge(a,*b)
  puts "a:#{a}, b#{b}"
end

array = [1,2,3]
hoge(array)
hoge(*array)

# => a:[1, 2, 3], ab[]
# => a:1, b[2, 3]

今考えれば当たり前のことなのに、メソッドの引数「*」に何か魔法がかかっていると思ってしまった。

非プログラマーでありながら、一ヶ月間の勉強でここまで取れたことは素直に嬉しかったし74点取った事実は嘘じゃないので、このブログを通して頑張ったぞーってことを残しておこうと。

次いつ受けるか分からないのですが、受験した記録は私もめちゃくちゃ役に立ったので少しでも誰かのタメになればと思って頑張って思い出します。

Rubyゴールドとは

概要しゃ詳細、試験範囲などは公式のサイトにお任せ!

www.ruby.or.jp

勉強方法

公式問題集

Ruby技術者認定試験合格教本 Silver/Gold対応 Ruby公式資格教科書

Ruby技術者認定試験合格教本 Silver/Gold対応 Ruby公式資格教科書

  • 作者: 増井雄一郎,小川伸一郎,株式会社日立ソリューションズ牧俊男,一般財団法人Rubyアソシエーション前田修吾,CTCテクノロジー株式会社
  • 出版社/メーカー: 技術評論社
  • 発売日: 2015/08/21
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

とにかく先ずは、この問題集をやりましょう!

最重要ポイントです!

似たような問題がいっぱい出るので、まずは公式問題集にある予想問題80問を完璧にします。

無料で受けれるwebの試験

http://www.school.ctc-g.co.jp/ruby/training_ruby_gold_01_10.html http://jibun.atmarkit.co.jp/scenter/ittrain/121_exam_1_q.html

公式問題集と被っている内容もありますが、違う問題もあるので、こちらも同様に完璧に応えられるようにします。

一つのサイトで60問あるので、120問ですね。

私は、ここまでの200問を間違いなく答えることができる状況で試験に臨みましたが落ちました。 なので、これだけじゃダメです。

勉強サイト

http://tamata78.hatenablog.com/entry/2015/11/03/101002

このサイトが本当にすごいです。

主題範囲別にまとめた内容が全て乗っています。

私もすごく助けてもらいました。

きっとこのサイトにまとめられている内容が全て完璧に理解できれば、合格できると思います。

実際に試験出た内容振り返り

では、最後に。

僕の場合はプログラマーでは無いので細かい言語仕様まで覚えようとは思いません。 合格することさえ出来ればそれで良いのです。(毎日使っているわけじゃ無いので忘れちゃいますしね)

となると、やはり一番参考になるのは受かった、落ちちゃった人達が書いてくれている「こんな問題でるよ」ですね。

なので、私も思い出せる範囲で頑張って振り返ってみます。 後1点でダメだったなんてもったいないから、同じような人が一人でも少なくなればと願って。



ちなみに。 メタプログラミングの本を読むことが必須だと出てきますが、私読んでません。 先ほど紹介した勉強サイトにまとめがあるので、そこである程度動きが理解できていれば充分だと思います。

問題

そっくりそのまま出た問題ではありません。

ただ、似たような問題は出たはずなので参考になれば嬉しいです。

(1..Float::INFINITY).lazy.map {|i| i**2 }.take(3).inject(0) {|sum,i| sum += i }
=> 14
(1..Float::INFINITY).lazy.map{|n| n*2}.first(5)
=> [2, 4, 6, 8, 10]
(1..Float::INFINITY).lazy.map {|i| i**2 }.take(3).first(1)
=> [1]
(1..Float::INFINITY).lazy.map {|i| i**2 }.take(3).first(2)
=> [1, 4]
(1..Float::INFINITY).lazy.map {|i| i**2 }.take(3).first(3)
=> [1, 4, 9]
(1..Float::INFINITY).lazy.map {|i| i**2 }.take(3).force
=> [1, 4, 9]
ENV.class
=> Object
Class.superclass
=> Module => Object => BasicObject
Ruby実行オプション -l が出た
print は to_s これでた
 ※問題集には、p の inspect があった
begin
  raise "error message"
rescue => evar
  p $!
  p evar
end
#<RuntimeError: error message>
#<RuntimeError: error message>
f = Fiber.new do
  raise StandardError, "hoge"
end
begin
  f.resume # ここで StandardError が発生
rescue => e # 型を省略しているので StandardError を捕まえる
  p e.message #=> "hoge"が出力する
end
=> "hoge"

ヤバい….もう結構忘れてる内容ばっかり。。。

人間ホントに使わないとすぐ忘れてしまいますね。