フォーチュンサモナーズ
«前の日記(2007-09-04) 最新 次の日記(2007-09-13)» 編集

Don'tStopMusic

2003|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|12|
2006|01|02|03|04|05|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|08|

カテゴリ別 2003年 | 2004年 | 2005年 | 2006年 | 2007年 | 2008年

知り合いサイト: よんだもの / 暴想 / Linuxでやる夫 / 新宿Vipper / 僕だけが幸せになればいいのに。


2007-09-10

_ [Ruby] Ruby 技術者認定試験の問題を予想してみました このエントリーを含むブックマーク

さらに追記:第二回試験を受けましたが、この日記の予想問題とはあんまり近くはありませんでした。試験勉強をされる方は、リファレンスマニュアルと NaCl さん謹製のRuby認定試験対策問題を読むのが良いと思います。

追記:まつもとさん曰く実際の問題はもう少しストレートで優しいものになる予定とのことです。

10 月に実施される予定の Ruby 技術者認定試験の問題を予想してみました。とりあえず 30 問。組み込み関数・変数・定数・クラスの問題がほとんどないので、増やすつもりです。

エントリーレベルだそうなので簡単な問題にしてみましたが、簡単すぎでしょうかね。(会社の後輩に見せたところエントリーレベルにしては難しいとの評でした。SJC-P を念頭においていたのでひねった問題にしてしまったかもしれません……)除いた分野は、ブロック、スレッド、正規表現、メタプログラミング、オブジェクト指向プログラミングです。また、処理系は CRuby 1.8.6-p36 前提です。

問題の分野の分け方や出題形式は SJC-P(Sun Certified Programmer for the Java 2 Platform)を真似しました。

念為免責文。なお、私は Ruby アソシエーションとは無関係な一個人ですので、以下の予想問題は予想問題に過ぎません。実際の試験に出る範囲や出題形式はまるで異なるかもしれません。また、この予想問題が解けたからといって実際の Ruby 技術者認定試験が解けるとは限りません。

では、以下予想問題です。

宣言、初期化、スコープ

Q.1 「http://example.org/」と出力される以下のプログラムの(A)にふさわしいものはどれか
class MySite
  def (A)
    @url = url
  end
  def url
    @url
  end
end
 
site = MySite.new("http://example.org/")
puts site.url
  1. MySite(url)
  2. new(url)
  3. initialize(url)
  4. constructor(url)
Q.2 「a」と出力される以下のプログラムの(A)にふさわしいものはどれか
class Exam
  def self.foo
    puts "a"
  end
  def foo
    puts "b"
  end
end
 
(A)
  1. exam = Exam.new
    exam.foo
  2. Exam.foo
  3. include Exam
    foo
  4. extend Exam
    foo
Q.3 以下のプログラムの実行結果はどれか
class Hello
  puts "hello, world"
end
  1. SyntaxError で終了
  2. NameError 例外で終了
  3. 「hello, world」と出力
  4. 何も表示されない
Q.4 Child は Parent のサブクラスである。以下のプログラムの(A)にふさわしいものはどれか
class Parent
end
 
class (A)
end
  1. Child :: Parent
  2. Child extends Parent
  3. Child < Parent
  4. Child inherit Parent
Q.5 以下のプログラムの実行結果はどれか
class Apple
  def color
    "red"
  end
  private :color
end
 
class GreenApple < Apple
  def color
    "green"
  end
end
 
apple = GreenApple.new
puts apple.color
  1. SyntaxError で終了
  2. NoMethodError 例外で終了
  3. 「green」と出力
  4. 「red」と出力
Q.6 以下のプログラムの実行結果はどれか
module A
  def hello
    puts "hello, A"
  end
end
 
class B
  def hello
    puts "hello, B"
  end
end
 
class C < B
  include A
end
 
obj = C.new
obj.hello
  1. 「hello, A」「hello, B」と出力
  2. 「hello, A」と出力
  3. 「hello, B」と出力
  4. 何も表示されない
Q.7 以下のプログラムの実行結果はどれか
class Parent
  def test(text)
    puts text
  end
end
 
class Child < Parent
  def test(text, number)
    super
    puts number
  end
end
 
