Rubyがミニツク

あなたのRubyの技術に関するより詳しい知識と理解を増やします。

Ruby技術者認定試験(Silver)対策コース

このコースについて

このコースでは、Ruby技術者認定試験(Silver)に合格できるだけのRubyの知識を得ることを目的としています。Ruby技術者認定試験とは、Rubyによるシステム開発をおこなう能力を技術者が持っているかを公平に評価するためのRubyアソシエーションの認定試験制度です。

コンテンツ一覧

ヒント レッスンの名前をクリックすると、その内容を表示します。

次のレッスン ホームへ戻る

Ruby技術者認定試験(Silver)対策問題集5

コンテンツ概要

Ruby技術者認定試験(Silver)を前提とした試験対策問題を解き、認定試験合格を目指しましょう。本問題集では、疑似的な試験問題を出題し、実際の試験を受ける際のトレーニングを積むことができます。この問題集はRubyの組み込みクラスであるIOクラス、Fileクラス、Dirクラスについて学習します。なお、特に断りの無い限り、Rubyのバージョンは1.8.7を前提とします。

このドリルは14問の問題があります。


はじめる

問題

以下のプログラムの実行結果はどれでしょうか。

プログラム:

# 行区切りの帽子の型のリストが内容のファイルを作成する
File.open("hats.txt", "w") do |f|
  f.puts(%w[Bowler Deerstalker Dunce\ cap Fedora Fez])
end

File.open("hats.txt") do |f|
  4.times { f.gets() }
  puts f.gets
  puts f.readline
end

選択肢を選ぶ

(d) 標準出力に"Fez\n"を出力した後、"nil"を出力する

(a) 標準出力に"Fez\n"を出力した後、"Bowler\n"を出力する

(b) 標準出力に"Fedora\n"を出力した後、"Fez\n"を出力する

(c) 標準出力に"Fez\n"を出力した後、EOFError例外が発生して処理が終了する


次の問題へ進む

問題

次に示す内容を持つファイルの"authors.txt"があるとすると、以下のプログラムの出力は何でしょうか。

Authors.txt:

Kawabata
Hemingway
Kafka

プログラム:

File.open("authors.txt") do |file|
  2.times { file.gets }
  file.lineno = 0
  puts file.gets
end

選択肢を選ぶ

(d) nil

(c) Kafka

(a) Kawabata

(b) Hemingway


次の問題へ進む

問題

4つの選択肢のうち、以下のプログラムを実行した後に返すものとして正しいのはどれでしょうか。

プログラム:

file = File.open("hello.rb", "w")
stat = file.stat
mtime1 = stat.mtime
file.puts("new data")
file.flush
mtime2 = stat.mtime

選択肢を選ぶ

(d) file.mtimeは変更されない。

(c) mtime1 == mtime2

(a) mtime1 > mtime2

(b) mtime1 < mtime2


次の問題へ進む

問題

以下のプログラムを実行させた後の"program.rb"の内容はどれでしょうか。

プログラム:

File.open("program.rb", "w") do |f|
  f.puts("=begin\n  A Ruby program \n=end")
end

選択肢を選ぶ

(c) ファイルの内容は以下になる。

=begin
  A Ruby program
=end

(d) ファイルは空になる。

(a) ファイルの前の内容に続いて、以下が入る。

=begin
  A Ruby program
=end

(b) ファイルの前の内容は変更されない。


次の問題へ進む

問題

以下の選択肢のうち、ファイルのタイムスタンプを調べる正しい方法ではないものはどれでしょうか。

選択肢を選ぶ

(b) File.stat(filename).atime

(a) File.ctime(filename)

(d) File::Stat.atime(filename)

(c) File.open(filename).mtime


次の問題へ進む

問題

以下のプログラムの(A)に入れる適切な選択肢を選び、問題と同じ出力結果になるプログラムにしてください。出力結果は#=>で表示しています。

プログラム:

puts File.read("readme.txt") #=> apples
File.open("readme.txt", (A)) do |f|
  f.write(" bananas")
