プログラミング，
データ構造とアルゴリズム，オペレーティングシステム，コンピュータアーキテクチャ，コンピュータネットワーク，データベースシステム
６科目の中から３科目を選択
１２０分＜注意事項＞
・試験開始の合図があるまで，問題・解答冊子の中をみてはいけません．
・試験監督者の指示に従って，下の記入欄に受験番号と氏名を記入しなさい．
受験番号

氏名

・６科目の中から３科目を選び，解答しなさい．
科目

ページ科目① プログラミング

２～８

科目② データ構造とアルゴリズム

９～１０

科目③ オペレーティングシステム

１１～１３

科目④ コンピュータアーキテクチャ

１４～１６

科目⑤ コンピュータネットワーク

１７～１９

科目⑥ データベースシステム

２０～２１

・試験中に，問題・解答冊子の落丁や印刷不鮮明などの問題に気づいたときは，手を高く上げて知らせなさい．
・不正行為に対しては厳正に対処します．
・試験中は試験監督者の指示に従うこと．

1

科目①プログラミング

プログラミングは，ページ２からページ８まで

科目①「プログラミング」では、以下の問題１、問題２のうち、いずれか１つに解答しなさい．
問題１．以下に示す Python で記述された＜プログラム＞は，入力した整数を素因数分解し，出力するものである．
＜実行例＞を参考に＜プログラム＞中の空欄(a)～(j)に入る適切なものを各解答群のア～オより一つ選びなさい．
＜実行例＞
次ページに示す＜プログラム＞を factorization.py というファイル名で保存し，実行したものである．
C:\Users\Fuku\>python factorization.py
整数を入力してください：120
素因数分解の結果は以下の通りです
2の3乗3の1乗5の1乗

C:\Users\Fuku\>python factorization.py
整数を入力してください：1000
素因数分解の結果は以下の通りです
2の3乗5の3乗

2プログラミング

科目①＜プログラム＞(a)(b)

def main():n = int((c)("整数を入力してください："))fn = factorization(n)print("\n 素因数分解の結果は以下の通りです")for f in fn:
print((d)"{f[0]}の{f[1]}乗")def factorization(n):fact =(e)for i in range(2, math.ceil(math.sqrt(n))):
if n % i == 0:
ct = 0while n % i == 0:
ct += 1n(f)ifact.append([i, ct])
if n != 1:
fact.append((g))

(h)
(i)

__name__ == "__main__":
(j)
()

3

プログラミングは，ページ２からページ８まで

科目①

プログラミング

プログラミングは，ページ２からページ８まで(a)に関する解答群
ア region
イ using
ウ import
エ include
オ pragma(a)(b)に関する解答群
ア io
イ randウ outputエ mathオ system(b)(c)に関する解答群
ア input
イ print
ウ getsエ readline
オ println!

(c)(d)に関する解答群
ア @
イ \
ウ s
エ *
オ f(d)(e)に関する解答群
ア ();
イ [];
ウ {};
エ <>;
オ ||;

(e)

(f)に関する解答群
ア ++=
イ --=
ウ **=
エ //=
オ %%=

(f)

(g)に関する解答群
ア (n, 1)
イ <n, 1>ウ {n, 1}エ [n, 1]
オ n, 1

(g)

4

科目①

プログラミング

プログラミングは，ページ２からページ８まで(h)に関する解答群
ア i += 1
イ factorization(fact)
ウ breakエ return fact
オ continue(h)(i)に関する解答群
ア fn
イ //
ウ if
エ df
オ le(i)(j)に関する解答群
ア mainイ beginウ beginPlay
エ factorization
オ start(j)5

プログラミングは，ページプログラミング

科目①

２からページ８まで

問題２（１）Java について，次の問いに解答しなさい．
次の記述が正しければ ○ を、間違っていれば × を ( ) に記入しなさい。
() 抽象クラスはインターフェイスを実装しないとオブジェクト（インスタンス）を作成できない。

() メソッドの引数でクラスのインスタンス変数を渡す場合、「参照渡し」となる。

() Java は Unix や Linux でコンパイルできる。

() Java のソースをコンパイルすると、実行ファイル(*.exe)が作成される。

() スレッドは try～catch で処理することができない。

() Boolean 型の変数は true か false の値しか代入できない。

() クラスを継承する場合、親クラスを２個以上持つことができる。

() クラスの「コンストラクタ」は引数がない。

() 継承されるクラス（親）をスーパークラス、新しく作成したクラス（子）をサブクラスと呼ぶ。

