参加希望者が少ないため、Ruby認定試験の第二回に向けた勉強会は行わないことにしました。
総合的な問題を11問追加しました。合計で、20問公開してます。 ご活用ください。
総合的な問題を9問を公開しました。 11月26日(月)までに、10問程度を追加する予定です。
解答と解説を公開しました。ご覧ください。
Ruby認定試験 の対策として、NaCl の有志で模擬試験問題を作成しました。
Ruby認定試験は次の日程で行われます。
作成した問題は以下の試験範囲から考えております。
http://www.school.ctc-g.co.jp/ruby/rubycertify.html
問題の作成にあたり、以下の文書を参考にいたしました。
これら問題が全く的外れだったとしても責任は持てません。 ご了承ください。
なお,現状では本文書の2次利用はご遠慮ください。 ご意見や間違いのご指摘などは、 <URL:mailto:ruby-test@qml.netlab.jp>へお願いします。
問題の改訂履歴はこちらです。
以下では、試験範囲の各項目にそったもの出題しています。 総合的な問題も作成しております。こちらもご活用ください。総合問題 No.1
カレントディレクトリにtest.rbというファイル名で次のRubyのプログラム(Rubyスクリプト)がある。
puts("Hello World")
test.rbの実行方法として正しいものを選びなさい。
※Rubyインタプリタのファイル名はrubyとする。
次のコマンドの実行結果として正しいものを選びなさい。
ruby -e 'n = 10' -e 'n += 20' -e 'n += 30' -e 'puts(n)'
次の説明に該当するコマンドラインオプションを選びなさい。
デバッグモードでスクリプトを実行します。$DEBUG を true にします。
次のコマンドラインオプションの説明として、正しいものを選びなさい。
-r feature
このフラグがセットされるとプログラム全体が sed -nやawk のように
while gets ... end
で囲まれているように動作します。
次の内容のtest.rbがカレントディレクトリにあるとする。
puts(ARGV[0])
次のコマンドを実行した場合の正しい出力を選びなさい。
ruby test.rb "Hello" "World"
次のプログラムの実行結果として正しいものを選びなさい。
ENV["TERM"] = "screen"
fork do
ENV["TERM"] = "ansi"
fork do
ENV["TERM"] = "xterm"
end
Process.wait
end
Process.wait
puts(ENV["TERM"])
readlineがサポートされている場合、irbは補完入力機能が使えます。 補完入力機能を有効にすると、例えば次のような動作をします。
$ irb irb(main):001:0> [1, 2, 3].rev (ここで[TAB]キーを押す。すると以下のように「erse」が補完される。) irb(main):001:0> [1, 2, 3].reverse
irbの補完入力機能を有効にする設定方法として正しいものを選びなさい。
irbを起動後、「conf.use_prompt = true」を実行する。
$ irb irb(main):001:0> conf.use_prompt = true
irbを起動後、"irb/completion"を読み込む。
$ irb irb(main):001:0> require "irb/completion"
irbの設定ファイル(~/.irbrcなど)に次の設定を行う。
IRB.conf[:ECHO] = false
irbのコマンドラインオプションとして、--readlineを指定する。
irb --readline
Rubyインタプリタは通常、ある名前が変数であるかどうか判定するための代入 文を探します。そして、その名前に何も代入されていなければ、それをメソッ ド呼び出しとみなします。
$ ruby eval "var = 10" var (Ctrl-Dを入力する) -:2: undefined local variable or method `var' for main:Object (NameError)
これをふまえて、irbで同様のことを行ったときの実行結果として、正しいも のを選びなさい。
$ irb irb(main):001:0> eval "var = 10" => 10 irb(main):002:0> var
irbを起動後、irbコマンドによりサブirbを起動できます。 複数のサブirbを使用した次の操作をした場合の正しい出力を選びなさい。
$ irb irb(main):001:0> a = 10 => 10 irb(main):002:0> irb irb#1(main):001:0> a = 20 => 20 irb#1(main):002:0> irb irb#2(main):001:0> a = 30 => 30 irb#2(main):002:0> fg 0 => #<IRB::Irb: ... irb(main):003:0> puts(a)
あ行を表示するプログラム
p "a i u e o" # a gyou
か行を表示するプログラム
# ka gyou p "ka ki ku ke ko"
さ行を表示するプログラム
=begin sa gyou =end p "sa si su se so"
た行を表示するプログラム
p "ta ti tu te to" =begin ta gyou =end
。
"ai ue o" =~ /^ai (?#ue)ue o$/
。
"ai ue o" =~ /^ai (?#{ue})ue o$/。
"ai ue o" =~ /^ai (?#{ue})ue o$/x。
"ai ue o" =~ /^ai (#ue)ue o$/
次のプログラムの実行結果を選択せよ
p 'Led Zeppelin#Black dog#1994#Led Zeppelin IV'.split("#")
次のプログラムでリテラルはどこか
# 正方形の面積を求める area = side ** 2
次の文字列リテラルにマッチする正規表現リテラルはどれか
”aiueo\nkakikukeko"
次のプログラムの実行結果から予測されるものを選択しなさい。""で括られたものを文字列リテラルと呼び、:から始まるものをシンボルと呼びます。
p "aiueo" == "aiueo" p "aiueo".object_id == "aiueo".object_id p :aiueo == :aiueo p :aiueo.object_id == :aiueo.object_id
実行結果
true false true true
次のプログラムの実行結果として正しいものを選択してください。
val1 = 100 if val1 == 100 then val2 = 200 end puts val2
次の各行を独立して実行した場合、エラーとなる行があった。エラーとなった行について正しく述べているのはどれか。
A: 1 << 1 B: 1 << 1.0 C: 1.0 << 1 D: 1.0 << 1.0
次の実行結果として出力されるのはどれか?
p(7 + 10 * 4 / 3 * 6.0)
どのような数値x, yについても、その大小関係が表示される結果と一致するようにしたい。例えば、以下のように表示される。
x=5、y=1 -> xはyより大きいです。 x=1、y=5 -> xはyより大きくないです。 x=2、y=2 -> xはyより大きくないです。
A, Bに入れる組み合わせとして正しいものを選べ。
[A] x [B] y puts "xはyより大きくないです。" else puts "xはyより大きいです。" end
以下のコードを実行した場合、"num は 0 か 1 です。"という出力結果を得た。A, Bに入れる組み合わせとして正しいものを選べ。
num = 1 [A] num [B] 0, 1 puts "num は 0 か 1 です。" [B] 2, 3 puts "num は 2 か 3 です。" else puts "num は 0, 1, 2, 3 のいずれでもありません。" end
以下のようなコードの実行結果として適切なものを選びなさい。
a = 10 if a > 0 puts "a > 0" else if a < 0 puts "a < 0" else puts "a == 0" end
以下の実行結果はどうなるか?
sum = 0 10.times do |i| sum += i end p sum
以下を実行した場合、method_a()は何回呼び出されるか?
i = 10 until i < 0 # A処理 method_a() i -= 1 end
次のプログラムは、ファイルが開けるようになるまで 15 秒ごとに open メソッドを実行して、成功するとその内容を出力するものです。<A>に入るものを選択してください。
file = ARGV[0] begin io = open(file) <A> sleep(15) retry end puts io.read io.close
次のプログラムを実行した結果として、正しいものを選択してください。
begin raise "error 1." raise "error 2." raise "error 3." rescue puts $! end
次のプログラムを実行した結果として、正しいものを選択してください。
begin raise "error class." rescue => ex print ex.class exit ensure print "--end--" end
次の出力を得るプログラムを以下の中からすべて選択してください。
5 6 7 8
1.
pobj = proc {|i|
puts i
}
(5..8).each(&pobj)
2.
for i in 5...9 puts i end
3.
class Foo
def to_proc
Proc.new {|i| puts i}
end
end
(5..8).each(&Foo.new)
4.
print "5\n6\n7\n8\n"
次のプログラムを実行した結果として、正しいものを選択してください。
class En
def en r
Math::PI * r * r
end
end
class Entyuu < En
def initialize x, r
@x = x
@r = r
end
def value
en @r * @x
end
def answer
sprintf("半径%dcm、高さ%dcmの円柱の体積は%0.2fcm^2です。",@r,@x,value)
return
end
end
puts Entyuu.new(2, 3).answer
testメソッドに渡されたブロックのselfは次のうちどれか?
class Foo
def test
(1..3).each{|i| yield(i)}
end
end
foo = Foo.new
foo.test{|i| i }
次の式を実行した場合,正しい出力結果はどれか.次から選べ
['foo'].each do |i|
['bar'].each do |i|
print i
end
print i
end
次の式の出力結果として,正しいものを選べ
def foo "foo" end foo = "foo?" def self.foo "foo!" end print foo()
下記のメソッドを呼ぶことができないのは,次のうちどれか.
def foo(foo, bar = 'bar', *pyo) "foo" end
次のプログラムの実行結果として、正しいものを選択してください。
class Foo
def bar
print "bar"
end
end
class Foo
def baz
print "baz"
end
end
foo = Foo.new
foo.bar
次のプログラムの実行結果が「<b>abc</b>」となるように、プログラム中の[A]に入る適切な文字列を選択してください。
str = "abc"
class [A] str
def foo
return "<b>" + self + "</b>"
end
end
puts str.foo
次のスクリプトを実行した結果として、正しいものを選択してください。
module Foo
def bar
puts "bar"
end
end
module Foo
def bar
puts "baz"
end
end
include Foo
bar
次のプログラムの実行結果として、正しいものを選択してください。
module Foo
def initialize
puts "Foo initialized."
end
end
include Foo
以下のプログラムの実行結果を1つ選択して下さい。
puts("hello, ")
exec("echo 'ruby!'")
puts("world!")
(1) hello,
world!
(2) hello,
ruby!
(3) hello, ruby! world!
(4) hello, ruby!以下のプログラムの実行結果として有り得るものを1つ選択して下さい。
case rand() {
when 1
puts("グー")
when 2
puts("チョキ")
else
puts("パー")
}
「2800」と出力される以下のプログラムの(A)はどれか
Book = Struct.new(:price, :publisher) ruby_recipe_book = Book.new(2800, "ソフトバンククリエイティブ") (A)
以下のプログラムを実行した結果、表示されるものを1つ選択して下さい。
ary = [1, 2, 3, 4, 5] p ary[3] ... (A) p ary[10] ... (B) p ary[-1] ... (C)
以下のプログラムを実行した結果、表示されるものを1つ選択して下さい。
["perl", "perl", "python", "python", "ruby", "ruby"].each do |line| puts line if line =~ /python/ .. line =~ /ruby/ end (1) perl python ruby (2) python ruby (3) python python ruby (4) python python ruby ruby
以下のプログラムを実行すると「The object is foo.」といった出力を得た. <A>に入るものはどれか.
class Foo
def <A>
return "foo"
end
end
o = Foo.new
print("The object is ", o, ".")
以下のプログラムを実行すると「6666」といった出力を得た. <A>に入るものはどれか.
def area(width, height)
return <A>
end
print(area(2, 3))
print(area(2, "3"))
print(area("2", 3))
print(area("2", "3"))
以下のプログラムの実行結果として正しいものはどれか.
class Foo
attr_reader :foo_1
def initialize
@foo_1 = 10
end
end
class Bar
def initialize
end
end
p Bar.new.foo_1
以下のプログラムの実行結果として正しいものはどれか.
class Foo
def foo(x)
print("foo", x)
end
end
class Bar < Foo
def foo(x, y = 2)
super
print("bar", x, y)
end
end
Bar.new.foo(1)
以下のプログラムの実行結果として正しいものはどれか.
class Foo
def bar
puts "bar"
end
end
class Baz < Foo
def fizz
puts "fizz"
end
end
baz = Baz.new
p baz.is_a?(Foo)
以下のプログラムの実行結果として正しいものはどれか.
module Bar
def foo
print("bar")
end
end
class Foo
def foo
print("foo")
end
include Bar
end
Foo.new.foo
次のプログラムの[ A ]を埋めて、実行結果として“foo”が出力されるように、正しいものを選択せよ.
module Foo
def foo
return "foo"
end
end
class Bar
extend Foo
end
puts [ A ]
以下のプログラムの実行結果として正しいものはどれか.
module Foo
def foo
puts @bar
end
end
class Fizz
include Foo
def initialize
@bar = "Fizz"
end
end
class Baz < Fizz
def initialize
@bar = "Baz"
end
end
Baz.new.foo
修正前
Rubyを対話形式を実行するツールとして、正しいものを選びなさい。
修正後(2007-10-25)
Rubyを対話形式で実行するツールとして、正しいものを選びなさい。
修正前
一度値を代入すると、警告が出る。
修正後(2007-10-25)
一度定義された定数に再度値を代入すると、警告が出る。
修正前
「def -@ ... end」は単項プラス演算子(+obj)の定義です。
修正後(2007-11-10)
「def -@ ... end」は単項マイナス演算子(-obj)の定義です。
修正前
回答の4つ目
python python ruby
修正後(2007-10-25)
回答の4つ目
python python ruby ruby