end
puts File.read("readme.txt") #=> apples bananas

選択肢を選ぶ

(b) a+

(a) a

(c) "w"

(d) "a"


次の問題へ進む

問題

"tmp"ディレクトリが現在の作業ディレクトリに存在していないと考えた場合、どのぐらい"rocking.rb"ファイルが以下のプログラムを実行しているあいだに作成されるでしょうか。そして実行終了後にどのぐらい残っているでしょうか。

プログラム:

["tmp", "tmp/lang",  "tmp/lang/ruby", "tmp/lang/python"].each do |dir|
  Dir.mkdir(dir)
end
Dir.chdir("tmp/lang")
Dir.new(".").each do |entry|
  filename = File.join(entry, "rocking.rb")
  File.open(filename, "w")
end
Dir.rmdir("python")

選択肢を選ぶ

(b) 2つ作成して、2つ残る

(a) 2つ作成して、1つ残る

(d) 4つ作成して, 4つ残る

(c) 4つ作成して、3つ残る


次の問題へ進む

問題

以下のプログラムの(A)に入れる適切なものを選択し、指定した出力を生成するプログラムにしてください。

プログラム:

["bin/hallo.py", "ola.lua", "/tmp/hej.cpp"].each do |filename|
  puts (A)
end

出力結果:

  #=> hallo.rb
  #=> ola.rb
  #=> hej.rb

選択肢を選ぶ

(a) File.basename(filename) + ".rb"

(b) File.basename(filename, ".*") + File.extname($0)

(d) File.basename(filename, ".*") + "rb"

(c) File.basename(filename, ".*") + ".rb"


次の問題へ進む

問題

File.extnameメソッドとFile.basenameメソッドとFile.dirnameメソッドの返す値の共通のクラスはどれでしょうか。

選択肢を選ぶ

(b) IO

(c) File

(d) Dir

(a) String


次の問題へ進む

問題

Rubyの組み込みのFileクラスでファイルのタイムスタンプを読み込むメソッドに対応しないメソッド名を選択してください。

選択肢を選ぶ

(a) atime

(c) ctime

(b) btime

(d) mtime


次の問題へ進む

問題

以下のプログラムの(A)に入れる適切な選択肢を選び、プログラムが指定された出力を生成するようにしてください。

プログラム:

# 太陽系の惑星のリストの内容を持つファイルを作成する
File.open("planets.txt", "w") do |f|
  f.puts(%w[Mercury Venus Earth Mars Jupiter Uranus Neptune])
end
f = File.open("planets.txt")
(A)

出力結果:

"Mercury\nVenus\nEarth"

選択肢を選ぶ

(a) p f.gets("Mars")

(c) p f.read(3)

(d) p f.readlines("Pluto")[0]

(b) p f.readline("Earth")


次の問題へ進む

問題

次に示すプログラムで、(1)と(2)の代わりにメソッド呼び出しで必要とされ、出力結果を生成すると考えられるものはどれでしょうか。

出力結果:

R u b y
u
b
y

プログラム:

File.open("fancy.txt", "w") do |f|
  f.(1)("R u b y\n")
  f.(2)(["u","b","y"])
end
puts File.read("fancy.txt")

選択肢を選ぶ

(b) write, puts

(d) puts, print

(c) write, print

(a) puts, write


次の問題へ進む

問題

4つの選択肢のうち、以下のプログラムの出力を表しているものはどれでしょうか。

プログラム:

p File.join("pocahontas", "tepee.rb")

選択肢を選ぶ

(d) #

(c) #

(b) "pocahontas/tepee.rb"

(a) #


次の問題へ進む

問題

4つの選択肢のうち、次のプログラムを実行した時の出力に対応したものはどれでしょうか。

プログラム:

p File.split("/home/john/bookmarks/").join

選択肢を選ぶ

(d) "/home/johnbookmarks"

(c) "/home/john/bookmarks/"

(b) "/home/john/bookmarks"

(a) "homejohnbookmarks"


次のレッスン ホームへ戻る