This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

More than 5 years have passed since last update.

Ruby技術者認定試験 Silver

Last updated at Posted at 2019-02-07

問題1

ソースコードの文字コードをUS-ASCIIに設定するマジックコメントの書き方として、正しいものを選択して下さい。

  1. # coding: us-ascii
  2. # encoding: us-ascii
  3. # -- charset: us-ascii --
  4. # CODING: US-ASCII

問題2

以下のコードの実行結果を書いて下さい。

x = 0
def hoge
  (1...5).each do |i|
    x += 1
  end

  puts x
end

hoge

問題3

以下のコードの実行結果を書いて下さい。

begin
  puts 1 + "2"
rescue
  puts "Error."
rescue TypeError
  puts "Type Error."
ensure
  puts "Ensure."
end

問題4

以下のコードで、エラーになるものは、どれですか?

  1. puts "90"
  2. puts '90'
  3. puts 0x90
  4. puts 090

問題5

以下のコードの実行結果を書いて下さい。

x = 10
y = x < 10 ? "A" : "B"

puts y

問題6

以下のコードの実行結果を選択して下さい。

MAX=10
print MAX
MAX=100
print MAX
  1. 10と表示される。
  2. 10と表示された後、警告が表示され実行が終了する。
  3. 10と表示された後、警告が表示され100と表示される。
  4. 10 100と表示される。

問題7

以下のコードの実行結果を書いて下さい。

def foo(*a)
  p a
end

foo(1,2,3)

問題8

以下のコードの実行結果を書いて下さい。

def hoge1(a, b, c, d)
  p "a=#{a}";
  p "b=#{b}";
  p "c=#{c}";
  p "d=#{d}";
end

arr = [111, 222, 333];
hoge1(1, *arr)

問題9

以下の変数に関する説明のうち、間違っているものを選択して下さい

  1. ローカル変数はアルファベット小文字で始まり、2文字以上である
  2. グローバル変数は、$で始まる
  3. インスタンス変数は、@で始まる
  4. クラス変数は、*で始まる
  5. 定数は、アルファベット大文字で始まる

問題10

以下のコードの実行結果を書いて下さい。

class Hoge
  attr_reader :message

  def initialize
    @message = "Hello"
  end
end

class Piyo < Hoge
  def initialize
    @message = "Hi"
    super
  end
end

puts Piyo.new.message

問題11

以下のコードの実行結果を書いて下さい。

class Hoge
  attr_reader :message

  def initialize
    @message = "Hello"
  end
end

class Piyo < Hoge
  def initialize
    @message = "Hi"
    super
  end
end

val = Piyo.new
val.message = "Hi Cebu"
puts val.message

問題12

class Hoge
  attr_accessor :message

  def initialize
    @message = "Hello"
  end
end

class Piyo < Hoge
  def initialize
    @message = "Hi"
    super
  end
end

val = Piyo.new
val.message = "Hi Cebu"
puts val.message

問題13

以下のメソッドは円の面積を求めるコードですが、このままで は動きません。
このコードを動かすための修正方法として適切な選択肢を2つ選びなさい。
ただし各選択肢は独立しており、その修正のみを実行すれば動作します。

def area r
  return r * r * PI
end
  1. メソッド定義の上にinclude Mathと記述する。
  2. メソッド定義の上にrequire "Math"と記述する。
  3. メソッド定義の上にrequire Mathと記述する。
  4. PIの前にMath.と記述する。
  5. PIの前にMath::と記述する。
  6. PIをMath(PI)と書き換える。

問題14

オーバーライド不可の演算子を選びなさい。(2つ選択)

1. + 
2. .. 
3. %
4. & 
5. &&
6. ==

問題15

以下のコードの実行結果を書いて下さい。

s = "Hello"
def s.greet
  puts "Hi!"
end

s = "Hello"
class String
  def greet
    puts "Hello!"
  end
end
s.greet

問題16

以下のような実行結果にするために、値を選択肢から選んで下さい。

