基本情報技術者試験過去問 - 令和8年公開問題(科目B)

公開日2026年7月1日 受験者 :147,186人
問題数6問 合格者 :56,370人
合格率 :38.2%
公式PDF PDFファイル問題 PDFファイル解答   

問1
 次のプログラム中の [   ] に入れる正しい答えを,解答群の中から選べ。ここで,配列要素番号は 1 から始まる。

 次のプログラムは,整数型の配列 data の末尾の要素の値を先頭の要素に移動する。この際,末尾以外の各要素の値は,一つずつ後ろの要素に移動する。

プログラム
 整数型配列: data ← {1, 2, 3, 4, 5, 6, 7, 8, 9}
 整数型: top, i
 整数型: len ← dataの要素数
 top ← data[len]
 for (i を [   ] )
  data[i] ← data[i - 1]
 endfor
 data[1] ← top

解答群
2から len-1 まで1ずつ増やす
2から len まで1ずつ増やす
len-1 から2まで1ずつ減らす
len から2まで1ずつ減らす
答え設問1 エ 
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › プログラミング
解説
この問題は,通信路における「遷移確率」の考え方を問うものです。表では,入力が0のときに出力が0になる確率がa,出力が1になる確率がb,入力が1のときに出力が0になる確率がc,出力が1になる確率がdと表されています。ここで大切なのは,「入力が0だった場合,出力は必ず0か1のどちらかになる」という点です。つまり,確率の合計は必ず1になります。同様に「入力が1だった場合」も,出力は0か1のどちらかなので,その確率の合計も1になります。

これを式にすると,入力0の行についてはa+b=1,入力1の行についてはc+d=1となり,選択肢「イ」が正解です。「ア」のa+b+c+d=1は,4つすべてを足して1になるという誤った考え方です。「ウ」「エ」は,行ではなく列や斜めの組み合わせを足しており,確率の意味と合っていません。表の「行ごとに合計1になる」という性質を押さえておくことがポイントです。
問2
 次のプログラム中の [   ] に入れる正しい答えを,解答群の中から選べ。

 関数 complement は,引数として渡された8ビット型の値 x について,x に加算すると 00000000 になる値を返す。8ビット型の加算は,値を符号なし2進数とみなしたときの加算とし,桁あふれが発生したときのあふれた桁は無視する。演算子∧,∨,▽は,それぞれビット単位の論理積論理和排他的論理和を表す。

プログラム
○8ビット型: complement(8ビット型: x)
 8ビット型: y
 y ← [   ]
 y ← y + 00000001
 return y

解答群
x ∧ 01111111
x ∧ 11111111
x ∨ 01111111
x ∨ 11111111
x ▽ 01111111
x ▽ 11111111
答え設問1 カ 
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › プログラミング
解説
クイックソートでは,まず「基準値」(ピボット)を1つ選び,それより小さい値のグループと大きい値のグループにデータを分割します。そして,それぞれのグループの中で再び基準値を選んで同じように分割する,という操作を繰り返し,最終的に整列を完成させます。この考え方に一致するのが選択肢「ウ」です。

「ア」は「挿入ソート」の説明で,整列済みの部分に新しいデータを正しい位置へ挿入していく方法です。「イ」は「選択ソート」の説明で,未整列部分から最小値を探して並べる方法です。「エ」は「バブルソート」の説明で,隣り合うデータを比較・交換しながら並べ替える方法です。
問3
 次のプログラム中の [   ] に入れる正しい答えを,解答群の中から選べ。ここで,配列要素番号は 1 から始まる。

 関数 func1 に与える引数と,関数 func2 に与える引数とが同じとき,二つの関数は同じ値を返す。プログラムでは,配列の領域外を参照してはならないものとする。

プログラム
整数型: func1(整数型: n)
 if (nが2以下)
  return 1
 endif
 return 2 × func1(n - 2) + func1(n - 1)

