プログラミング学習を初めて間もない方用に試験をつくりました。
学習3ヶ月で正答率70%のラインに乗っていたらOKと思います。
経験が長い方も何かの時にお役立てください。
対象範囲:学習開始1〜3ヶ月
合格許容:正答率70%
制限時間:120分
1: Rubyアルゴリズム問題
記述:2問(共通問題1問+選択問題2問)
- 共通問題(1問必答)
- 年齢管理アプリ作成
メンバーの名前と年齢を管理できるアプリを作成します。
実装する機能は情報の「保存」「一覧表示」「年齢での検索」「アプリの終了」の4つです。
「アプリの終了」を選択するまで繰り返しメニュー画面を表示し続けるようにしてください。
回答には雛形を使用しても構いません。
rubyの知識を総動員し自分が最善と考えるコードを書いてください。
レビュー数:0
[0]メンバーを登録する
[1]メンバーの一覧を見る
[2]メンバーを年齢別に見る
[3]アプリを終了する
メンバーの名前を入力してください:
TsugumiHoge
年齢を入力してください:
26
[1] : TsugumiHogeの情報
[2] : KoichiTanakaの情報
[3] : ShizukaSakuraの情報
[4] : GeorgeNakamuraの情報
年齢を見たいメンバーの番号を入力してください:
1
名前 : TsugumiHoge
年齢 : 26
メンバーの年齢の範囲を設定してください。
何歳以上のメンバーを見ますか:
18
何歳以下のメンバーを見ますか:
30
該当するメンバーは以下のとおりです。
名前 : TsugumiHoge
年齢 : 26
----------------
名前 : GeorgeNakamura
年齢 : 24
----------------
名前 : ShizukaSakura
年齢 : 18
----------------
def post_member
puts "メンバーの名前を入力してください:"
member_name = gets
puts "年齢を入力してください:"
member_year = gets
# 入力された情報を保存する
end
def index_members
# メンバーの名前の一覧を表示する
puts "年齢を見たいメンバーの番号を入力してください:"
input = gets
# 入力された値に対応したメンバーの名前と年齢を表示する
end
def sort_members
puts "メンバーの年齢の範囲を設定してください。\n何歳以上のメンバーを見ますか:"
s_input = gets
puts "何歳以下のメンバーを見ますか:"
f_input = gets
# 入力された値に該当する年齢のメンバーだけを抽出し年齢降順に並び替える
# 該当するデータが存在しない場合に「該当するデータは存在しません。」と出力
# 該当するデータが存在する場合には「該当するメンバーは以下のとおりです。」と出力し一覧を表示する
end
def end_program
puts "ご利用ありがとうございました。"
exit
end
def exception
puts "無効な値です。もう一度入力してください。"
end
while true do
puts "メンター数:0" # 入力した情報の数に応じて変動させる
puts "[0]メンバーを登録する"
puts "[1]メンバーの一覧を見る"
puts "[2]メンバーを年齢別に見る"
puts "[3]アプリを終了する"
input = gets
if input == 0 then
post_member
elsif input == 1 then
index_members
elsif input == 2 then
sort_members
elsif input == 3 then
end_program
else
exception
end
end
- 選択問題(どちらかを選択)
- うるう年問題
- 耳の遠いおばあちゃん問題
■ うるう年問題
要件定義は以下のとおりです。なお今回雛形は存在しません。
①範囲の先頭と末尾の年を指定できる
②その間にあるすべてのうるう年を一行でputsする
③最後にうるう年がいくつあったか教えてくれる
④コードの目安は20行以内
この問題内におけるうるう年の定義は以下のとおりとします。
①4で割り切れる
②100で割り切れる年は400でも割り切れなければいけない
例: 1900年(400で割り切れないためうるう年ではない)
plz input start year
1800
plz input finish year
2015
----------------------
1804,1808,1812,1816,1820,1824,1828,1832,1836,1840,1844,1848,1852,1856,1860,1864,1868,1872,1876,1880,1884,1888,1892,1896,1904,1908,1912,1916,1920,1924,1928,1932,1936,1940,1944,1948,1952,1956,1960,1964,1968,1972,1976,1980,1984,1988,1992,1996,2000,2004,2008,2012
----------------------
there're 52 leap years.
----------------------
■ 耳の遠いおばあちゃん問題
要件定義は以下のとおりです。なお今回雛形は存在しません。
①おばあちゃんには全て大文字で話しかけない限り「WHAT!?」と、聞こえないフリをする
②全て大文字で話しかけると聞こえた気になり「NO! I'M 56 YEAR-OLD!」と叫ぶ
③叫ぶ言葉の年齢の部分は50歳〜80歳の間で毎回ランダムに変わるものとする
④3回連続で"BYE"と入力した時のみ「BYE-BYE, SUNNY!!」と返しアプリを終了する
⑤コードの目安は20行以内
SAY SOMETHING:
hi
WHAT!?
SAY SOMETHING:
hello
WHAT!?
SAY SOMETHING:
i said HELLO
WHAT!?
SAY SOMETHING:
HELLO
NO! I'M 53 YEAR-OLD!
SAY SOMETHING:
HUH
NO! I'M 50 YEAR-OLD!
SAY SOMETHING:
OK
NO! I'M 59 YEAR-OLD!
SAY SOMETHING:
BYE
NO! I'M 53 YEAR-OLD!
SAY SOMETHING:
BYE
NO! I'M 54 YEAR-OLD!
SAY SOMETHING:
BYE
BYE-BYE, SUNNY!
(アプリの終了)
2: HTML/CSS問題
短答:全10問必答
HTML/CSSに関する短答問題です。
10個の設問に対し具体的かつ簡潔に答えてください。
回答の際にはどの質問に対する答えか明確にわかるよう記述してください。
-
HTML問題
- imgタグに付与する
alt属性
はどのような役割を持つか. -
<%= link_to "一覧画面へ", "/tweets" %>
という記述をindex.html.erb
に記述した場合どのようなHTMLに変換されるか. - フォームを生成するタグに指定する
type属性
・name属性
・placeholder属性
の役割を具体例と共に示せ. - インライン要素とブロック要素とは何か.具体例と共に示せ.
-
<br />
のようにタグ内部にスラッシュを使用する場合の目的は何か. -
HTMLで水平線は「 <hr> 」のように記述できます
という説明文をHTMLファイルにそのままコピペしても勝手に文章中に水平線が挿入されてしまうがその解決策を示せ.
- imgタグに付与する
-
CSS問題
-
colorプロパティ
の値を#000
と設定したがこれは何色か. - セレクタに
a:hover
と指定したがこれはどのような指定をしているか. - ヘッダーを画面上部に固定したい.どのようなプロパティと値を指定すればよいか.
-
li要素
にデフォルトで付与される点を消して表示したい場合どのようなプロパティと値を設定すべきか.
-
3: Rails論述問題
論述:4問(共通問題2問+選択問題5問)
Ruby on Railsに関係する論述問題です。
共通問題2問は必答です。選択問題は5個の内、2個を選択し明記した上で回答してください。
より具体的な使用例や用語等用いて、必要十分と考える説明を論述してください。
-
共通問題(2問必答)
-
MVC
とは何か.具体的に説明せよ. - Modelが
ActiveRecord::Base
を継承していることで何を実現しているのか.具体例を用い説明せよ.
-
-
選択問題(2問選択)
-
callback
とは何か.具体例を用いて説明せよ. -
has_many throughオプション
とpolymorphic association
の違いと具体的な使用例を示せ. - ルーティングにおける
resources
の7つのアクションについて全て挙げそれぞれ用途を示せ. - メソッドに
method(*arg)
のようにアスタリスク付きの引数を設定するとどのようなことが実現できるか. - Modelでアソシエーションに対し
orderオプション
を使用する際にはlambda
を使用する.それはなぜか.
-
※ 時間よりも早く所定の回答が完了した場合は可能な限り多くの問題に答えてください。
テストは以上です。
解答編はこちらのエントリーで公開しています。