[基本情報技術者試験]午後問題・Javaの対策法

2020年1月27日

基本情報技術者試験ではソフトウェア開発の分野でプログラミングを選択しなければならず、その選択肢の一つにJavaが含まれます。

Javaは現場でも比較的よく使われている言語で就職後のことも考えて選ぶ受験者の方が多いですが、

カズ
カズ
Javaの基本構文が分からない・・・
ラク
ラク
オブジェクト指向ってなんだ!?

と言ったようにJavaを初心者の方が学ぶ場合いくつかの障壁があります。

基本情報技術者試験まで日数的に余裕があるなら十分対策はできますが、これだけで3ヵ月ほどかかるので、時間がない場合は表計算などを選ぶのも無難です。

この記事では今から十分時間がある!と言う方向けに、問題の出題傾向や対策方法を紹介していこうと思います。

キュー
キュー
現場でJavaを触ったことがあってもFEでは幅広い知識が必要やから、しっかりと補完していこうな!

基本情報技術者試験のJavaの特徴

最初に、基本情報技術者試験におけるJava問題の特徴を紹介していきます。

Javaの特徴

Javaの大きな特徴としては、オブジェクト指向と呼ばれる概念があります。

カズ
カズ
オブジェクト指向?

オブジェクト指向では、オブジェクト(物)を作成し、それが出来る役割を定義していきます。

この定義をしておくことで後に似たような動作をするプログラミングを開発したいときに使いまわすことが出来たり、複数人で開発するときに中身を知らなくても任意の動作を実現可能とすることが出来ます。

基本情報での出題傾向

基本情報技術者試験で出題されるJavaでは上記のオブジェクト指向に加え、API(Application Programming Interface)も併せて出題されます。

カズ
カズ
API???

APIは簡単に言うとソフト同士がお互いに情報をやりとりする時に用いられる仕様の事です。

例えばこのwordpressで作成しているサイトを更新するとtwitterの方で自動的に呟く設定になっていますが、これはwordpress⇔twitter間でのAPIが動作していることになりますね。

形式的にはJava.※※.~~~の様に表されており種類は多岐に渡るとされています。

カズ
カズ
そんな沢山ある種類のAPIを全部覚えないといけないの!?!?
キュー
キュー
試験中に問われるAPIの解説は問題文中にあるから安心してや

具体的に問題のコードを見てみましょう。(h27.秋より)

import java.util.ArrayList;
import java.util.List;

abstract class ListBasedCache extends Cache {
    final List entries = new ArrayList();
    
    private static final int CACHE_SIZE = 20;
    
    byte[] getCachedBlockData(int index) { 
        for (Entry entry : entries) { 
            if (entry.getIndex() '[ c ]' index) {
                hit(entry); 
                return entry.getBlockData();
            }
        }
        return null;
    }
    
    void cacheBlockData(int index, byte[] blockData) {
        if ( '[ d ]' ) {
            entries.remove( '[ e ]' );
        }
        entries.add(0, new Entry(index, blockData));
    }
    
    abstract void hit(Entry entry);

    private static class Entry {
        private final int index; 
        private final byte[] blockData;
        
        private Entry(int index, byte[] blockData) {
            this, index = index; 
            this.blockData = blockData;
        }
        
        int get Index() { return index; } 
        byte[] getBlockData() { return blockData; }
    }

    static class Fifo extends '[ f ]' {
        void hit (Entry entry) { }
    }

    static class Lru extends '[ f ]' {
        void hit(Entry entry) {
            entries.remove( '[ g ]' );
            entries, add(0, entry);
        }
    }
}

このように、冒頭ですでにAPIが登場していますね。

ここ数回の過去問を見ていても毎回APIは登場しているので、Javaで挑むならAPIの知識は徹底的に補充しておきましょう。

スポンサーリンク

Javaにおける問題の解き方

JavaはC言語等と比べると比較的読みやすい言語ではあるので、解き方さえ押さえてしまえば安定して点が取れるようになります。

また、他の言語もいくつか触ったことがあり、本番でどれを選べばよいか迷ってしまった場合での判断力の付け方についても紹介していきます。

