新制度・基本情報技術者試験の過去問(公開問題)からわかる難易度と対策


2023-07-19 更新

2023 年 7 月 6 日に、情報処理推進機構の Web ページで、令和 5 年度の基本情報技術者試験の公開問題が公開されました。 試験対策講座の講師として、誠に勝手ながら、公開問題の講評をさせていただきます。

今後、基本情報技術者試験を受験される人の参考になれば幸いです。

公開問題の内容

今回公開された公開問題の内容は、科目 A が 20 問だけで、科目 B が 6 問だけです。 実際の試験は科目 A が 60 問で、科目 B が 20 問なので、かなり少なくなっています。

「公開問題を作る費用を節約するためか?」
「公開問題の問題数を多くすると、実際の試験と著しく一致してしまうことがあり、それを避けるためか?」
「 1 年間に何度か公開問題を公開して、トータルで 1 回分にするのか?」

理由はわかりませんが、とにかく、情報処理推進機構が「これが試験問題の具体例だ!」として正式に公開したものなので、試験対策の重要な資料です。

図 1 に公開問題の内容を示します。

難易度は、筆者の講師経験から、

A
受講者のほぼ全員ができるもの
B
半数ぐらいができるもの
C
ほとんどができないもの

としています。

科目 A の難易度

科目 A の問題が、過去問題の再利用の場合は、「再利用」欄に試験の区分(FE = 基本情報技術者試験、AP = 応用情報技術者試験)と年度を示しています。 同じ問題が複数の試験で再利用されている場合もあります。 ここに示した区分と年度は、それらの中から 1 つだけを示したものです。 過去に出題されたことがない問題は「なし」と示しています。

図 1 今回公開された公開問題の内容
科目 A
分野 テーマ 難易度 再利用
1 情報の基礎理論 16 進数と 10 進数の変換 B FE H 19 秋 問 1
2 アルゴリズム リストへの要素の追加 B FE H 22 春 問 5
3 ハードウェア メモリインタリーブ B FE H 17 春 問 21
4 システム構成 エッジコンピューティング A なし
5 マルチメディアと
ヒューマンインタフェース
クリッピング A FE H 28 春 問 25
6 データベース 推移的関数従属 B なし
7 データベース トランザクションの ACID 特性 A FE H 28 春 問 28
8 ネットワーク ネットワークの疎通確認 B なし
9 セキュリティ ドライブバイダウンロード攻撃 A なし
10 セキュリティ WAF の設置場所 B AP H 27 秋 問 41
11 開発技術 流れ図の初期値 C FE H 18 春 問 42
12 開発技術 スクラム B なし
13 マネジメント系 アローダイアグラム B AP H 24 春 問 51
14 マネジメント系 監査人の指摘事項 A なし
15 ストラテジ系 パブリッククラウド B なし
16 ストラテジ系 ダイバーシティマネジメント A AP H 26 春 問 67
17 ストラテジ系 ERP A FE H 20 秋 問 70
18 ストラテジ系 消費者の分類 B なし
19 ストラテジ系 CIO A FE H 30 秋 問 74
20 ストラテジ系 ボリュームライセンス契約 A FE H 20 春 問 80

科目 A の難易度を集計すると、
A が 9 問、
B が 10 問、
C が 1 問
です。

A が 90 % できて、 B が 50 % できて、 C が 25 % できる(四択問題なので最低でも 25 % できます)とすれば、科目 A の正解率の期待値は、
( 9 問 × 0.9 + 10 問 × 0.5 + 1 問 × 0.25) ÷ 20 問
≒ 66.8 %
です。

科目 B の難易度

科目 B は、過去問題がないので、「再利用」欄をすべて「なし」としています。 今後、何度か公開問題が公開されれば、この欄も埋まることになるでしょう。

図 1 今回公開された公開問題の内容
科目 B
分野 テーマ 難易度 再利用
1 アルゴリズムとプログラミング
(データ構造及びアルゴリズム)
素数の判定 B なし
2 アルゴリズムとプログラミング
(プログラムの基本要素)
手続の呼び出し順序を読み取る A なし
3 アルゴリズムとプログラミング
(データ構造及びアルゴリズム)
クイックソート C なし
4 アルゴリズムとプログラミング
(データ構造及びアルゴリズム)
ハッシュ表へのデータの格納 B なし
5 アルゴリズムとプログラミング
(プログラミングの諸分野への適用)
コサイン類似度を求める A なし
6 情報セキュリティ 人事業務の情報セキュリティリスク A なし