() Math.random()はインスタンスメソッドである。

（２）Java について，次の問いに解答しなさい．
以下の文章中の空欄で、適切な語句を選んで記号をに記入しなさい。

１．
「class Cake extends Sweets{」とクラスの定義を行う場合、Sweets は、Cake はと呼ぶ。
ア）サブクラスイ）セカンドクラスウ）スーパークラス

２．プログラムの実行中に発生するエラーに対して行う処理を

エ）ペアレントクラスオ）スペシャルクラスといい、エラーが発生する可能性のある処理をブロックに記述し、エラーが発生した場合に備える。
ア）拡張処理イ）並列処理ウ）例外処理エ）errorオ）catch３．クラスのメンバのアクセス制御について、アクセス制限が最も厳しいのはア）publicイ）protectedウ）private４．変更可能な文字列のデータを処理したい場合はア）Characterオ）Stringイ）Characteredエ）voidカ）tryキ）finallyである。
オ）static

クラスのインスタンスを使う。
ウ）StringBufferエ）StringBufferedカ）Stringed

５．名前が同じで引数の形式が異なるメソッドをあるクラスに複数定義することを同じメソッド名で上書きすることをア）マルチメソッド

イ）マルチロードといい、親クラスのメソッドをという。
ウ）オーバーロード6エ）オーバーライドオ）マルチライド

科目①

プログラミング

プログラミングは，ページ２からページ８まで（３）Java について，次の問いに解答しなさい．
１．下記の表示結果は 0.25 にならない。その理由を説明しなさい。

double a = 1/4;
System.out.println( a );２．下記を実行すると、num には乱数が代入される。num に入る可能性のある値をすべて答えなさい。

int num = (int)(Math.random()*6 + 1);

３．三角関数の cos(60 度)を計算して変数 a に代入しようとしている。

double a = Math.cos(60.0);と記述して実行して、a には 0.5 (コサイン 60 度のとき a に 1/2)が代入されると思っていたのに、実際は -0.95241… のような数値が代入された。この理由を説明しなさい。

7

科目①

プログラミング

プログラミングは，ページ２からページ８まで

４．下記の実行結果を記述しなさい。また、なぜそうなるのかを簡単に説明しなさい。

for(int i=0;i<10;i++){if( i%2==0 ) continue;
System.out.print( " " + i );}５．下記の処理を (1) score = 99, (2) score = 80, (3) score = 73, (4) score = 69 で実行すると、それぞれの結果は何が表示されるのかを答えなさい。記述例: (1)不可、(2)可、(3)秀、(4)良if( score<60 ){System.out.println("不可");}else if( score<70 ){System.out.println("可");}else if( score<80 ){System.out.println("良");}else if( score<90 ){System.out.println("優");}else{
System.out.println("秀");
}

8

科目②

データ構造とアルゴリ データ構造とアルゴリズム

は，ページ９からページ１ズム

０まで

以下の問題にすべて解答しなさい．
問題１．サイズ𝑛の配列を用いたハッシュテーブルを考える。開番地法、すなわち空いている場所が見つかるまで格納場所のインデックスを 1 ずつ増やしていく方法で、ハッシュの衝突を回避する。また、ハッシュ関数はハッシュキーを 𝑛 で割った剰余とする。
ハッシュテーブルに値を登録する関数: addHash(array hash, int key, int value)
ハッシュテーブルから値を読みだす関数: getHash(array hash, int key)
ハッシュテーブルから値を削除する関数: remHash(array hash, int key)が定義されている。
𝑛 = 12とし、配列 hash には初期状態では下図のようにすべて null が入っているものとする。

（１）つぎの for 文
for (int i = 0; i < 45; i+=8){
addHash(hash, i, i);}を実行した後のハッシュテーブルを図示しなさい。また、ハッシュの衝突は何回起きたか。
[解答]

9

科目②

データ構造とアルゴリ データ構造とアルゴリズム

は，ページ９からページ１ズム

０まで（２）ハッシュテーブルから値を削除する remHash は key の値を単純に削除するだけでは正しく動作しない理由を説明し、簡潔に実現するためのハッシュテーブルのデータ格納方法を説明しなさい。

（３）ハッシュテーブルのリハッシュ操作について説明しなさい。

10オペレーティングシス オペレーティングシステム

科目③は，ページ１１からページテム

１３まで以下の問題にすべて解答しなさい．
問題１．オペレーティングシステム内におけるプロセスは 3 つの状態で存在し，下の図のようにあらわされる．

図．プロセスの 3 状態
（１）実行状態:すべての実行に必要なリソースを獲得し実行中の状態
待ち状態:CPU 以外のリソースの不足，もしくは他のプロセスからのデータ待ちである
残るもう一つの状態の名称と内容を記述しなさい．
（）状態

内容:

（２）実行中のプロセスは，この三状態を遷移する．それぞれの状態を遷移する条件を次に示す．
各条件の番号を図中に書き込みなさい．
① プロセスがスーパーバイザコールを実行したときや，実行に必要な CPU 以外のリソースを失ったとき② CPU 以外の実行に必要なリソースを確保できた場合や，オペレーティングシステムに依頼したスーパーバイザコールが終了したとき③ CPU スケジューラによって CPU リソースが割り当てられたとき④ 実行優先度の高いプロセスの割込みや，自プロセスに割り当てられた CPU 利用可能時間を使い切ったとき

11オペレーティングシス オペレーティングシステム

科目③は，ページ１１からページテム

１３まで

問題 2．以下の表に 3 つのプロセスの処理時間と，プロセスがオペレーティングシステムに到着し，待ち行列に追加された時刻を示す．ここでターンアラウンドタイムとはプロセスの到着時刻から処理終了時刻までの時間である．
ラウンドロビンスケジューリング（クオンタムは 1 秒とする）を用いた場合の，それぞれのプロセスのターンアラウンドタイムと平均ターンアラウンドタイムを求めなさい．
表．プロセスの到着時刻と処理時間
プロセス名

処理時間[秒]

到着時刻[秒]A120B

134C6612オペレーティングシス オペレーティングシステム

科目③は，ページ１１からページテム

１３まで

問題 3．ページングによる仮想記憶システムにおいて，ページ置き換えアルゴリズムとして，FIFO（到着順ページ置き換え）アルゴリズムを用いた場合の最終のページテーブルの内容とページフォールト回数を示しなさい．
なお主記憶は 4 ページ，ページはプログラム中「0 1 2 3 4 2 5 3 1 6」の順で参照されるものとする．また，最初は主記憶にどのページもロードされていないものとする．
ページ参照列

0123

40*

000

4*

1*

1

1

12*

223*

3253

16

ページフレーム
0123*ページフォールトの発生
図．FIFO アルゴリズムによるページ置き換え

13コンピュータアーキテ コンピュータアーキテクチ

科目④ャは，ページ１４からペークチャ

ジ１６まで

以下の問題にすべて解答しなさい．
問題 1．
（1）2 進数の 01001010(2)と2 進数の 00110010(2)を加算し，10 進数に基数変換した値を答えなさい．

（2）10 進数の－56(10)を 2 進数の 2 の補数で表現しなさい．

（3）2 進数の 11011000(2)を右に 3bit 算術シフトした時の値を 2 進数で答えなさい．

（4）16 進数の A5E(16)を 10 進数に基数変換した値を答えなさい．

14

科目④

コンピュータアーキテ コンピュータアーキテクチ

ャは，ページ１４からペー

クチャ

ジ１６まで

問題 2.
（1）コンピュータの五大装置を全て答えなさい．

（2）コンピュータの五大装置の各装置の具体的な装置と役割を説明しなさい．

15

コンピュータアーキテ コンピュータアーキテクチ

科目④

ャは，ページ１４からペー

クチャ

ジ１６まで

問題 3.
次の問いに解答しなさい．
（1）メモリの一種である DRAM がどのように 1 ビットを記憶するのかと共に，どのように記憶状態を維持するのか説明しなさい．

（2） 動作クロック周波数が 1.5 GHz の CPU で，命令実行に必要なクロック数及びその命令の出現率が，次の表 1に示す値である場合の CPU の性能を MIPS 単位で求めなさい．
表 1 命令実行に必要なクロック数と出現率
命令の種別

命令実行に必要なクロック数

出現率（%）

無条件分岐

810

メモリ・レジスタ間演算

650

レジスタ間演算

34016コンピュータネットワ コンピュータネットワーク

科目⑤は，ページ１７からページーク

１９まで

以下の問題にすべて解答しなさい．
問題１．
以下の表は代表的なウェルノウンポート番号とプロトコル名および簡単な説明を記したものである。空欄の(１)～(10)に適切と思われるものを選択肢から選び、記号を記入しなさい。

ポート番号

プロトコル名

内容

20,21

(３)

(７)

25

(４)

(８)

53

(５)

(９)

(１)

HTTP

(２)

(10)

(６)

電子メールの取得(１) ～ (２) の選択肢
ア）24イ）25ウ）64エ）80オ）90カ）100キ）110オ）FTPカ）RIPキ）IMAP(３) ～ (６) の選択肢ア）SMTPイ）ARPウ）DHCPエ）NTPク）DNSケ）LDAPコ）HTTPサ）SNMPシ）PPPス）POP3セ）ICMP(７) ～ (10) の選択肢
ア）正確な時刻の同期オ）遠隔認証イ）電子メールの同期

カ）ドメイン名の名前解決

ケ）電子メールの配送・転送ウ）IP アドレスの貸与

エ）MAC アドレスの取得

キ）ネットワーク機器を監視する

コ）リモート接続の認証

ク）ファイルの転送サ）Web サービスの提供

17

コンピュータネットワ コンピュータネットワーク

科目⑤は，ページ１７からページーク

１９まで

問題２．
以下の図について、以下の問いに答えなさい。
１．端末(5)を新しくネットワーク B に追加したい。
ネットワークが利用できるように正しい設定を選んでア)～カ)を記入しなさい。
・IP アドレスの設定はである。