まずは問題文を俯瞰する

まずは問題の全体を一通り見て自分の現在の知識でサクッと解けるかどうか判断します。

基本情報技術者試験の制限時間は150分の為、悠長にしている時間がなく、アルゴリズムも結構時間がかかってしまうためシビアになってきます。

キュー
キュー
丸々1時間かけてようやく解けた・・・とかなると後を押してきて結構大変やで

他の言語もざっと見て表計算やPythonの方が直ぐに解けそうだと感じたら、特にこだわりがなければ切り替える柔軟さも大切ですね。

コードを読んで処理を確認

問題文を読んで大まかな処理を確認したら、今度はコードを読みながら実際に処理の流れを見ていきましょう。

上記でも述べたようにAPIの処理があったり、オブジェクト指向についてのクラスの定義だったりを見ていきましょう。

キュー
キュー
この時、問題文中にあったAPIの処理もしっかりと確認や

問題の意図が分かっても具体的な流れを押さえることが出来なければ得点に結びつけることは非常に難しくなってしまいます。

また、コードを読んでいるときに少し分からない処理があったり気づいたことがあったら直接本文のその位置にメモとして書き残すのも良いですね。

穴埋め問題ではある程度まで絞り込むことが大事

基本情報技術者試験のJava問題では、上記のサンプルコードにあるような空欄の穴埋め問題も毎回出題されます。

ここで分からないとなって時間が経過してしまうと非常に惜しいので、あまりにも時間がかかるようなら飛ばすようにしましょう。

その際、その空欄に条件分岐の式が入るのか、それとも数値が入るのか、処理が入るのかと言った大まかな事だけでもわかってしまえば選択肢も限られてくるので正答率がぐっと上がります。

カズ
カズ
回によっては穴埋め問題しかないときもあるよ

Javaで押さえるべきポイント

基本情報技術者試験のJavaの問題で押さえて置くべきポイントもいくつか紹介しておきます。

ラク
ラク
具体的な内容はシラバスにも書かれてるぜ
キュー
キュー
適せん、それらを解説しているページへリンク張っとくで

数値演算

プログラミングにおいて演算処理は非常に大切ですで、四則演算(+,-,*,/,%)はもちろんの事、代入(=,+=等)や比較演算(>,<=等)、シフト演算(<<,>>)の処理も知らなければ問題は解けません。

ラク
ラク
=と==の違いとか、初歩的なことも確認していこう

条件分岐

数値が一定以上だったらこの処理を、以下だったら別の処理をと言った条件分岐も理解できるようにしておきましょう。

時にif文は頻出傾向にありその中身の条件を問われることもあります。

形式としては

 if (条件式) 
  処理1;
 else 
  処理2;

と言ったような形式です。

ループ処理

同じ処理を複数回行いたい場合にはforループを行ったり、while文で制御する必要があります。

for文は

 for (i = 0; i < 10; i++) {
   処理;
 }

while文は

 while (i < 10) {
   処理;
 }

の様に記述します。

カズ
カズ
条件式の中身がちょっと違うんだね

いずれも基本構文と言われており、非常に重要なポイントです。以下のページにまとめられているので是非参考にしてみて下さい。

クラス及びインスタンス

オブジェクト指向の醍醐味ですが、クラスを定義してインスタンス化することでプログラムを作成していきます。

隠蔽やカプセル化、クラス変数にメソッドと言ったキーワードも抑えるようにしておきましょう。

class ClassSample {
    // メソッドの宣言・定義
    void methodSample() {
        処理;
    }
}
 
public class Main {
    public static void main(String[] args) throws Exception {
 
        // インスタンス(オブジェクト)を生成
        ClassSample cl = new ClassSample();
 
        // メソッドの呼出し
        cl.methodSample();
    }
}

例外処理

Javascriptでは例外処理と呼ばれ、実行停止してはいけないプログラムにおいてエラーが発生してしまった場合にその後の処理を行わせる設定をしておく必要もあります。