class Employee
  attr_reader :id
  attr_accessor :name

  def initialize id, name
    @id = id
    @name = name
  end

  def to_s
    return "#{@id}:#{@name}"
  end
  #ここに代入する式を選択して下さい。
  #
  #
  #
end

employees = []
employees << Employee.new("3","Tanaka")
employees << Employee.new("1","Suzuki")
employees << Employee.new("2","Sato")
employees.sort!
employees.each do |employee| puts employee end

実行結果

1:Suzuki
2:Sato
3:Tanaka

回答の選択肢

def <=> other
  return self.id <=> other.id
end
def compareTo(other)
  return self.compareTo(other)
end
include Sortable
def sort(self, other)
  self.id <=> other.id
end

問題17

a = [1,2,3,4]
b = [1,3,5,7]
#ここに代入する式を選択して下さい。
#
# c = XXX
#
c.each {|i| print i, " " }

実行結果

1 3

回答の選択肢

  1. a+b
  2. a-b
  3. a & b
  4. a && b
  5. a | b
  6. a || b

問題18

a = [1,2,3,4]
#ここに代入する式を選択して下さい。
#
# a = XXX
#
a.each do |i|
  print i, " "
end

実行結果

1 2 3

回答の選択肢

  1. a[0..3]
  2. a[0..-2]
  3. a[0...-2]
  4. a[0...-3]
  5. a[3,0]
  6. a[0,3]
  7. a[2,0]
  8. a[0,2]

問題19

配列のメソッドについて適切な記述を選びなさい。(2つ選択)

  1. find_allとselectは同じ動作をする。
  2. mapとcollectは同じ動作をする。
  3. findとselectは同じ動作をする。
  4. firstは先頭要素を削除し、その要素を返す。
  5. concatは非破壊的メソッドである。
  6. concat!は破壊的メソッドである。

問題20

以下のコードの実行結果を書いて下さい。

a1=%w(a b)
a2=%w(x y)
a3=a1.zip(a2)
p a3.first
  1. "a"
  2. ["a"]
  3. ["a", "x"]
  4. ["a", "b"]
  5. 例外が発生する。

問題21

以下のコードの実行結果を書いて下さい。

a = [1,2,3,4,5]
p a.slice(1,3)

問題22

以下のコードの実行結果を書いて下さい。

a = "abc"
b = "abc"
print a.eql? b
print a.equal? b
print a == b

問題23

以下のコードのうち、実行時エラーにならないものを選びなさい。

1. puts 5 + "Hello"
2. puts "Hello" + 5
3. puts "Hello" * 5
4. puts 5 * "Hello"

問題24

以下のコードの実行結果を書いて下さい。

s = <<"EOB"
Hello,
Ruby
World.
EOB
"EOB"

p s

問題25

以下のコードの実行結果を書いて下さい。

s1 = "Hoge"
s2 = "Fuga"
s1.concat(s2)
s1.chop
s1.chomp
s1 + s2
puts s1

問題26

以下のコードの実行結果を書いて下さい。

s = "123456789"
p s[1,4]
  1. "123"
  2. "234"
  3. "1234"
  4. "2345"

問題27

回答を選択肢から選んで下さい。

member = [10, "Tanaka"]
print "ID:%2d Name:%s" #ここに代入する式を選択して下さい。 x member

実行結果

ID:10 Name:Tanaka
  1. ,
  2. +
  3. %
  4. .format

問題28

Hashクラスについて適切な記述を選びなさい。(2つ選択)

  1. {}で空のHashオブジェクトを生成できる。
  2. []で空のHashオブジェクトを生成できる。
  3. invertでキーと値を入れ替えることができる。
  4. keyに対応する値を取り出すメソッドとして、has_key?(key)、key?(key)、get_ key(key)などが用意されている。
  5. すべての要素を削除するには、delete_allを使用する。

問題29