整数型: func2(整数型: n)
 整数型配列: data ← {1, 1, 1}
 整数型: i

 /* nが3より小さいときは繰返し処理を実行しない */
 for (iを3からnまで1ずつ増やす)
  data[1] ← data[2]
  data[2] ← data[3]
  data[3] ← [   ]
 endfor
 return data[3]

解答群
2 × data[1] + data[2]
2 × data[2] + data[1]
2 × data[i - 1] + data[i - 2]
2 × data[i - 2] + data[i - 1]
data[3] + 2 × data[1] + data[2]
data[3] + 2 × data[2] + data[1]
data[3] + 2 × data[i - 1] + data[i - 2]
data[3] + 2 × data[i - 2] + data[i - 1]
答え設問1 ア 
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › プログラミング
解説
GPU」(Graphics Processing Unit)は,もともと画像・映像の処理を高速に行うために作られたプロセッサです。最大の特徴は,多数の演算ユニットを同時に動かす「並列処理」に優れている点です。3D画像の描画には大量の座標計算や色の計算が必要になりますが,GPUはこれらを一度に大量に処理できるため,高速な演算が可能です。したがって正解は選択肢「イ」です。

「ア」は「TPM」(セキュリティチップ)の説明,「ウ」は「FPGA」(構成を書き換え可能な集積回路)の説明,「エ」は量子コンピュータの量子ビットに関する説明であり,いずれもGPUとは異なる技術です。近年はGPUの並列処理能力がAI機械学習ディープラーニング)にも活用されている点も合わせて覚えておくとよいでしょう。
問4
 次のプログラム中の [ a ] と [ b ] に入れる正しい答えの組合せを,解答群の中から選べ。ここで,配列要素番号は 1 から始まる。

 単方向リストを,配列 dataList と配列 pointerList の二つの配列で表現する。 dataList にリストの要素の値を格納し,pointerList にリストの次の要素に対応する dataList の要素番号を格納する。単方向リスト の先頭は, dataList[1] 及び pointerList[1] の組みである。単方向リストの末尾に対応する pointerList の要素は未定義である。dataList のうち単方向リストの要素の値を格納していない要素と, 対応する pointerList の要素は未定義である。
 プログラムが扱う dataList 及び pointerList の内容を図 1 に示す。先頭の次の要素の要素番号は,pointerList[1] に格納された 3 であり,値は dataList[3] に格納された 20 である。その次の要素の要素番号は pointerList[3] に格納された 2 であり, 値は dataList[2] に格納された 30 である。

図1 dataList 及び pointerList の内容
要素番号12345
dataList  10  30  20  40   
要素番号12345
pointerList  3  4  2      
注記 網掛けはその要素が未定義であることを示す。


 関数 orderList は,図1 の dataList 及び pointerList で表現した単方向リストの値を,単方向リストの先頭からたどって順番に格納した配列を返す。関数 orderList が返す配列を図2 に示す。

図2 関数 orderList が返す配列
要素番号1234
dataList  10  20  30  40

プログラム
 大域: 整数型の配列: dataList ← {10, 30, 20, 40, 未定義の値}
 大域: 整数型の配列: pointerList ← {3, 4, 2, 未定義の値, 未定義の値}
 ○整数型配列: orderList()
  整数型: i, p ← 1
  整数型配列: linearList ← {} // 要素数0の配列
  for (i を 1 から dataListの要素数 まで 1 ずつ増やす)
   linearListの末尾 に dataList[p]の値 を追加する
   if ( [ a ] が 未定義)
    繰返し処理を終了する
   endif
   p ← [ b ]
  endfor
  return linearList

解答群
ab
dataList[p]i
dataList[p]pointerList[p]
pointerList[p]i
pointerList[p]pointerList[p]
答え設問1 エ 
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › プログラミング
解説
クラウドサービスの主な提供形態には,「SaaS」「PaaS」「IaaS」の3種類があり,この問題ではPaaSPlatform as a Service)についての理解が問われています。PaaSは,アプリケーションを開発・運用するために必要な土台(OSやミドルウェアなど)をサービスとして提供する形態です。利用者はその上でアプリケーションの開発・運用に専念でき,OSなどの基盤部分を自分で用意したり変更したりする必要はありません。この内容に合致するのが選択肢「イ」です。