出題頻度は少ないですが、こちらも余力があったら学んでおくことがベストですね。

基本情報のためのJava学習法

上記の内容は全てシラバスに書かれた内容でしたが、Java固有の処理や一般常識とされた内容も当たり前のように出題される傾向があるので、シラバスを網羅して100%解けるとは限りません

そのため試験対策をするにあたってはそれなりに準備をする必要があります。

Javaを学べるテキスト

まず、過去問を含めいくつかの問題を実際に解いて慣れていく必要がありますね。

市販のテキストでもJava関係の書物は多いですが、基本情報の為だけに編集されたテキストの方が絞って解説されており効率的なので、そちらを2冊ほど紹介させていただきます。

基本情報技術者 らくらく突破 Java

created by Rinker
¥3,168 (2020/09/23 12:50:17時点 Amazon調べ-詳細)

基本情報技術者 らくらく突破 Javaは午後対策のテキストの中でも詳細かつ丁寧と好評されており、先ほど紹介したシラバスの内容+高度な機能まで幅広く網羅しています。

456ページにも及ぶ大ボリュームですべてを終えるにはそれなりに時間はかかってしまいますが、この1冊を網羅すれば毎回8割以上は安定して取れると断言できます。

基本情報技術者 Java言語対策

created by Rinker
¥3,300 (2020/09/23 12:50:17時点 Amazon調べ-詳細)

こちらも情報処理技術者試験の対策に定評のあるアイテックから出版されたものになり、各章ごとで「変数」や「式と演算子」、「条件判断」と言ったように取り扱っており分かりやすい構造になっています。

特にクラスに関しては念入りに解説されており、Java実践用のEclipseの使い方についても触れています。

カズ
カズ
実際にコードを書いて動かしてみたい!って人はこちらがオススメ!

Javaを学べる通信講座

実は、Javaを学べる通信講座と言ったものも用意されています。

資格の大原

本気になったら大原

今回紹介するのは資格の大原と言う大手スクールになり、こちらは午前午後両方の対策講座を受けることも出来れば、Javaだけに特化した講座を受けることも可能です。

ラク
ラク
全国各地にスクールがあるし、知ってる人も多いんじゃないか!?

価格もプログラミング言語に限った場合は19,000円と比較的安く財布にも優しいですね(*´ω`*)

ラク
ラク
普通のプログラミングスクールで学ぶと10万以上は吹っ飛んじまうぜ・・・

資料請求自体は無料で、時には割引クーポンがもらえることもあるので是非試してみて下さい。

大原の詳しい内容に関しては以下の記事でもまとめています。興味があれば併せてご覧になってみて下さい!

侍エンジニア塾

もう一つ紹介するのが侍エンジニア塾になります。

こちらは試験特化、と言うわけではなくがっつりプログラミングを学ぶため結構お金と時間はかかります。

ただ、基本情報技術者試験を取得する目的として資格を活かして仕事をしたい、転職したい。と言った方も少なからずいらっしゃるかなと思います。

そういった時に試験に特化した付け焼刃のプログラミング技術で仕事を取るのは中々難しく、例えば転職の仕方や仕事の取り方、現場で実際に必要な技術力と言ったものも身に着ける必要があります。

今回紹介する侍エンジニア塾ではマンツーマン形式で徹底的に学ぶことが出来るため疑問を直ぐに解消することもできて、上記で述べたような現場で生きる技術力・営業力を最短で付けることが出来るので非常にオススメです。

こちらも筆者は実際に受講した経験がある(と言うか現在も受講中)で、その時の記事もあるので是非ご覧になって下さい。

カズ
カズ
javaはもちろん、C言語やPythonも学べるよ!

まとめ

今回は基本情報技術者試験におけるJavaに関する特徴や対策方法を紹介させていただきました。

クラスやメソッドと言った概念が障壁になることもありますが、現場ではかなりつかわれている言語であり、無事習得できれば試験突破はもちろんの事、その後の仕事でも十分に生かせる言語と言えます。

また、他の言語に関しても興味があると言う方は是非以下の記事も併せてご覧ください。

スポンサーリンク