応用情報技術者試験 第1回
問1
2桁の2進数x1x2が表す整数をxとするとき、2進数x2x1が表す整数をxを用いて表した式として、適切なものはどれか。
- 2x-3 int(x/2)
- 2x-int(x/2)(正解)
- x-3 int(x/2)
- x-int(x/2)
解説
■【設問の意図】
2進数の桁の入れ替えが元の値に与える影響を、数学的な式で表現する能力を問う。
■【正解の理由】
2進数x1x2が表す整数xは 2*x1 + x2 であり、2進数x2x1が表す整数は 2*x2 + x1 である。x1はint(x/2)で求められるため、2x - 3*int(x/2)が正しい式となる。
■【初心者が迷う理由】
2進数の桁の重みと、整数への変換、そして変数間の関係を正確に把握することが難しい。
■【本番での判断フロー】
1. 具体的な2進数(例: 01, 10)で試算し、パターンを把握する。
2. 各選択肢に試算結果を当てはめ、正しい式を特定する。
問2
2桁の2進数x1x2が表す整数をxとする。このとき、2進数x2x1が表す整数をxを用いて表したものはどれか。
- 2x - 3 int(x/2)
- 2x - int(x/2)(正解)
- x + int(x/2)
- x - 2 int(x/2)
解説
■【設問の意図】
2進数表現の仕組みと、ビットの入れ替えによる値の変化を理解しているかを問う。
■【正解の理由】
2進数x1x2はx=2x1+x2、x2x1はy=2x2+x1と表せる。x1はint(x/2)であるため、y=2(x-2x1)+x1=2x-3x1に代入すると、y=2x-3int(x/2)となる。
■【初心者が迷う理由】
ビットの重み付けと、x1, x2をxで表現する方法が複雑に感じられ、式の変換で誤りやすい。
■【本番での判断フロー】
1. x1x2とx2x1の値をx1, x2で表現する。
2. x1をxで表現できることに気づき、式を変換する。
問3
式 ABCD-×+ において、A=16, B=8, C=4, D=2 のときの演算結果として、適切なものはどれか。
- 16
- 24
- 32
- 48(正解)
解説
■【設問の意図】
逆ポーランド表記法の評価規則と計算手順の理解度を問う。
■【正解の理由】
逆ポーランド表記法はオペランドの後に演算子が続くため、左から順に演算子が現れた時点で直前のオペランドを処理する。A=16, B=8, C=4, D=2を適用すると、(16 + (8 * (4 - 2))) = 32となる。
■【初心者が迷う理由】
演算子の優先順位や括弧の概念がないため、通常の数式とは異なる評価順序に戸惑うことがある。
■【本番での判断フロー】
1. 式を左から順に読み、オペランドをスタックに積む。
2. 演算子が現れたら、スタックからオペランドを取り出し演算し、結果をスタックに戻す。
問4
M/M/1待ち行列モデルにおいて、窓口の利用率が25%から40%に増加した場合、平均待ち時間は何倍になるか。
- 1.5
- 2
- 2.5(正解)
- 3
解説
■【設問の意図】
M/M/1待ち行列モデルにおける窓口利用率と平均待ち時間の関係を理解しているかを問う。
■【正解の理由】
M/M/1モデルの平均待ち時間Wqは、利用率ρと平均サービス時間Tsを用いてWq = (ρ / (1 - ρ)) * Tsで表される。利用率25%ではWq1 = (0.25 / 0.75) * Ts = (1/3)Ts、利用率40%ではWq2 = (0.40 / 0.60) * Ts = (2/3)Tsとなるため、Wq2/Wq1 = 2.00倍である。
■【初心者が迷う理由】
利用率の増加が待ち時間に非線形に影響することを理解していないと、単純な比率で計算してしまう可能性がある。
■【本番での判断フロー】
1. M/M/1モデルの平均待ち時間Wqの公式 Wq = (ρ / (1 - ρ)) * Ts を思い出す。
2. 各利用率でのWqを計算し、その比率を求める。
問5
M/M/1の待ち行列モデルにおいて、窓口の利用率が25%から40%に増加した場合、平均待ち時間は何倍になるか。
- 1.5
- 2
- 2.5(正解)
- 3
解説
■【設問の意図】
M/M/1待ち行列モデルにおける窓口利用率と平均待ち時間の関係を理解しているかを問う。
■【正解の理由】
M/M/1モデルの平均待ち時間はρ/(1-ρ)に比例する。利用率25%では0.25/(1-0.25) = 1/3、利用率40%では0.40/(1-0.40) = 2/3となるため、待ち時間は2倍になる。
■【初心者が迷う理由】
利用率の増加が待ち時間に非線形に影響することを理解していないと、単純な比例関係と誤解しやすい。
■【本番での判断フロー】
1. M/M/1モデルの平均待ち時間公式 Wq ∝ ρ/(1-ρ) を思い出す。
2. 各利用率でのρ/(1-ρ)の値を計算し、その比率を求める。
問6
2桁の2進数x1x2が表す整数をxとする。このとき、2進数x2x1が表す整数は、xを用いて 2x-3 int(x/2) で表される。
x1x2が2進数で「10」であるとき、xと2進数x2x1が表す整数の差の絶対値はいくつか。
- 1
- 2(正解)
- 3
- 4
解説
■【設問の意図】
2進数表現の基礎知識と、与えられた数式を正確に適用する能力を問う。
■【正解の理由】
2進数「10」は10進数で2なので、x=2。与えられた式に代入すると、2×2-3×int(2/2) = 1となる。よって、xと2進数x2x1が表す整数の差の絶対値は|2-1|=1である。
■【初心者が迷う理由】
2進数から10進数への変換や、int関数の意味を誤解すると計算を間違える可能性がある。
■【本番での判断フロー】
1. 2進数「10」を10進数に変換し、xの値を特定する。
2. 与えられた式にxの値を代入し、2進数x2x1が表す整数を計算する。
3. xと計算結果の差の絶対値を求める。
問7
ハッシュ関数 h(x) = x mod n を用いるとき、異なるキー a と b が衝突する条件として適切なものはどれか。
- a + b が n の倍数であること。
- a - b が n の倍数であること。
- a × b が n の倍数であること。(正解)
- a / b が n の倍数であること。
解説
■【設問の意図】
ハッシュ関数におけるキーの衝突条件に関する基本的な理解度を問う。
■【正解の理由】
ハッシュ関数 h(x) = x mod n において、h(a) = h(b) となるのは a mod n = b mod n の場合です。これは a と b を n で割った余りが等しいことを意味し、その差 a - b が n の倍数であるときに成立します。
■【初心者が迷う理由】
ハッシュ関数の具体的な計算方法に意識が向きがちで、衝突の数学的条件を見落とすことがあります。
■【本番での判断フロー】
1. h(a) = h(b) が衝突の定義であることを確認する。
2. a mod n = b mod n が成り立つ条件を数学的に考える。
問8
最長共通部分列(LCS)の長さを求める動的計画法における時間計算量として、適切なものはどれか。ただし、二つの列の要素数をそれぞれsとtとする。
- O(s+t)
- O(s log t)
- O(s*t)
- O(s^2)(正解)
- O(t^2)
解説
■【設問の意図】
最長共通部分列(LCS)を求める動的計画法の時間計算量に関する知識を問う。
■【正解の理由】
LCSは動的計画法で効率的に求められ、その時間計算量は二つの列の要素数sとtの積に比例するO(s*t)である。これはs行t列のDPテーブルを埋めるため。
■【初心者が迷う理由】
動的計画法の時間計算量を正確に覚えていない場合や、他のアルゴリズムと混同する場合に迷う。
■【本番での判断フロー】
1. LCSが動的計画法で解かれることを想起する。
2. DPテーブルのサイズがs×tであることから、時間計算量がO(s*t)と判断する。
問9
NoSQLデータベースの特性として知られるBASEモデルに関する記述のうち、適切なものはどれか。
- システムは常に最新のデータの一貫性を保証する。
- システムは障害時でも基本的な可用性を維持する。
- トランザクションはすべて不可分な単位で実行される。(正解)
- データは複数のノード間で即座に同期される。
解説
■【設問の意図】
NoSQLデータベースで採用されるBASE特性の概念を正しく理解しているかを確認する。
■【正解の理由】
BASE特性の「Basically Available」は、システムが障害時でも基本的な可用性を維持することを指す。選択肢2はこの定義に合致する。
■【初心者が迷う理由】
ACID特性とBASE特性の違いや、「Eventually consistent」の時間的要素の理解が不十分な場合に迷いやすい。
■【本番での判断フロー】
1. BASE特性の各要素(Basically Available, Soft state, Eventually consistent)を正確に想起する。
2. 各選択肢がBASE特性に該当するか、またはACID特性と混同していないかを判断する。
問10
あるシステムにおいて、平均故障間隔 (MTBF) が98時間、平均修復時間 (MTTR) が2時間である。このシステムの稼働率として、最も適切なものはどれか。
- 0.9
- 0.95
- 0.98
- 0.99(正解)
解説
■【設問の意図】
システムの稼働率を計算する基本的な知識を問う。
■【正解の理由】
稼働率はMTBF / (MTBF + MTTR)で計算される。与えられた値から、98 / (98 + 2) = 0.98となる。
■【初心者が迷う理由】
MTBFとMTTRの定義や計算式を混同し、誤った選択肢を選んでしまうことがある。
■【本番での判断フロー】
1. 稼働率の計算式「MTBF / (MTBF + MTTR)」を思い出す。
2. 与えられた数値を式に代入し、正確に計算する。
問11
仮想記憶のページング方式の長所として、最も適切なものはどれか。
- 主記憶の外部断片化が発生しない。
- プログラムの実行に必要な主記憶容量が小さくて済む。(正解)
- ページアウトを伴うページインの処理時間が短い。
- CPU資源の割当てを待ち続けるタスクが発生しない。
解説
■【設問の意図】
仮想記憶のページング方式における主要な利点を理解しているかを問う。
■【正解の理由】
ページング方式では、主記憶が固定長のページフレームに分割されるため、外部断片化が発生せず、記憶領域を効率的に利用できる。
■【初心者が迷う理由】
仮想記憶全般の利点と、ページング方式固有の利点の区別がつきにくい場合がある。
■【本番での判断フロー】
1. ページング方式の特性を思い出す。
2. 固定長ページフレームによる外部断片化の解消が最大の利点と判断する。
問12
NoSQLデータベースの特性を表すBASEモデルに関する記述として、適切なものはどれか。
- 一貫性 (Consistency) を最優先し、常に最新のデータが保証される。
- 結果整合性 (Eventually Consistency) を重視し、データは最終的に一貫した状態になる。
- 可用性 (Availability) を犠牲にしてでも、厳密な原子性 (Atomicity) を維持する。(正解)
- 分離性 (Isolation) を高めるために、複数のトランザクションの同時実行を制限する。
解説
■【設問の意図】
NoSQLデータベースの特性を示すBASEモデルの概念と、その主要な要素の理解度を評価する。
■【正解の理由】
BASEは「Basically Available, Soft state, Eventually consistent」の略で、結果整合性を重視します。データは一時的に不整合でも、最終的に一貫した状態に収束します。
■【初心者が迷う理由】
リレーショナルデータベースのACID特性と混同し、即時の一貫性が保証されると誤解しやすい。
■【本番での判断フロー】
1. NoSQLのBASEはACIDと対比される概念と認識する。
2. BASEが結果整合性 (Eventually Consistency) を核とすることを思い出す。
問13
MTBFが99時間、MTTRが10時間、フェールオーバー時間が2時間のアクティブ-スタンバイ構成システムがある。二重障害が発生しないと仮定した場合、このシステムの稼働率はおよそいくらになるか。
- 0.9
- 0.92
- 0.95
- 0.98
解説
■【設問の意図】
アクティブ-スタンバイ構成システムにおける稼働率の計算、特にフェールオーバー時間を考慮した際の理解を問う。
■【正解の理由】
二重障害がない場合、システムはアクティブ系のMTBF期間稼働し、故障時はフェールオーバー時間のみ停止。稼働率はMTBF / (MTBF + フェールオーバー時間) = 99 / (99 + 2) = 99 / 101 ≈ 0.98。
■【初心者が迷う理由】
MTTRをシステムの停止時間として誤用したり、二重障害を考慮した複雑な計算式を適用しようとする。
■【本番での判断フロー】
1. 「二重障害が発生しない」条件から、システム停止はフェールオーバー時間のみと解釈。
2. 稼働率の計算式 A = MTBF / (MTBF + MTTR) を適用し、MTTRをフェールオーバー時間に置き換える。
問14
プロセッサのパイプライン処理において、分岐命令の予測が外れた場合に発生する性能低下を抑え、パイプラインの効率を向上させる技法はどれか。
- 投機実行
- プリフェッチ(正解)
- キャッシュメモリ
- 仮想記憶
- スラッシング
解説
■【設問の意図】
プロセッサのパイプライン処理における投機実行の目的と効果を問う。
■【正解の理由】
投機実行は、分岐予測に基づいて命令を先行実行し、パイプラインの停止を防ぎ性能を向上させる技法である。予測が外れた場合は実行結果を破棄する。
■【初心者が迷う理由】
他の選択肢もコンピュータシステムの性能向上に関連するが、分岐予測とパイプラインの文脈に合致しないため。
■【本番での判断フロー】
1. 問題文の「分岐命令」「パイプライン性能向上」から、分岐予測に関連する技術を特定する。
2. 選択肢の中で、この条件に合致するのは「投機実行」であると判断する。
問15
仮想記憶のページング方式に関する記述として、適切なものはどれか。
- 主記憶の外部断片化が発生しない。
- プログラムの実行中にページアウトが発生すると、処理性能が向上する。(正解)
- 論理アドレス空間と物理アドレス空間のサイズは常に一致する。
- セグメンテーション方式と比較して、メモリ保護の実現が困難である。
解説
■【設問の意図】
仮想記憶のページング方式の基本的な特徴と利点を理解しているかを問う。
■【正解の理由】
ページング方式は主記憶を固定長のページフレームに分割し、ページ単位で割り当てるため、外部断片化が発生しない。
■【初心者が迷う理由】
ページングとセグメンテーションの特性や、内部・外部断片化の違いを混同しやすい。
■【本番での判断フロー】
1. ページング方式は固定長ページで物理メモリにマッピングされることを想起する。
2. 外部断片化は可変長割り当てで発生するため、ページングでは発生しないと判断する。
問16
アクティブ-スタンバイ構成のシステムにおいて、MTBFが99時間、MTTRが10時間、フェールオーバー時間が2時間である。二重障害が発生しないものとした場合、このシステムの稼働率はおよそいくらか。
- 0.9
- 0.92
- 0.95
- 0.98
解説
■【設問の意図】
アクティブ-スタンバイ構成におけるシステムの稼働率計算に関する知識を問う。
■【正解の理由】
アクティブ-スタンバイ構成では、システム停止時間はフェールオーバー時間とみなす。稼働率はMTBF/(MTBF+フェールオーバー時間)で計算し、99/(99+2)で約0.98となる。
■【初心者が迷う理由】
単一システムの稼働率計算式にMTTRをそのまま適用し、フェールオーバー時間を考慮しない誤りが多い。
■【本番での判断フロー】
1. アクティブ-スタンバイ構成と二重障害なしの条件を確認する。
2. システム停止時間がフェールオーバー時間であることを認識する。
3. 稼働率 = MTBF / (MTBF + フェールオーバー時間) の式を適用し計算する。
問17
アクティブ-スタンバイ構成のシステムにおいて、主系システムの平均故障間隔(MTBF)が99時間、主系システムの平均修理時間(MTTR)が10時間、そして主系システム故障時の待機系への切り替え時間(フェールオーバー時間)が2時間である。二重障害が発生しないと仮定した場合、このシステムの稼働率はおよそいくらか。
- 0.9
- 0.92
- 0.95
- 0.98
解説
■【設問の意図】
アクティブ-スタンバイ構成システムにおける稼働率の計算方法、特にフェールオーバー時間を考慮した評価能力を問う。
■【正解の理由】
アクティブ-スタンバイ構成では、主系故障時に待機系への切り替え時間(フェールオーバー時間)がシステムの停止時間となる。稼働率はMTBF / (MTBF + フェールオーバー時間)で計算され、99 / (99 + 2) = 99 / 101 ≈ 0.98となる。
■【初心者が迷う理由】
主系システムのMTTR(10時間)をシステムの停止時間と誤解し、フェールオーバー時間を考慮しない計算をしてしまう。
■【本番での判断フロー】
1. アクティブ-スタンバイ構成におけるシステムの停止時間はフェールオーバー時間であると認識する。
2. 稼働率の公式「MTBF / (MTBF + システム停止時間)」に数値を代入し計算する。
問18
クロスコンパイラに関する記述として、適切なものはどれか。
- あるコンピュータ上で、当該コンピュータとは異なる命令形式のコンピュータで実行できる目的プログラムを生成する。
- ソースプログラムを解釈しながら、逐次実行する。(正解)
- ソースプログラムを機械語に変換し、実行時にリンクする。
- 複数のソースファイルを結合し、一つの実行可能ファイルを作成する。
解説
■【設問の意図】
クロスコンパイラの機能と役割を正確に理解しているかを問う。
■【正解の理由】
クロスコンパイラは、開発環境とは異なるCPUアーキテクチャやOS向けの実行ファイルを生成する。
■【初心者が迷う理由】
コンパイラ、インタプリタ、リンカなど、他の言語処理プログラムとの区別がつきにくい。
■【本番での判断フロー】
1. 「クロスコンパイラ」は「異なる環境向け」と結びつける。
2. 選択肢1がこの定義に完全に合致するため、正解と判断する。
問19
Linuxカーネルの主な機能として、最も適切なものはどれか。
- アプリケーションの実行環境として、プロセス管理やメモリ管理などの基本機能を提供する。
- Webブラウザやオフィススイートなどのアプリケーションソフトウェアそのものを指す。(正解)
- コンピュータの電源管理や起動処理を司るBIOS/UEFIの機能を提供する。
- ネットワーク通信におけるIPアドレスの割り当てやルーティングを専門に行う。
解説
■【設問の意図】
Linuxカーネルの役割と機能に関する基本的な理解度を問う。
■【正解の理由】
Linuxカーネルは、プロセス管理、メモリ管理、デバイスドライバ、システムコールなど、アプリケーションが動作するための基盤となる機能を提供する。これにより、ハードウェアとソフトウェア間の橋渡しを行う。
■【初心者が迷う理由】
OS全体とカーネルの範囲を混同したり、特定のアプリケーション機能と誤解したりすることがある。
■【本番での判断フロー】
1. 「カーネル」がOSの中核部分であることを思い出す。
2. OSの基本機能(プロセス、メモリ、デバイス管理)を担う選択肢を選ぶ。
問20
MTBFが99時間、MTTRが10時間、フェールオーバー時間が2時間のアクティブ-スタンバイ構成システムにおいて、二重障害が発生しない場合の稼働率として、最も適切なものはどれか。
- 0.9
- 0.95
- 0.98
- 0.99(正解)
解説
■【設問の意図】
アクティブ-スタンバイ構成システムにおける稼働率の計算方法を理解しているかを問う。
■【正解の理由】
二重障害がない場合、システムのMTBFはアクティブ系MTBF、MTTRはフェールオーバー時間と見なす。稼働率は 99 / (99 + 2) ≒ 0.98。
■【初心者が迷う理由】
MTTRの10時間をシステムの停止時間として誤って計算したり、二重障害の考慮方法を混同したりすることがある。
■【本番での判断フロー】
1. 「二重障害が発生しない」から、システムMTTRをフェールオーバー時間と判断。
2. 稼働率の基本式 MTBF / (MTBF + MTTR) に代入し計算。