Hashクラスのメソッドの説明として、適切ではない記述を選びなさい

  1. deleteはキーを指定してキーと値の組を削除する。
  2. removeはキーと値の組を削除する。
  3. fetchは与えられたキーに関連付けられた値を返す。
  4. clearはハッシュの要素を全て削除する。

問題30

回答を選択肢から選んで下さい。

h = #ここに代入する式を選択して下さい。
p h

実行結果

{ :a => 1, :b => 2, :c => 3 }

選択

1. {a:1,b:2,c:3}
2. {a=1,b=2,c=3}
3. Hash[:a, 1, :b, 2, :c, 3]
4. {:a1,:b2,:c3}

問題31

以下のコードを実行するとどうなりますか?

ファイルdataの内容 abcdefg

File.open("data") do |io|
  while not io.eof?
    print io.read(1)
    io.seek(0,IO::SEEK_SET)
  end
end
  1. abcdefgと表示される。
  2. aが表示され続ける。
  3. zが表示され続ける。
  4. 何も表示されない。
  5. 実行時エラー。

問題32

以下の実行結果になるように、#に記述するコードを選んで下さい

t = Time.gm(1970,1,1)
puts t.strftime("#ここに代入する式を選択")

実行結果

1970/01/01
  1. %y/%m/%d
  2. %Y/%M/%d
  3. %y/%M/%d
  4. %Y/%m/%d

問題33

Newまたはnewのみで構成される行にマッチする正規表現を選びなさい。(二つ選択)

  1. ^[Nn]ew$
  2. ^N|new$
  3. ^[Nn][e][w]$
  4. ^New|new$
  5. ^[New]|[new]$

問題34

Rubyの予約語として適切なものを選びなさい

  1. while
  2. rand
  3. goto
  4. class
  5. const

問題35

以下のコードを実行するとどうなりますか?

x = 0
[1,2,3].each do |x|
 print x.to_s + " "
end
puts x

問題36

Rubyにおける偽の値として、正しいものを選びなさい。

  1. nil
  2. 0
  3. ""
  4. false
  5. 0.0
  6. NULL

問題37

以下の実行結果になるように、##AAA##に記述するコードを選んで下さい

y = false
y ##AAA## (raise "failed")
puts("succeeded!")

実行結果

succeeded!
  1. |
  2. ||
  3. &
  4. &&

問題38

1から10までを表示するコードを選びなさい

  1. (1.10).each do |i| puts i end
  2. (1..10).each do |i| puts i end
  3. (1...10).each do |i| puts i end
  4. (1....10).each do |i| puts i end

問題39

以下のコードを実行するとどうなりますか?

HOGE = "hoge"
HOGE.gsub!("hoge", "piyo")
print HOGE
  1. HOGEは定数であるため、エラーが発生する。
  2. HOGEは定数であるため、警告が発生するが「piyo」が表示される。
  3. HOGEは定数であるため、「hoge」が表示される。
  4. 警告は発生せず、「piyo」が表示される。

問題40

例外について正しい記述を選びなさい。

  1. beginによって例外を捕捉する際は、例外の可能性がある処理をbeginからrescueの間に記述する。
  2. ひとつの処理に対して複数のrescueは、指定できない。
  3. 例外オブジェクトのメソッドstacktraceにより、例外スタックを取得できる。
  4. ensureは、必ず記述する必要がある。

問題41

以下のコードの##AAA##にZeroDivisionError が発生した時の処理を記述したい。
適切なコードを選択して下さい。

begin
  puts 10 / 0 #ZeroDivisionError
  ##AAA##
  print "ZeroDivisionException:", ex.message
end

実行結果

ZeroDivisionException:divided by 0
  1. rescue ZeroDivisionError = ex
  2. rescue ZeroDivisionError ex
  3. rescue ZeroDivisionError -> ex
  4. rescue ZeroDivisionError => ex

問題42

以下のコードを実行するとどうなりますか?

p ?A
  1. "A"
  2. 65
  3. ?A
  4. 例外が発生する。

問題43