科目 B の難易度を集計すると、
A が 3 問、
B が 2 問、
C が 1 問
です。

科目 A 同様に A が 90 % できて、 B が 50 % できて、 C が 25 % できるとすれば、科目 B の正解率の期待値は、
(3 問 × 0.9 + 2 問 × 0.5 + 1 問 × 0.25) ÷ 6 問
≒ 65.8 %
です。

 

実際の試験は、科目 A と科目 B の両方が 1000 点で、それぞれで 600 点以上が合格でなので、正解率 60 % が合格の目安です。

公開問題の内容を見る限り、新制度の試験の難易度は、従来の試験と同様です。 ちゃんと勉強していれば合格できるはずです。

科目 A の対策

科目 A の全 20 問中 12 問( 60 % )は、過去問題の再利用です。 全体の 60 % 程度が過去問題の再利用というのも、従来の試験と同様です。

したがって、最も効果的かつ効率的な科目 A の対策は、過去問題(旧制度の午前問題)および公開問題を数多く解くことです。 特に、今回の公開問題の中で「なし(過去問題として出たことがない問題)」となっているものは、重点的に学習して解き方をマスターしておいてください。 これらの問題も、過去問題と同様に再利用される可能性があるからです。

 

再利用されている問題の中には、基本情報技術者試験の過去問題だけでなく、応用情報技術者試験の過去問題もあります。 だからといって、応用情報技術者試験の過去問題を練習することは、効率的ではありません。 応用情報技術者試験の過去問題の中には、基本情報技術者試験の出題範囲外のもの(基本情報技術者試験では再利用されないもの)もあるからです。

応用情報技術者試験の過去問題であっても、その内容は、基本情報技術者試験の出題範囲を超えることはありません。 基本情報技術者試験の過去問題を練習しておけば、その類題としてきっと解けます。 自信をもって解いてください。

科目 B の対策(アルゴリズムとプログラミング)

科目 B のアルゴリズムとプログラミングは、出題テーマのカテゴリが「プログラムの基本要素」「データ構造及びアルゴリズム」「プログラミングの諸分野への適用」の 3 つとなっていますが、これらの違いを気にする必要はありません。

科目 B のアルゴリズムとプログラミングの対策は、ズバリ「試験の出題範囲のアルゴリズムとデータ構造を実際のプログラミング言語で経験すること」です。 この経験があれば、どのカテゴリの問題も解けるはずです。

 

今回の公開問題も、試験の出題範囲のアルゴリズムとデータ構造を実際のプログラミング言語で経験していれば、難なく解答できる内容になっています。 逆に、経験がないと、とても難しい問題もあります。

たとえば、問 3 の「クイックソート」の問題は、

「データ全体を、基準値より小さいグループと、基準値より大きいグループに分けることを、グループの要素数が 1 つになるまで繰り返す」

というアルゴリズムの説明を知っているだけでは、解けないでしょう。 実際に何らかのプログラミング言語でクイックソートのプログラムを作って、グループ分けする具体的な方法や、繰り返しが再帰呼び出しで実現されることを経験しておく必要があります。

図 2 は、問 3 に示されたプログラムです。 クイックソートのプログラムを作った経験があれば「ああ、これはクイックソートだね」とすぐにわかり、 5 分程度で解答できるでしょう。 クイックソートのプログラムを作った経験がなければ、たぶんお手上げでしょう。

swipeプログラムは横スクロールできます

図 2 問 3 に示されたプログラム
大域: 整数型の配列: data ← {2, 1, 3, 5, 4}

○sort(整数型: first, 整数型: last)
 整数型: pivot, i, j
 pivot ← data[(first + last) ÷ 2 の商]
 i ← first
 j ← last

 while (true)
  while (data[i] < pivot)
    i ← i + 1
  endwhile
  while (pivot < data[j])
    j ← j - 1
  endwhile
  if (i ≧ j)
    繰返し処理を終了する
  endif
  data[i] と data[j] の値を入れ替える
  i ← i + 1
  j ← j - 1
 endwhile
 data の全要素の値を要素番号の順に空白区切りで出力する /*** α ***/
 if (first < i - 1)
   sort(first, i - 1)
 endif
 if (j + 1 < last)
   sort(j + 1, last)
 endif