「ア」はIaaS(インフラをサービスとして提供し,OSを含め比較的自由に設定できる形態)の説明です。「ウ」はクラウドサービスではなく自社でシステムを構築し運用のみ委託する形態(ハウジングサービスに近い)の説明です。「エ」はSaaS(アプリケーションそのものをサービスとして利用する形態)の説明です。「どこまで自分で用意するか」という視点で3つを比較すると整理しやすくなります。
問5
 次のプログラム中の [ a ] と [ b ] に入れる正しい答えの組合せを,解答群の中から選べ。ここで,配列要素番号は 1 から始まる。

 一つの要素だけが 1 で他の要素が 0 であるような整数型配列による表現を,本問ではOne-Hot表現という。関数 oneHotEncoding は,図のように,色の名前が格納されている要素数 1 以上の文字列型配列を引数として受け取り,配列に含まれる色の名前(図の例では3種類)に基づいて,各要素をOne-Hot表現に変換し,整数型配列の配列に格納して返す。関数 oneHotEncoding における変換の例を図に示す。

図 関数 oneHotEncoding における変換の例
引数の例: {"Red", "Green", "Blue", "Red"}
"Red"の One-Hot 表現: {1, 0, 0}
"Green"の One-Hot 表現: {0, 1, 0}
"Blue"のOne-Hot 表現: {0, 0, 1}

引数の例に対応する戻り値: {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}, {1, 0, 0}}

プログラム
○整数型配列の配列: oneHotEncoding(文字列型配列: colors)
 整数型: i, j, k
 文字列型配列: colorVector ← {} // 要素数0の配列
 整数型配列: tempVector
 整数型配列の配列: oneHotVector ← {} // 要素数0の配列

 /* 名前一覧の作成 */
 for (i を 1 から colorsの要素数 まで 1 ずつ増やす)
  if (colorVector の要素のいずれにも colors[i]の値 が格納されていない)
   colorVectorの末尾 に [ a ] を追加する
  endif
 endfor

 /* One-Hot表現への変換 */
 for (j を 1 から colorsの要素数 まで 1 ずつ増やす)
  tempVector ← {} // 要素数0の配列
  for (k を 1 から colorVectorの要素数 まで 1 ずつ増やす)
   if ( [ b ] )
    empVectorの末尾 に 1 を追加する
   else
    tempVectorの末尾 に 0 を追加する
   endif
  endfor
  oneHotVectorの末尾 に tempVector を追加する
 endfor
 return oneHotVector

解答群
ab
colors[i]の値colors の要素のいずれかに colorVector[k] の値が格納されている
colors[i]の値colors[j] が colorVector[k] と等しい
未定義の値colors の要素のいずれかに colorVector[k] の値が格納されている
未定義の値colors[j] が colorVector[k] と等しい
答え設問1 イ 
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › プログラミング
解説
この問題は仮想記憶方式に関するトラブル現象を問うものです。仮想記憶では,主記憶装置(メインメモリ)に収まりきらないデータ補助記憶装置ストレージ)との間で出し入れ(ページイン/ページアウト)しながら処理を行います。しかし,同時に処理するプログラムの数(多重度)を増やしすぎると,主記憶の容量が不足し,ページの入れ替えが頻繁に発生してしまいます。