エラーにならないものを選びなさい

  1. class Hoge < Object ; end
  2. class Hoge << Object ; end
  3. class Hoge < Kernel ; end
  4. class Hoge << Kernel ; end

問題44

以下のコードの実行結果を書いて下さい

class Parent
  attr_reader :name
  def initialize name
    @name = name
  end
end
class Child < Parent
  def initialize name
    @name = "Child" + name
  end
end

puts Child.new("Hoge").name

問題45

以下のコードの実行結果を書いて下さい

class Integer
  def to_square
    return self * self
  end
end
print 4.to_square

問題46

以下のコードの実行結果を書いて下さい

p "12abc".to_i
  1. 実行時エラー。
  2. 12と表示。
  3. 12abcと表示。

問題47

以下の実行結果になるように、##AAA##に記述するコードを選んで下さい

a=[1,2,3,4]
p ##AAA##

実行結果

[2, 3]
  1. a[1,3]
  2. a[1..3]
  3. a[1...3]
  4. a[1....3]

問題48

a=[1,2,3,4,5]
p a[2..-1]
  1. nil
  2. []
  3. [3,4]
  4. [3,4,5]

問題49

以下の実行結果になるように、##AAA##に記述するコードを選んで下さい

a = 1,2,3
p ##AAA##

実行結果

"1,2,3"
  1. p a.to_s(",")
  2. p a.join(",")
  3. p a.concat(",")
  4. p a.to_a(",")

問題50

以下の実行結果になるように、##AAA##に記述するコードを選んで下さい