obj = Child.new
obj.test("hello", 10)
  1. 「hello」「10」と出力
  2. 「10」と出力
  3. ArgumentError 例外で終了
  4. 何も表示されない
Q.8 以下のプログラムの実行結果はどれか
$text = "hello"
class Test
  def initialize
    @text = "good bye"
  end
 
  def say_hello
    puts text
  end
end
 
obj = Test.new
obj.say_hello
  1. 「hello」と出力
  2. 「good bye」と出力
  3. NameError 例外で終了
  4. ArgumentError 例外で終了
Q.9「-10」と出力される以下のプログラムの(A)はどれか
class MyInteger
  def initialize(i)
    @i = i
  end
  def (A)
    - @i
  end
end
 
i = MyInteger.new(10)
puts -i
  1. -
  2. -@
  3. -$
  4. <UnaryMinus>

リテラル

Q.10 整数リテラルとして誤っているものはどれか
  1. 1_000
  2. 0d1000
  3. 1,000
  4. 1000
Q.11 "STRING" と等価のリテラルはどれか
  1. %r!STRING!
  2. %w!STRING!
  3. %!STRING!
  4. %s!STRING!
Q.12 {1=>2, 3=>4} と等価のリテラルはどれか
  1. {1, 2, 3, 4}
  2. %h{1 2 3 4}
  3. [1, 2, 3, 4]
  4. "{1=>2, 3=>4}"
Q.13 37 と等価なリテラルはどれか
  1. 0x25
  2. ?&
  3. 0b0101010
  4. 044

フロー制御

if/unless/case-when

Q.14 以下のプログラムの実行結果はどれか
i = 0
if i
  puts "true"
else
  puts "false"
end
  1. SyntaxError で終了
  2. 「true」と出力
  3. 「false」と出力
  4. 何も表示されない
Q.15 以下のプログラムの実行結果はどれか
puts "foo" unless true and false || false or true
  1. SyntaxError で終了
  2. 「foo」と出力
  3. UnreachedStatementError で終了
  4. 何も表示されない
Q.16 以下のプログラムの実行結果はどれか
case 123
when /^\d$/
  puts "digit"
when Integer
  puts "integer"
when Fixnum
  puts "fixnum"
else
  puts "other"
end
  1. 「digit」と出力
  2. 「integer」と出力
  3. 「fixnum」と出力
  4. 「other」と出力

for/while/until/each

Q.17 「1234」と出力される以下のプログラムの(A)はどれか
(A)
  print i
end
  1. for i in 1..4
  2. for i in 1...4
  3. for (i = 0; i < 4; i++)
  4. for (i = 0; i < 4; i++); do
Q.18 以下のプログラムの実行結果はどれか
i = 10
while i
  i = i - 1
  print i
end
  1. 「10987654321」と出力
  2. 「987654321」と出力
  3. SyntaxError で終了
  4. 実行が停止しない
Q.19 「12345」と出力される以下のプログラムの(A)(B)はどれか
[1, 2, 3, 4, 5].each (A)
  print i
(B)
  1. (A) { (B) }
  2. (A) begin |i| (B) end
  3. (A) do |i| (B) end
  4. (A) (|i| (B) )

break / retry / redo

Q.20「1234」と出力される以下のプログラムの(A)はどれか
for i in [1, 2, 3, 4, 5]
  print i
  if i > 3
    (A)
  end
end
  1. return
  2. break
  3. retry
  4. redo

begin-rescue-ensure

Q.21 以下のプログラムの実行結果はどれか
begin
  array = [1, 2, 3, 4, 5]
  num = array.fetch(6)
  puts num
rescue ArgumentError
  puts "ArgumentError"
rescue IndexError
  puts "IndexError"
rescue StandardError
  puts "StandardError"
end
  1. 何も出力しない
  2. 「ArgumentError」と出力
  3. 「IndexError」と出力
  4. 「StandardError」と出力
Q.22 以下のプログラムの実行結果はどれか
begin
  raise StandardError
rescue StandardError
  exit
ensure
  puts "ensure"
end
  1. 「ensure」と出力
  2. 何も出力しない
  3. SystemExit 例外で終了
  4. 「ensure」と出力して SystemExit 例外で終了

