概要
Ruby技術者認定試験 Silver version 2.1 に合格しました。
ですが得点は80点で勉強時間をしっかり取った割にはぎりぎりでした。
これから試験を受ける方の役に立てばと思います。
過去問周回を特に頑張った人向け
過去問を解くのは点数が上がっていくのが楽しいですし
勉強方法としてシンプルなので楽ですが程々にした方が良いと思います。
点数を取るためだけの勉強になりがちなので、
間違えた部分に関してはテキストなりwebの記事を読む。
また公式リファレンスのメソッド一覧等を眺めて見た事が無いメソッドの
ページを読んで引数の確認などをした方が良いと思います。
それでも自分は過去問(Rex、ミニツク、対策問題集、模擬問題)
に時間を費やし過ぎてしまいました。
その上で解けずに失点したかも知れない問題を似た様な形式で残しておきます。
web過去問で対策したが解けなかった問題
# 次のコードを実行するとどうなりますか
p "6B12".to_i
- 12
- 6
- 61112
- 612
- エラーが発生する
数字以外が入っている場合の挙動が分かりませんでした。
612かエラーか迷いましたが…。
# 次のコードを実行するとどうなりますか
"Ruby".each_char {|c| print c}
- "R","u","b","y"
- ["R","u","b","y"]
- Ruby
- ruby
- エラーが発生する
過去問周回を頑張ったのに1回も見た事が無い、という事は
存在しないメソッドだ! ではずしました。
メソッド一覧をもっと眺めておけば…と感じた問題でした。
# 次のコードを実行するとどうなりますか
p "hello" + 5
- hello
- hello5
- hellt
- hellohellohellohellohello
- エラーが発生する
"hello%d" % 5 #=> "hello5"
"hello" * 5 #=> "hellohellohellohellohello"
この二つは過去問で見た事が有りましたが、+記号!?ってなりました。
# 次のコードを実行するとどうなりますか
p "0123456789".delete("^2-46-8")
- 0123459
- 234678
- 0159
- 234
- エラーが発生する
"-0123456789-".delete("2-48-") #=> "015679"
こんな感じのひっかけ問題は見た事あったのですが
^の除外有効範囲まで知りませんでした
("^2-4^6-8") ←こう書かないといけないものだとばっかり…。
# 現在時刻から1時間後の時刻を出力するコードを選択しなさい
- Time.now.add(60)
- Time.now.add(3600)
- Time.now + 60
- Time.now + 3600
こちらは急にaddメソッドが出現して混乱してしまいました。
似た過去問は有るんですが動きそうなコードが有ると釣られてしまいますね。
# 次のコードを実行すると何が出力されますか
case height = 170
when 100..150; p "short"
when 150..170; p "normal"
when 170..190; p "tall"
else p "etc"
end
確か (1..9) の様にドットが2個の場合は終点の 9 は含まれるはず…
あれ、でも 170 を含む when が2個あるぞ!? となりました。
case~when式の特徴として上に記述される式が優先されるみたいですね。
# 出力と同じになるコードを二つ選択しなさい
# 出力
[1, "a"]
[2, "b"]
[3, "c"]
# コード部分
a = [1, 2, 3]
b = ["a", "b", "c"]
# 選択肢 1
a.zip(b) do |x, y|
p [x, y]
end
# 選択肢 2
a.zip(b) do |i|
p i
end
# 選択肢 3
(a, b).transpose.each do |x, y|
p [x, y]
end
# 選択肢 4
(a, b).transpose.each do |i|
p i
end
.zip .transpose .flatten .product この辺りのArrayメソッドは抑えていましたが
ブロックが付くと途端に額に汗マークです。
選択肢で zipから1つ transposeから1つ 選びましたが見事にハズしました。
まとめ
あくまでwebで過去問周回をし過ぎた人向けの記事で
合格するために役に立つ記事を投稿している方は
他にもたくさんいらっしゃいます。
少し捻った問題対策だと思ってください。
読んで頂き ありがとうございました。