筆者は、科目 B の対策講座を「プログラミング実習」と「問題演習」に分けて、それぞれを 1 日( 6 時間程度)で実施しています。 「プログラミング実習」では、試験の出題範囲のアルゴリズムとデータ構造として、以下を取り上げています。

これらは、試験の出題範囲のすべてではありませんが、かなりの部分を網羅していますので、ご自身でプログラミングを実習する際の参考にしてください。

    アルゴリズム

  1. 基本アルゴリズム
    • ユークリッドの互除法(最大公約数を求める)
    • 素数の判定
    • うるう年の判定
  2. ソートのアルゴリズム
    • バブルソート
    • 選択ソート
    • 挿入ソート
    • マージソート
    • クイックソート
  3. サーチのアルゴリズム
    • 線形探索
    • 二分探索
    • ハッシュ表探索法
    データ構造

  1. 基本データ構造
    • 配列
    • 構造体の配列
  2. リスト
    • 単方向リスト
    • 双方向リスト
    • 循環リスト
  3. バッファ
    • キュー
    • スタック
  4. 木(ツリー)
    • 二分探索木
    • ヒープ

info_outline関連する科目 B の連載

新しい擬似言語で学ぶ
科目 B アルゴリズムとプログラミング入門

「コサイン類似度を求める」問題のような難しいテーマでも解ける

問 5 の「コサイン類似度を求める」という問題は、問題のテーマだけを見ると、とても難しく感じるかもしれませんが、実際の内容は難しくありません。 コサイン類似度の意味がわからなくても、コサイン類似度を求める計算式が問題に示されているので、それをプログラムに置き換えればよいからです。

それでは、なぜ「コサイン類似度」などというものをテーマにした問題が出たのでしょうか?

それは、出題テーマのカテゴリにある「プログラミングの諸分野への適用」に該当する問題が必要だったからでしょう。 実際の試験を受けたときにも、この手の問題に遭遇することがあると思いますが、その際には「問題の説明をプログラムに置き換えれば解ける」と考えて、自信をもって解いてください。

科目 B の対策(情報セキュリティ)

科目 A は「知識」を問う問題であり、科目 B は「技能」を問う問題です。 そのため、科目 B の情報セキュリティの問題は、事例(架空の事例です)になっています。

問題がやや長いので、難しく感じるかもしれませんが、科目 A の学習で得た知識があれば理解できる内容なので、自信を持って解いてください。

 

今回の公開問題も、
「ファイルサーバ」
「暗号化」
「 URL 」
「フィッシングサイト」
「スパムメール」
「身代金(ランサムウェア)」
という IT 用語の意味がわかれば、事例を読み取れるはずです。 科目 B の情報セキュリティの対策として、科目 A の出題テーマをきちんと学習しましょう。 IT 全般の知識が要求されるので、情報セキュリティだけでなく、すべての分野をきちんと学習してください。

 

実際の科目 B は、全 20 問であり、問 1 ~問 16 がアルゴリズムとプログラミング、問 17 ~問 20 が情報セキュリティです。 100 分の試験時間で、この 20 問に解答するのは、かなり難しいでしょう。

アルゴリズムとプログラミングより情報セキュリティの方が簡単だという人が多い(科目 A の出題テーマをきちんと学習していればです)と思いますので、実際の試験を受けるときには、先に問 17 ~問 20 の情報セキュリティを先に解いて、その後で問 1 ~問 16 のアルゴリズムとプログラミングを解くことをお勧めします。 もちろん、アルゴリズムとプログラミングが大の得意という人は、そちらを先に解くので OK です。

以上、試験対策講座の講師として、誠に勝手ながら、公開問題の講評をさせていただきました。

科目 A の対策は、過去問題(旧制度の午前問題)および公開問題を数多く解くことです。
科目 B の対策は、試験の出題範囲のアルゴリズムとデータ構造を実際のプログラミング言語で経験することです。

これらを実施すれば、必ず良い結果が得られるはずです。 皆様のご健闘をお祈り申し上げます!

label 関連タグ
科目A試験は、
免除できます。
独習ゼミで科目A試験を1年間免除して、科目B試験だけに集中しましょう。
免除試験を受けた 74.9% の方が、
科目A免除資格を得ています。
科目A免除試験 最大 2 回の
受験チャンス !
info_outline
科目A免除試験 最大 2 回の
受験チャンス !
詳しく見てみるplay_circle_filled
label これまでの『資格ガイド』の連載一覧 label 著者