例外

Q.23 ライブラリ hello が存在しない場合、以下のプログラムの実行結果はどれか
begin
  require "hello"
rescue
  puts "hello not found"
ensure
  puts "bye"
end
  1. 何も出力しない
  2. 「hello not found」と出力
  3. 「bye」と出力
  4. 「bye」と出力して LoadError 例外で終了

組み込みライブラリ

Q.24 Integer クラスの説明として正しいものはどれか
  1. 32bit整数クラス
  2. 整数の抽象クラス
  3. 多倍長整数クラス
  4. 実数の抽象クラス
Q.25 TrueClass クラスの説明として正しいものはどれか
  1. true は TrueClass の唯一のインスタンスである
  2. Boolean クラスのサブクラスである
  3. Comparable モジュールをインクルードしている
  4. TrueClass.new でインスタンスを生成できる

標準ライブラリ

Q.26 drb ライブラリの説明として正しいものはどれか
  1. デバッガライブラリ
  2. 分散オブジェクトシステムライブラリ
  3. メール送信ライブラリ
  4. ファイル操作ユーティリティ
Q.27 コマンドラインオプションの解析のためのライブラリはどれか
  1. getoptlong
  2. generator
  3. strscan
  4. pp

基礎

Q.28 以下のプログラムの実行結果はどれか
hello = "hello, world."
hello.chop
puts hello
  1. SyntaxError で終了
  2. 何も出力しない
  3. 「hello, world.」と出力
  4. 「hello, world」と出力
Q.29 以下のプログラムの実行結果はどれか
def mul10(i)
  i = i * 10
end
 
n = 10
mul10(n)
puts n
  1. 「10」と出力
  2. 「100」と出力
  3. 「10101010101010101010」と出力
  4. SyntaxError で終了
Q.30 以下のプログラムの実行結果はどれか
i = 1 / 3
puts i
  1. 「0.3」と出力
  2. 「1/3」と出力
  3. 「0」と出力
  4. 「0.33333...」と出力

_ [Ruby] Ruby 技術者認定試験予想問題 解答編 このエントリーを含むブックマーク

style="color: white" してます。選択するなりテキストエリアにコピーするなりして読んでください。

Q.1
3. initialize(url)
Q.2
2. Exam.foo
Q.3
3. 「hello, world」と出力
Q.4
3. Child < Parent
Q.5
3. 「green」と出力
Q.6
2. 「hello, A」と出力
Q.7
3. ArgumentError 例外で終了
Q.8
3. NameError 例外で終了
Q.9
2. -@
Q.10
3. 1,000
Q.11
3. %!STRING!
Q.12
1. {1, 2, 3, 4}
Q.13
1. 0x25
Q.14
2. 「true」と出力
Q.15
4. 何も表示されない
Q.16
2. 「integer」と出力
Q.17
1. for i in 1..4
Q.18
4. 実行が停止しない
Q.19
3. (A) do |i| (B) end
Q.20
2. break
Q.21
3. 「IndexError」と出力
Q.22
1. 「ensure」と出力
Q.23
4. 「bye」と出力して LoadError 例外で終了
Q.24
2. 整数の抽象クラス
Q.25
1. true は TrueClass の唯一のインスタンスである
Q.26
2. 分散オブジェクトシステムライブラリ
Q.27
1. getoptlong
Q.28
3. 「hello, world.」と出力
Q.29
1. 「10」と出力
Q.30
3. 「0」と出力
本日のツッコミ(全3件) [ツッコミを入れる]
_ kentaro (2007-09-10 03:56)

解答編の、A7とA11の番号と内容が、問題の選択肢のそれと食い違ってる気がします。

_ だて (2007-09-10 08:31)

あ、確かに。ありがとうございます。修正しました。

_ うう〜〜〜ん (2007-09-12 13:37)

19/30でした・・・。もっと勉強しないと。。

[]

最近のコメント:

  1. だて (09-16)
  2. ささだ (09-14)
  3. うう〜〜〜ん (09-12)

RSS
Creative Commons License
This work is licensed under a Creative Commons License
(note: text only. w/o web design, citations, (re)distributed softwares).