ア）172.16.2.24

イ）172.16.2.1ウ）172.16.2.255

エ）192.168.1.24

オ）192.168.1.1 カ）192.168.1.255
・サブネットマスクはである。

ア）255.255.0.0

イ）255.255.0.24

ウ）255.255.255.24

エ）255.255.255.0

オ）255.255.255.254 カ）255.255.255.255
・デフォルトゲートウェイはア）192.168.1.0である。

イ）192.168.1.1

ウ）192.168.0.1

エ）192.168.0.0

オ）192.168.1.24

２．ネットワーク A に DHCP サーバが設置されているが、ネットワーク B には設置されていないとする。以下の説明文で正しいものを１つ選びなさい。

答え）ア）ネットワーク B に新しい PC を参加させる場合、DNS サーバの設定を行えば利用可能となるイ）ネットワーク A に新しい PC を参加させる場合、「IP アドレスを自動的に取得」の設定で利用可能となるウ）ネットワーク B では、どのような設定をしてもネットワーク A の DHCP サーバを利用するのは不可能である
エ）ネットワーク A の DHCP サーバは、172.16.2.1～172.16.2.255 のいずれかの IP アドレスを割り当てる
３．ネットワーク B の端末(3)からブローキャストアドレス宛にパケットを送信した場合の説明文で、正しいものを１つ選びな
さい。 答え）ア）パケットは端末(4)には届くが、端末(1)には届かないイ）パケットはネットワーク A のすべての端末に届けられるウ）パケットは端末(1)には届くが、端末(4)には届かないエ）パケットはネットワーク A とネットワーク B のすべての端末に届けられる

