「SDAS プログラマ教育サービス(Java 編)」運営事務局
Java 知識テスト問題
このテストは
J2EE プログラマとしての Java の知識を評価するものです。
■ 問題は30 問,テスト時間は J2EE 知識テストとあわせて 90 分です。 ■ 問題は全て択一式です。選択肢から1つだけ選択してください。 ■ 資料の閲覧は禁止です。 ■ テストが終わり次第、答案用紙を提出していただいてかまいません。 ■ テスト終了後,本テストの内容を他の方に話さないでください。 受験者の公平を期するためですのでよろしくお願いします。 必ずお読みください1. 次のうち識別子として使用できるものはどれですか。【選択肢】から 1 つ選んでください。 【選択肢】 A) num@ B) num$ C) num# D) num! 2. アクセス修飾子 protected のスコープ範囲内ではあるが、アクセス修飾子「なし(省略)」のスコープ範囲 からは外れるクラスはどれですか。【選択肢】から1 つ選んでください。 【選択肢】 A) 自クラス B) 同一パッケージ内 サブクラス C) 同一パッケージ内 非サブクラス D) 非同一パッケージ内 サブクラス E) 非同一パッケージ内 非サブクラス 3. a は int 型変数であるとします。次の式について述べた文章として正しいものはどれですか。【選択肢】か ら1 つ選んでください。 0 < a < 10 【選択肢】 A) a の値が 0 のとき、この式の値は true になる。 B) a の値が 5 のとき、この式の値は true になる。 C) a の値が 10 のとき、この式の値は true になる。 D) コンパイルできない。 4. int 型整数を 0 で除算するとどうなりますか。【選択肢】から 1 つ選んでください。 【選択肢】 A) 実行時例外が発生する。 B) 0 が返却される。 C) null が返却される。 D) int 型の最大値が返却される。
5. Java の基本データ型に関する記述のうち正しいものはどれですか。【選択肢】から 1 つ選んでください。 【選択肢】
A) Java の boolean 型は true が整数の 0、false が整数の 1 と同義である。 B) Java の char 型は 2 バイト文字であるひらがなの「あ」を表現できる。 C) Java の int 型の表現範囲は 16 ビットである。 D) Java の基本データ型では「丸め誤差」は発生しない。 6. 次のプログラムをコンパイルし、コマンドライン引数に何も与えずに実行しようとするとどうなりますか。 【選択肢】から1 つ選んでください。 CommandLineTest.java
public class CommandLineTest {
public static void main( String[] args ) { System.out.println( args[0] ) ; } } 【選択肢】 A) コンパイルエラーになる。 B) 実行時に例外が発生する。 C) 何も出力されない。 D) CommandLineTest と出力される。 7. 次のプログラムをコンパイルし実行するとどうなりますか。【選択肢】から 1 つ選んでください。 OpeTest.java
public class OpeTest {
public static void main(String[] args) { System.out.println( 8 / 5 * 5 ); } } 【選択肢】 A) 0 と出力される。 B) 1 と出力される。 C) 5 と出力される。 D) 8 と出力される。 E) 40 と出力される。
8. 以下のようなコードがあります。 Test.java
1: public class Test {
2: public static void main(String[] args) { 3: print();
4: }
5: public void print() {
6: System.out.println( "Test#print" ); 7: } 8: } コンソールに Test#print と表示させたいのですが、このコードは3 行目でコンパイルエラーになってしまいます。正しく実行できるよ うにするためにはコードをどのように修正すればよいですか。【選択肢】から1 つ選んでください。 【選択肢】
A) main()を static でないメソッドにする。 B) print()を static なメソッドにする。 C) 3 行目の print()を this.print()に変更する。 D) 3 行目の print()を Test.print()に変更する。 9. 次の記述のうち、もっとも適切なものはどれですか。【選択肢】から 1 つ選んでください。 【選択肢】 A) 多態性で重要なのはオーバーライドではなくオーバーロードである。 B) カプセル化されたクラスで has-a 関係を使用してはならない。 C) オブジェクト指向とカプセル化は無関係な手法である。 D) カプセル化におけるデータの保護には、通常 private が使われる。
10. 以下のコードを実行すると何が出力されますか。【選択肢】から 1 つ選んでください。 Main.java
public class Main {
public static void main(String[] args) { ThisTest test = new ThisTest();
test.print(); }
}
class ThisTest { String str = "aaa"; public void print() { str = "bbb"; System.out.println( this.str ); System.out.println( str ); } } 【選択肢】 A) aaa aaa B) aaa bbb C) bbb aaa D) bbb bbb 11. 次のプログラムをコンパイルするとコンパイルエラーになります。なぜですか。【選択肢】から 1 つ選ん でください。 Demo.java class Oya { Oya(String name) {
System.out.println( "My name is Oya. " + name ); }
}
class Ko extends Oya { Ko(String name) {
System.out.println( "I am Ko! " + name ); }
}
class Demo {
public static void main(String[] a) { Ko obj = new Ko("Hello");
} } 【選択肢】 A) ひとつの Java ソース内に複数のクラスが定義されているから。 B) クラス Demo の可視性が public でないから。 C) クラス Oya でデフォルトコンストラクタが定義されていないから。 D) クラス Demo の main メソッドの引数の名前が正しくないから。
12. 次の[用語]と[解説]の組み合わせのうち正しいものはどれですか。【選択肢】から 1 つ選んでください。 用語 ア:継承 イ:委譲 ウ:実装 解説 I:オブジェクトが自分に依頼されたメッセージを他のオブジェクトに処理させること。 II:インタフェースで定義されているメソッドを記述すること。 III:あるクラスの特性を受け継いだクラスを作成すること。クラス同士が親-子の関係になる。 【選択肢】
A) ア-I イ-II ウ-III B) ア-I イ-III ウ-II C) ア-II イ-III ウ-I D) ア-III イ-I ウ-II E) ア-III イ-II ウ-I
13. 次の 3 つのファイルをコンパイルし実行するとどうなりますか。【選択肢】から 1 つ選んでください。 Main.java
public class Main {
public static void main(String[] args) { Abstract object = new Concrete(); object.method();
} }
Abstract.java
public abstract class Abstract {
public abstract void method() { System.out.println( "Abstract#method" ); } }
Concrete.java
public class Concrete extends Abstract {
public void method() { System.out.println( "Concrete#method" ); } } 【選択肢】 A) コンパイルエラーになる。 B) 実行時に例外が発生する。 C) Abstract#method と表示される。 D) Concrete#method と表示される。
14.-15. 以下のようなコードがあります。 Animal.java
public interface Animal { public void method(); }
Mammal.java
public interface Mammal 空欄 Animal { public void method2();
}
Sample.java
public class Sample implements Mammal { // 処理 } 14. インターフェース Mammal はインターフェース Animal を継承しています。空欄に当てはまるものとして 適切なものはどちらですか。【選択肢】から1 つ選んでください。 【選択肢】 A) extends B) implements
15. クラス Sample はインターフェース Mammal を実装しています。クラス Sample で「必ず」実装「しな ければならない」メソッドはどれですか。【選択肢】から1 つ選んでください。 【選択肢】 A) method()のみ B) method2()のみ C) method()と method2()の両方 D) 必ず実装しなければならないものはない。 16. 次のコードのうち正しくないもの(コンパイルエラーになるもの)はどれですか。【選択肢】から 1 つ選 んでください。 【選択肢】
A) int data1[3] = { 1, 2, 3 }; B) int data2[] = new int[3];
C) int[] data3 = new int[]{ 1, 2, 3 }; D) int[]data4[] = new int[3][4];
17. 次のコードをコンパイルし実行するとどうなりますか。【選択肢】から 1 つ選んでください。 ArrayTest.java
public class ArrayTest {
public static void main(String[] args) { int[] data = { 0, 1, 2, } ; System.out.println(data[3]) ; } } 【選択肢】 A) コンパイルエラーになる。 B) 実行時に例外が発生する。 C) 0 と出力される。 D) 3 と出力される。 18. 次のプログラムをコンパイルし実行しようとするとどうなりますか。【選択肢】から1 つ選んでください。 RefCast.java
public class RefCast {
public static void main(String[] args) {
StringBuffer buffer = new StringBuffer("buffer"); String str = (String)buffer; System.out.println( str ); } } 【選択肢】 A) コンパイルエラーになる。 B) 実行時に例外が発生する。 C) 実行すると、何も出力されずに終了する。 D) 上記以外の結果になる。
19. Girl は Human のサブクラスです。以下のコードをコンパイルし実行するとどうなりますか。【選択肢】 から1 つ選んでください。ただし、Human と Girl ではコンパイルエラーは発生していないものとします。 CastTest.java
public class CastTest {
public static void main(String[] args) { Girl girl = new Girl();
Human human = girl;
Girl anotherGirl = (Girl)human; // anotherGirl のクラス名を取得。 System.out.println(anotherGirl.getClass()); } } Object クラスの getClass()メソッドを 用いて、インスタンスのクラス名を取 得することができます。 【選択肢】 A) コンパイルでエラーになる。 B) コンパイルは通るが、実行時に例外が発生する。 C) class Human と表示される。 D) class Girl と表示される。 20. 次のプログラムをコンパイルし実行すると何が出力されますか。【選択肢】から 1 つ選んでください。 BreakTest.java
public class BreakTest {
public static void main(String[] args) { for (int i = 0; i < 4; i++) {
if( i==3 ) { break ; } System.out.print( i ) ; } } } 【選択肢】 A) 01 B) 012 C) 0123 D) 01234
21. 次のプログラムをコンパイルし以下のコマンドで実行しようとすると何が出力されますか。【選択肢】か ら1 つ選んでください。
IFTest.java
public class IFTest {
public static void main(String[] args) { if( args[0].equals("17") ) {
System.out.print( "今日は 17 日です。" ); } else if( args[1].equals("金") ) {
System.out.print( "今日は金曜日です。" ); } else { System.out.print( "その他" ); } } } 実行コマンド java IFTest 17 金 【選択肢】 A) 今日は 17 日です。今日は金曜日です。 B) 今日は 17 日です。 C) 今日は金曜日です。 D) その他 E) 何も出力されない。 22. 以下の空欄に入れることができないデータ型はどれですか。【選択肢】から 1 つ選んでください。 switch ( 空欄 ) { // ・・・ } 【選択肢】 A) byte B) short C) int D) long E) char
23. 次のプログラムをコンパイルし実行するとどうなりますか。【選択肢】から 1 つ選んでください。 ExceptionTest.java
public class ExceptionTest {
public static void main(String[] args) { String str = "str"; try { int i = Integer.parseInt(str); System.out.print( "try, " ); } catch(Exception e) { System.out.print( "Exception, " ); } catch(NumberFormatException nfe) { System.out.print( "NumberFormatException, " ); } finally { System.out.print( "finally, " ); } } } 【選択肢】 A) コンパイルエラーになる
B) try, NumberFormatException, finally, と出力される C) try, Exception, finally, と出力される
D) NumberFormatException, finally, と出力される E) Exception, finally, と出力される
24. 以下のコードの空欄部分に入れるとコンパイルエラーになるものはどれですか。【選択肢】から 1 つ選ん でください。
ExceptionTest.java import java.io.*;
public class ExceptionTest {
private static void method() throws IOException { throw new 空欄
}
public static void main(String args[]) { try {
method();
} catch (Exception ex) { ex.printStackTrace(); } } } 【選択肢】 A) IOException(); B) RuntimeException(); C) Exception();
25. 次のプログラムを実行したときに、発生する可能性のない例外はどれですか。【選択肢】から 1 つ選んで ください。
ExceptionDemo.java
public class ExceptionDemo {
public static void main(String[] args) { int i = Integer.parseInt( args[0] ) ; int[] data = { 3, 2, 1, 0 } ; System.out.println( 6 / data[i] ) ; } } 【選択肢】 A) java.lang.ArithmeticException B) java.lang.ArrayIndexOutOfBoundsException C) java.lang.ClassCastException D) java.lang.NumberFormatException 26. マルチスレッドに関する説明として正しい文はどれですか。最も適切なものを【選択肢】から 1 つ選ん でください。 【選択肢】 A) シングルプロセスの OS でもマルチスレッドの動作は可能である。 B) マルチスレッドは Java 固有のものである。 C) マルチスレッドを実現するには複数の CPU が必要である。 D) マルチスレッドで動作させるには MultiThread インターフェースを実装する必要がある。 27. java.lang.Run nable インターフェースを実装したクラスで記述する必要のあるメソッドはどれですか。 【選択肢】から1 つ選んでください。 【選択肢】 A) start() B) run() C) join() D) stop()
28. 以下のコードをコンパイルし実行しようとするとどうなりますか。【選択肢】から 1 つ選んでください。 ThreadTest.java
public class ThreadTest {
public static void main(String[] args) { try { System.out.println( "Start." ); Thread.sleep(3000); System.out.println( "End." ); } catch(InterruptedException ie) {} } } 【選択肢】
A) ThreadTest クラスが Thread クラスを継承していないのでコンパイルエラーになる。 B) 適切な例外処理が行われていないので、コンパイルエラーになる。 C) 正常にコンパイル・実行され、 「Start.」が出力された直後に「End.」と出力される。 D) 正常にコンパイル・実行され、 「Start.」が出力されてから約 3 秒後に「End.」と出力される。 29. 以下のコードを実行すると何が出力されますか。【選択肢】から1つ選んでください。 SubstringTest.java
public class SubstringTest {
public static void main(String[] args) { String before = "abcdefg";
String after = before.substring(1, 7); System.out.println( after ); } } 【選択肢】 A) abcdef B) abcdefg C) bcdefg D) 例外が発生する。
30. 以下のコードを実行しようとするとどうなりますか。【選択肢】から1つ選んでください。 HashMapTest.java
1: import java.util.HashMap; 2:
3: public class HashMapTest {
4: public static void main(String[] args) { 5: HashMap map = new HashMap();
6: map.put("key1", "value1"); 7: map.put("key2", "value2"); 8: map.put("key1", "value3");
9: String value = (String)map.get("key1"); 10: System.out.println(value); 11: } 12: } 【選択肢】 A) 重複するキーで put しようとしている 8 行目で実行時例外が発生する。 B) String にキャストしようとしている 9 行目で実行時例外が発生する。 C) value1 と表示される。 D) value3 と表示される。