その結果,本来の処理よりもページの出し入れに時間がかかり,システム全体の応答速度が急激に低下します。この現象を「スラッシング」と呼び,正解は選択肢「イ」です。「ア」は限られたメモリプログラムを分割して読み込む古い技法,「ウ」は断片化したメモリ領域を整理する処理,「エ」はプログラムを一時的に補助記憶に退避させる処理です。
問6
 A社は,従業員1,000名の広告代理店である。A社では,各部署がA社の社内ネットワークに設置したファイルサーバを,設置した部署の運用担当者が管理している。各部署で新たなクラウドサービスを利用する場合,各部署の責任者の承認のもと契約し,各部署の運用担当者が管理している。
 営業部では,営業部がA社の社内ネットワークに設置したファイルサーバ(以下,Yサーバという)及び顧客管理のためのクラウドサービス(以下,Zサービスという)を利用している。営業部の各従業員にはYサーバの一般利用者アカウントが割り当てられ,Yサーバ上の全てのファイルが編集可能である。また,営業部の各従業員には,Zサービスの一般利用者アカウントが割り当てられ,営業部の運用担当者には,YサーバとZサービスの管理者アカウントが割り当てられている。
 情報セキュリティ部門では,クラウドサービスに関連した情報セキュリティインシデントの発生に備えて,各部署で利用しているクラウドサービスログ管理に関するルールを図1のとおりに整備した。

1.ログの取得
次のログを取得すること
ログイン及びログアウトログ(以下,ログインログという)
クラウドサービスでの重要な操作及びその成否に関するログ
2.ログの項目
少なくとも次が記録されること
・対象のアカウント名,日本標準時での日時,操作内容
3.ログのアクセス管理
・運用担当者だけがログにアクセスできるようにすること
クラウドサービスからログエクスポートして保管する場合は,社内ネットワークに設置した自部署のファイルサーバログを保管し,運用担当者だけがアクセスできるようにすること
・運用担当者は複数名にすること
クラウドサービスへの運用担当者のログインには,2要素認証を必要とすること
4.ログの保存期間
・少なくとも過去1年間のログが参照できるようにすること
5.改ざんへの対策
ログは運用担当者でも書込み及び消去ができないようにすること
図1 各部署で利用しているクラウドサービスログ管理に関するルール

 営業部の情報セキュリティリーダーであるB課長は,運用担当者のC主任及び情報セキュリティ部門の協力を得て,図1のルールが順守されているかどうかを調査した。B課長は,Zサービスでの現在の運用の中で,図1のルールに違反しているものを表1のとおりまとめた。

表1 図1のルールに違反している現在の運用
項番現在の運用
(一)Zサービスのログは,空き容量が一定値以下になった場合,古いログから上書きされる。
(二)Zサービスの運用は,営業部のC主任とD主任の2名で担当していたが,D主任が先月退職したので,現在はC主任だけである。
(三)Zサービスのログの日時は,UTCで記録されている。
(四)Zサービスのログは,毎月末に全てエクスポートし,Yサーバに保管している。

設問 表1中の運用のうち,図1のルール3に違反しているものの項番だけを全て挙げた組合せを,解答群の中から選べ。

解答群
(一),(二)
(一),(二),(三)
(一),(二),(四)
(一),(三)
(一),(三),(四)
(一),(四)
(二),(三)
(二),(三),(四)
(二),(四)
(三),(四)
答え設問1 ケ 
分野 : テクノロジ系 › 技術要素 › セキュリティ › 情報セキュリティ管理
解説
この問題は,論理回路(ANDやOR,フリップフロップなどの組み合わせ)にA・Bの信号を入力したとき,出力Yがどのようなタイミングチャート(時間の経過に伴う信号の変化)になるかを問うものです。タイミングチャートの問題では,回路図を1つずつの素子(ゲート)に分解し,A・Bの信号がそれぞれの時点でどのような値(0または1)になっているかを追いながら,各ゲートの出力を順番に計算していくことが基本の解き方です。

正解の選択肢「イ」は,回路の各素子の動作(信号の伝わる順序や遅延)を正しく反映した波形になっています。「ア」「ウ」「エ」は,途中の信号変化のタイミングがずれていたり,A・Bの変化に対するYの反応が回路の論理と一致していなかったりするため誤りとなります。図や選択肢の画像を実際に見ながら,信号を1本ずつ追跡して確認する練習をすると理解が深まります。
ホーム画面への追加方法
1.ブラウザの 共有ボタンのアイコン 共有ボタンをタップ
2.メニューの「ホーム画面に追加」をタップ
閉じる