18

科目⑤

コンピュータネットワ コンピュータネットワーク
は，ページ１７からページーク

１９まで

問題３．
１．HTTP と HTTPS の違いについて説明しなさい。

２．POP3 と IMAP の違いを説明しなさい。

３．DNS とは何かを説明しなさい。

４．ブロードキャストアドレスとは何かを説明しなさい。

５．サーバーで、開けておくと攻撃がされやすいポートの番号を２つ挙げて、そのプロトコルも答えなさい。

６．IP アドレスと MAC アドレスについて違いを説明しなさい。

７．ネットワークにおける冗⾧性とは何かを説明しなさい。

８．オクテットとバイトの違いを説明しなさい。

９．IP アドレスに関して、「CIDR」を用いるとどういう良いことがあるかを述べなさい。

１０．ssh とは何かを説明しなさい。

19

科目⑥

データベースシステム

データベースシステムは，ページ２０からページ２１まで以下の問題にすべて解答しなさい．
問題１．実体関連図（ER 図）について、次の問いに解答しなさい。
（１） 「学生」と「学校」という２つの実体について、その間の関連も含めて実体関連図（ER 図）を図示してください。

（２） 実体関連図（ER 図）を使用することのメリットを説明しなさい。

問題２．
「id」と「name」という 2 つの属性を持つテーブル T を定義する SQL 文を書きなさい。ただし、id は整数、name は文字列であるとする。

20

科目⑥

データベースシステム

データベースシステムは，ページ２０からページ２１まで

問題３．トランザクションについて、トランザクションの有用性や ACID 特性を説明しなさい。

問題４．次の SQL 文は、何を行う SQL 文であるかを説明しなさい。
SELECT * FROM T ORDER BY id;

21