s = "a;b:c;d:e;f"
p s.split ( ##AAA## )

実行結果

["a", "b", "c", "d", "e", "f"]
  1. /:|;/
  2. ":|;"
  3. "/:|;/"
  4. :|;

問題51

以下のコードの実行結果を書いて下さい

a = [1,2,3]
b = [1,3,5]
c = a
a = b & c
p a+b+c
  1. 実行時エラー
  2. [1,3,1,3,5,1,3]
  3. [1,3,1,3,5,1,2,3]
  4. [1,2,3,1,3,5,1,3]
  5. [1,2,3,1,3,5,1,2,3]

問題52

以下のコードの実行結果を書いて下さい

a = [1,2,3,4]
b = [1,3,5,7]
p a || b

問題53

以下のコードの実行結果を書いて下さい

a = [1,2,3,4]
b = [1,3,5,7]
p a | b

問題54

以下のコードの実行結果を書いて下さい

a = [1,2,3,4]
b = [1,3,5,7]
p a & b

問題55

以下のコードの実行結果を書いて下さい

a = [1,2,3,4]
b = [1,3,5,7]
p a && b

問題56

以下の実行結果になるように、##AAA##に記述するコードを選んで下さい

def sum (##AAA##)
  total = 0
  a.each {|i| total += i }
  return total
end

puts sum(1, 2, 3, 4, 5)

実行結果

15
  1. a
  2. *a
  3. a[]
  4. &a

問題57

Arrayクラスでdelete_ifと同じ動作をするメソッドを選びなさい

1. reject_if
2. reject
3. reject!
4. reject_if!

問題58

以下の実行結果になるように、##AAA##に記述するコードを選んで下さい

a = ["apple", "orange", "grape", "pine"]
a.##AAA## { |item, i| print i, ":", item, "\n" }

実行結果

0:apple
1:orange
2:grape
3:pine
  1. each
  2. each_index
  3. each_with_index
  4. each_pair

問題59

以下のコードの実行結果として適切なものを選びなさい。

s = ["one","two","three"]
s.shift
s.shift
s.unshift
s.push "four"
p s
  1. ["three", "four"]
  2. [nil, "three", "four"]
  3. ["one", "two", "three"]
  4. ["one", "two", "three", "four"]
  5. [nil, "one", "two", "three", "four"]

問題60

以下のコードの実行結果として適切なものを選びなさい。

a = [:a,:a,:b,:c]
a[5] = :e
a.concat([:a,:b,:c])
a.compact
a.uniq
p a
  1. [:a, :b, :c, :e]
  2. [:a, :b, :c, nil, :e]
  3. [:a, :a, :b, :c, :e, :a, :b, :c]
  4. [:a, :a, :b, :c, nil, :e, :a, :b, :c]

問題61

Arrayクラスでdetectと同じ動作をするメソッドを選びなさい

1. find
2. find_all
3. select
4. collect

問題62

以下の実行結果になるように、##AAA##に記述するコードを選んで下さい

a = [1, 2, 3, 4, 5, 6]
p ##AAA##

実行結果

[2, 4, 6, 8, 10, 12]
  1. a.collect {|v| v * 2}
  2. a.inject {|v| v * 2}
  3. a.each {|v| v * 2}
  4. a.map {|v| v * 2}
  5. a.select {|v| v * 2}
  6. a.execute {|v| v * 2}

問題63

以下の実行結果になるように、##AAA##に記述するコードを選んで下さい

sarray = ##AAA##
sarray.each {|v| print v, " "}

実行結果

Apple Orange Grape
  1. %w(Apple Orange Grape)
  2. %w(Apple, Orange, Grape)
  3. %w("Apple" "Orange" "Grape")
  4. %w("Apple", "Orange", "Grape")

問題64

以下の実行結果になるように、##AAA##に記述するコードを選んで下さい

a = ["a", "b", "c"]
b = [1, 2, 3]
##AAA##

実行結果

["a", 1]
["b", 2]
["c", 3]
  1. a.zip(b).each{|x| p x }
  2. a.zip(b){|x| p x }
  3. [a, b].zip{|x, y| p [x, y] }
  4. [a, b].transpose.each{|x, y| p [x, y] }

問題65

以下のコードは正しく動きません。
修正案を選択して下さい。

s = <<EOB
Hello, Ruby World.
Hi, Ruby World.
Goodbye, Ruby World.
  EOB
  1. 1行目を<>EOBに変更する。
  2. 1行目の = と << の間の空白を削除する。
  3. 5行目のEOBの前の空白を削除する。
  4. 5行目のEOBの前の空白を削除し、" "(ダブルクォート)で囲む。

問題66

以下のコードを実行すると、何が表示されますか?

puts "hello".encoding.name
  1. US-ASCII
  2. ASCII-8BIT
  3. UTF-8
  4. 文法エラーになる。

問題67

以下のコードの実行結果を考えて下さい。

a = "Ruby"
b = "Rails"
b = a
a.upcase
print b

問題68

以下のコードの実行結果を考えて下さい。

p "find!find!find!find!find!find".index("!", 5)

問題69

以下のコードの実行結果を考えて下さい。

x = "Hello, World.\n"
x.chop
x.chop
x.chomp
p x

問題70

以下のコードの【この行】と入れ替えても同じ実行結果になるものを選択して下さい。

a="abcdefghijk"
a[1,3] = "x" #【この行】
print a,"\n"
  1. a[1..3] = "x"
  2. a[1...3] = "x"
  3. a[123] = "x"
  4. a[1-3] = "x"

問題71

以下のコードの実行結果を考えて下さい。

p "hogepiyohogehoge".slice(/o../)
  1. ""
  2. "oge"
  3. "ogepiyohogehoge"
  4. ["oge", "oho", "oge"]

問題72

以下のコードの実行結果を考えて下さい。

puts "0123456789-".delete("^13-56-")
  1. 02-
  2. 13456789
  3. 13456-
  4. 02789

問題73

一つ以上の数字のみで構成される行にマッチする正規表現を選択して下さい

  1. /^[0-9].$/
  2. /^[0-9]*$/
  3. /^[0-9][0-9]*$/
  4. /^[0-9][0-9].*$/

問題74

以下のコードの実行結果を考えて下さい。

p "abc def 123 ghi 456".scan(/\d+/).length

問題75

以下のコードの実行結果を考えて下さい。

p "HogeHOGEhoge"[/[A-Z][^A-Z]+/]
  1. nil
  2. "Hoge"
  3. "HOGE"
  4. "eHOGE"

問題76

以下のコードの実行結果を考えて下さい。

h = {"a": 1, "b": 2, "c": 3}
p h
  1. {"a"=>1,"b"=>2,"c"=>3}
  2. {:a=>1,:b=>2,:c=>3}
  3. 文法エラーになる。
  4. 例外が発生する。

問題77

以下のコードの実行結果を考えて下さい。

h = {1 => "Hoge", 2=> "Piyo", 3=>"fuga"}
p h.invert
  1. 実行時エラー
  2. [1, 2, 3]
  3. ["Hoge", "Piyo", "fuga"]
  4. {"Hoge"=>1, "Piyo"=>2,"fuga"=>3 }
  5. {1=>"Hoge", 2=>"Piyo", 3=>"fuga"}
  6. {}

問題78

以下のコードの実行結果を考えて下さい。

h = {1 => "Hoge", 2=> "Piyo", 3=>"fuga"}
h.reject {|x, y| x < 2}
p h
  1. {2 => "Piyo", 3 => "fuga"}
  2. {1 => "Hoge", 2 => "Piyo", 3 => "fuga"}
  3. ["Piyo", "fuga"]
  4. ["Hoge", "Piyo", "fuga"]

問題79

以下のコードの実行結果を考えて下さい。

a = {"Foo" => "Hoge", "Bar" => "Piyo", "Baz" => "Fuga"}
b = {"Foo" => "hoge", "Bar" => "piyo", "Baz" => "fuga"}
p a.update(b).sort{ |a, b| a[1] <=> b[1] }
  1. [["Baz", "fuga"], ["Foo", "hoge"], ["Bar", "piyo"]]
  2. ["Baz", "Foo", "Bar"]
  3. { "Baz" => "fuga", "Foo" => "hoge", "Bar" => "piyo" }
  4. ["fuga", "hoge", "piyo"]

問題80

Dirクラスのクラスメソッドではないものを選びなさい。
1. Dir.pwd
2. Dir.extname
3. Dir.open
4. Dir.mkdir
5. Dir.rmdir
6. Dir.chdir

問題81

以下のコードは、ファイル test . txt を読み、文字を逆順に書き込む処理です。
「##AAA##」に入る適切な記述を選びなさい。

open("test.txt","##AAA##") do |f|
  data = f.read.chomp
  data.reverse!
  f.rewind
  f.write data
end
  1. a
  2. w
  3. r
  4. a+
  5. r+
  6. w+

問題82

以下の実行結果になるように、##AAA##に入る適切な記述を選びなさい。

puts File.##AAA## ("/","user","bin")

実行結果

/user/bin
  1. concat
  2. append
  3. +
  4. join
  5. add

問題83

以下のコードの実行結果を考えて下さい。

t1 = Time.gm(2010, 1, 1, 0, 0)
t2 = Time.gm(2010, 1, 1, 0, 1)
p t2 - t1
  1. 実行時エラー
  2. 1.0e-006
  3. 1.0
  4. 60.0
  5. 3600.0
  6. 86400.0

問題84

以下の実行結果になるように、##AAA##に入る適切な記述を選びなさい。

t = Time.local(2000,1,1)

実行結果

2000/01/01
  1. printf(("%Y/%m/%d"), t.year, t.mon, t.day)
  2. printf(("%Y/%m/%d") % t)
  3. print(t.format("%Y/%m/%d"))
  4. print(t.strftime("%Y/%m/%d"))

問題85

以下のコードの実行結果を考えて下さい。

puts 65.chr
puts "a".ord

問題86

以下のコードの実行結果を考えて下さい。

('a'..'z').to_a.shuffle[0..7].join

問題87

以下のコードの実行結果を考えて下さい。

val = 1
val ||= 2
puts val

val = nil
val ||= 2
puts val

問題88

以下のコードの実行結果を調べて下さい

require 'securerandom'

SecureRandom.urlsafe_base64
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up