2023年4月から基本情報技術者試験の試験制度が変更されました。
午前問題・午後問題から科目A・科目Bへと名称や出題内容が少しずつ変わっています。
基本情報技術者試験で重要とされるのはやはり「科目B」です。
科目Aは2・3割の問題は過去問がそのまま出ているので、過去問を押さえておけばなんとかなります。
ただ、科目Bはサンプル問題も少なく、みなさんが苦手としているようなデータ構造及びアルゴリズムが多く出題されます。科目Aと比べる特定の分野の知識をより深めていくという勉強をしないといけません。
ただ、試験制度が変わったからというわけではありません。午前問題・午後問題の時代から問われていることは大きく変わっておらず、いままでの午後問題と同様に科目Bもアルゴリズム問題が重要視されます。
基本的な難易度は今までと変わらないと考えてよいのではないでしょうか。
科目Bは難しい?
基礎を押さえられていれば、未経験でも十分に解ける問題構成になっています。基本情報技術者試験の合格率は20~30%です。また、ITパスポートの合格率は50%です。
ITパスポートは基本情報技術者試験の科目Aと似ていることから、科目Bの難しさはなんとなくわかります。単純計算だと科目Aで半分の人がふるい落とされ、科目Bで更に半分の人がふるい落とされます。
問題が長い・英数字が使われている・数学っぽい、そんな理由で嫌煙されているものと思っています。
以下のような問題も冷静になって一つ一つ順番に考えていけば、解けますし、解くスピードを上げるのは残念ですが反復しかありません。
問13 次の記述中の "xxxx"に入れる正しい答えを,解答群の中から選べ。ここで,配列の要素番号は 1 から始まる。
関数 search は,引数 data で指定された配列に,引数 target で指定された値が含まれていればその要素番号を返し,含まれていなければ -1 を返す。data は昇順に整列されており,値に重複はない。
関数 search には不具合がある。例えば,data の"xxxx"場合は,無限ループになる。〔プログラム〕
○整数型: search(整数型の配列: data, 整数型: target)
整数型: low, high, middle
low ← 1
high ← dataの要素数
while (low ≦ high)
middle ← (low + high) ÷ 2 の商
if (data[middle] < target)
low ← middle
elseif (data[middle] > target)
high ← middle
else
return middle
endif
endwhile
return -1
解答群
ア 要素数が 1 で,target がその要素の値と等しい
イ 要素数が 2 で,target が data の先頭要素の値と等しい
ウ 要素数が 2 で,target が data の末尾要素の値と等しい
エ 要素に-1 が含まれている
※基本情報技術者試験(科目B試験)サンプル問題(60問)セットより抜粋
何が難しく感じさせるのか。
科目Bの問題の構成は、データ構造及びアルゴリズムが8割、セキュリティが2割の割合となっています。
「データ構造及びアルゴリズムが8割」ここが受験者に難しさを感じさせる部分ではないでしょうか。
セキュリティであれば、一般的な知識からも答えを推測できたりします。
ただ、データ構造及びアルゴリズムは簡単に言えば数式のようなものであるため、出てきた問題について考えて答えを導き出さないといけません。
この考える行為に苦手意識、めんどくささを感じているのではないでしょうか。
ちなみに具体的には下記のような問題が出題されます。
問1 次の記述中の "xxxx"に入れる正しい答えを,解答群の中から選べ。
プログラムを実行すると,“ xxxx”と出力される。〔プログラム〕
整数型: x ← 1
整数型: y ← 2
整数型: z ← 3
x ← y
y ← z
z ← x
yの値 と zの値 をこの順にコンマ区切りで出力する
解答群
ア 1,2 イ 1,3 ウ 2,1 エ 2,3 オ 3,1 カ 3,2
※基本情報技術者試験(科目B試験)サンプル問題(60問)セットより抜粋
何が課題となるのか?
やはり課題となるのは、「基礎知識を身に着ける、かつ、当日考えなければ行けない。」というところになるのではないでしょうか。
ただ、上のサンプル問題でも見てもそうですが、果たして考える問題は多くあるのでしょうか。
基本情報技術者試験は、基本的な部分を網羅的に身につけさせて初心者を半人前くらいまでにする問題が出題されます。基本情報技術者試験の要項にも似たようなことが書かれています。そのため、基本的な型を覚えるというところが重要になると考えています。
じゃあ、どうすれば良い?
応用は必要ありません。基本的な知識を確実に勉強すると良いでしょう。例え、応用といったとしても、基本的なことを組み合わせたものになります。
ということで、基本的な知識を押さえましょう!
参考書は何でも良いです。1冊に絞ってやりきりましょう!
個人的には↓こちらが凄いオススメです!(自分は第1版でしたが、、)
私はこの書籍を使って勉強しました。
しっかり読み込むというよりは、過去問を解きながら参考程度にこの書籍をを読むという使い方です。
最後に...
基本情報技術者試験の合格基準点は600点以上/1000点満点中です。
つまり、6割以上取れれば合格になります。そのため、データ構造及びアルゴリズムの問題を取りきれば、合格できる試験です。この分野は特に力を入れて・時間をかけて勉強してみてください!
具体的に何をしていたか?等、質問がありましたら、Twitterやコメントまでよろしくお願いいたします!