問1
次のモジュール宣言があるとき、com.example.module1
が他のモジュールに提供するのはどれですか?
module com.example.module1 {
exports com.example.module1.api;
requires java.sql;
}
選択肢:
-
com.example.module1
が他のモジュールに公開される。 -
com.example.module1.api
パッケージが他のモジュールに公開される。 -
java.sql
モジュールが他のモジュールに公開される。 -
com.example.module1.api
パッケージが公開されない。
解答
2
問2
次のモジュール宣言のうち、com.example.module2
が他のモジュールに提供するのはどれですか?
module com.example.module2 {
requires transitive com.example.module1;
exports com.example.module2.api;
}
選択肢:
-
com.example.module2
が他のモジュールに公開される。 -
com.example.module1
モジュールが他のモジュールにトランジティブに公開される。 -
com.example.module2.api
パッケージが他のモジュールに公開される。 - 2と3の両方。
解答
4
問3
次のモジュール宣言があるとき、com.example.module3
が必要とするものはどれですか?
module com.example.module3 {
uses com.example.module3.api.Service;
}
選択肢:
-
com.example.module3.api.Service
インターフェースを実装するクラスが必要。 -
com.example.module3.api.Service
インターフェースが他のモジュールに公開される。 -
com.example.module3.api.Service
インターフェースが自動的に提供される。 -
com.example.module3
が他のモジュールに公開される。
解答
1
問4
次のモジュール宣言のうち、com.example.module4
が提供するものはどれですか?
module com.example.module4 {
provides com.example.module4.api.Service with com.example.module4.impl.ServiceImpl;
}
選択肢:
-
com.example.module4.api.Service
インターフェースが公開される。 -
com.example.module4.api.Service
インターフェースの実装が他のモジュールに提供される。 -
com.example.module4.impl.ServiceImpl
クラスが他のモジュールに公開される。 - すべてのモジュールで
com.example.module4.impl.ServiceImpl
が使用できるようになる。
解答
2
問5
次のモジュール宣言のうち、com.example.module5
が許可するものはどれですか?
module com.example.module5 {
opens com.example.module5.internal to com.example.module1;
}
選択肢:
-
com.example.module5.internal
パッケージが全モジュールからアクセス可能になる。 -
com.example.module1
モジュールからcom.example.module5.internal
パッケージにリフレクションでアクセス可能になる。 -
com.example.module5.internal
パッケージが他のモジュールに公開される。 -
com.example.module1
モジュールにcom.example.module5
が依存する。
解答
2
問6
次のモジュール宣言があるとき、com.example.module6
が依存するのはどれですか?
module com.example.module6 {
requires static com.example.module7;
exports com.example.module6.api;
}
選択肢:
-
com.example.module6.api
パッケージが公開される。 -
com.example.module7
モジュールが実行時に必須である。 -
com.example.module7
モジュールがコンパイル時にのみ必要である。 -
com.example.module6
が他のモジュールに依存する。
解答
3
問7
次のモジュール宣言があるとき、java.base
モジュールが自動的に含まれるのはどれですか?
module com.example.module8 {
requires java.base;
}
選択肢:
-
java.base
モジュールは自動的にすべてのモジュールに含まれる。 -
java.base
モジュールは明示的に依存関係として指定する必要がある。 -
com.example.module8
はjava.base
に依存しない。 -
java.base
はモジュールシステムの一部ではない。
解答
1
問8
次のモジュール宣言があるとき、com.example.module9
が許可するものはどれですか?
module com.example.module9 {
requires com.example.module10;
opens com.example.module9.internal;
}
選択肢:
-
com.example.module9.internal
パッケージがリフレクションでアクセス可能になる。 -
com.example.module10
が他のモジュールに公開される。 -
com.example.module9
が他のモジュールに依存する。 -
com.example.module9.internal
パッケージが公開される。
解答
1
問9
次のモジュール宣言があるとき、com.example.module11
が公開するのはどれですか?
module com.example.module11 {
exports com.example.module11.api to com.example.module12, com.example.module13;
}
選択肢:
-
com.example.module11
全体が公開される。 -
com.example.module11.api
パッケージがすべてのモジュールに公開される。 -
com.example.module11.api
パッケージがcom.example.module12
とcom.example.module13
にのみ公開される。 -
com.example.module11.api
パッケージが公開されない。
解答
3
パッケージを公開します。ここでは、com.example.module12
とcom.example.module13
のみに公開されています。
問10
次のモジュール宣言があるとき、com.example.module14
が依存するのはどれですか?
module com.example.module14 {
requires transitive com.example.module15;
requires static com.example.module16;
}
選択肢:
-
com.example.module15
モジュールが実行時に必須である。 -
com.example.module16
モジュールがコンパイル時にのみ必要である。 -
com.example.module15
モジュールがトランジティブに他のモジュールに公開される。 - すべての選択肢が正しい。
解答
4
問11
次のモジュール宣言があるとき、com.example.module17
が他のモジュールに公開するのはどれですか?
module com.example.module17 {
opens com.example.module17.internal to com.example.module18;
exports com.example.module17.api;
}
選択肢:
-
com.example.module17.internal
パッケージがすべてのモジュールに公開される。 -
com.example.module18
がcom.example.module17.internal
パッケージにリフレクションアクセスできる。 -
com.example.module17.api
パッケージがすべてのモジュールに公開される。 - 2と3の両方。
解答
4
問12
次のモジュール宣言があるとき、com.example.module19
がcom.example.module20
に提供するのはどれですか?
module com.example.module19 {
provides com.example.module19.api.Service with com.example.module19.impl.ServiceImpl;
requires com.example.module20;
}
選択肢:
-
com.example.module19.api.Service
の実装がcom.example.module20
で使用可能になる。 -
com.example.module19.api.Service
インターフェースが公開される。 -
com.example.module19.impl.ServiceImpl
がすべてのモジュールに公開される。 -
com.example.module19
がcom.example.module20
に依存する。
解答
1
問13
次のモジュール宣言があるとき、com.example.module21
が依存するのはどれですか?
module com.example.module21 {
requires static com.example.module22;
exports com.example.module21.api;
}
選択肢:
-
com.example.module21.api
パッケージが公開される。 -
com.example.module22
モジュールが実行時に必須である。 -
com.example.module22
モジュールがコンパイル時にのみ必要である。 -
com.example.module21
が他のモジュールに依存する。
解答
3
問14
次のモジュール宣言があるとき、com.example.module23
が使用するのはどれですか?
module com.example.module23 {
uses com.example.module23.api.Service;
}
選択肢:
-
com.example.module23.api.Service
インターフェースを実装するクラスが必要。 -
com.example.module23.api.Service
インターフェースが他のモジュールに公開される。 -
com.example.module23.api.Service
インターフェースが自動的に提供される。 -
com.example.module23
が他のモジュールに公開される。
解答
1
問15
次のモジュール宣言があるとき、com.example.module24
が依存するのはどれですか?
module com.example.module24 {
requires transitive com.example.module25;
requires com.example.module26;
}
選択肢:
-
com.example.module25
モジュールが他のモジュールに公開される。 -
com.example.module26
モジュールがコンパイル時にのみ必要である。 -
com.example.module26
モジュールが他のモジュールに依存する。 -
com.example.module25
モジュールが他のモジュールに公開されない。
解答
1
問16
次のモジュール宣言があるとき、com.example.module27
が依存するのはどれですか?
module com.example.module27 {
requires java.sql;
exports com.example.module27.api;
}
選択肢:
-
com.example.module27.api
パッケージが公開される。 -
java.sql
モジュールがcom.example.module27
に必要である。 -
com.example.module27
が他のモジュールに公開される。 - 1と2の両方。
解答
4
問17
次のモジュール宣言があるとき、com.example.module28
が許可するのはどれですか?
module com.example.module28 {
opens com.example.module28.internal to com.example.module29;
requires com.example.module30;
}
選択肢:
-
com.example.module28.internal
パッケージがすべてのモジュールからアクセス可能になる。 -
com.example.module29
がcom.example.module28.internal
パッケージにリフレクションでアクセスできる。 -
com.example.module30
モジュールが他のモジュールに公開される。 -
com.example.module28
が他のモジュールに依存する。
解答
2
問18
次のモジュール宣言があるとき、com.example.module31
が依存するのはどれですか?
module com.example.module31 {
requires transitive com.example.module32;
requires static com.example.module33;
}
選択肢:
-
com.example.module32
モジュールが実行時に必須である。 -
com.example.module33
モジュールがコンパイル時にのみ必要である。 -
com.example.module32
モジュールがトランジティブに他のモジュールに公開される。 - すべての選択肢が正しい。
解答
4
問19
次のモジュール宣言があるとき、com.example.module34
が公開するのはどれですか?
module com.example.module34 {
exports com.example.module34.api to com.example.module35, com.example.module36;
requires com.example.module37;
}
選択肢:
-
com.example.module34.api
パッケージがすべてのモジュールに公開される。 -
com.example.module34.api
パッケージがcom.example.module35
とcom.example.module36
にのみ公開される。 -
com.example.module37
モジュールが他のモジュールに依存する。 -
com.example.module34
モジュールが他のモジュールに公開される。
解答
2
.example.module36`にのみ公開されます。
問20
次のモジュール宣言があるとき、com.example.module38
が依存するのはどれですか?
module com.example.module38 {
requires transitive com.example.module39;
requires com.example.module40;
}
選択肢:
-
com.example.module39
モジュールが他のモジュールに公開される。 -
com.example.module40
モジュールが他のモジュールに依存する。 -
com.example.module39
モジュールがコンパイル時にのみ必要である。 -
com.example.module40
モジュールが他のモジュールに公開される。
解答
1
問21
次のコマンドは、指定されたモジュールの依存関係を表示するために使用されます。どのコマンドを使用すればよいですか?
選択肢:
java describemodule
javac module
jdeps summary
jlink listmodule
解答
3
問22
次のコマンドは、モジュールパス上のモジュールをすべてリスト表示します。どのコマンドを使用すればよいですか?
選択肢:
java listmodules
javac modulepath
jdeps dotoutput
jlink addmodules
解答
1
問23
次のコマンドは、モジュールを含むカスタムランタイムイメージを作成するために使用されます。どのコマンドを使用すればよいですか?
選択肢:
java describemodule
javac modulepath
jdeps jdkinternals
jlink output
解答
4
問24
次のコマンドは、モジュールが他のモジュールに依存しているかどうかを確認するために使用されます。どのコマンドを使用すればよいですか?
選択肢:
java describemodule
javac module
jdeps summary
jlink addmodules
解答
3
問25
次のコマンドは、モジュールの内容を表示するために使用されます。どのコマンドを使用すればよいですか?
選択肢:
java describemodule
javac module
jdeps dotoutput
jlink launcher
解答
1
問26
ボトムアップ移行では、モジュール化のどの部分から始めますか?
選択肢:
- 既存のライブラリや依存関係からモジュール化を開始する。
- アプリケーション全体を一度にモジュール化する。
- 全モジュールを一度にモジュール化する。
- モジュール化を使用しない。
解答
1
問27
トップダウン移行では、モジュール化のどの部分から始めますか?
選択肢:
- 既存のライブラリや依存関係からモジュール化を開始する。
- アプリケーション全体を一度にモジュール化する。
- 全モジュールを一度にモジュール化する。
- モジュール化を使用しない。
解答
2
問28
次のコマンドは、指定されたモジュールの依存関係をビジュアルに表現します。どのコマンドを使用すればよいですか?
選択肢:
java describemodule
jdeps dotoutput
javac modulepath
jlink compress
解答
2
問29
ボトムアップ移行の利点は何ですか?
選択肢:
- 一度に全アプリケーションをモジュール化できる。
- 既存のライブラリから段階的にモジュール化できるため、リスクが少ない。
- 依存関係のない新規プロジェクトに最適である。
- 既存のコードを変更せずにモジュール化できる。
解答
2
問30
トップダウン移行のリスクは何ですか?
選択肢:
- モジュール化が不完全なまま進められる。
- 既存のライブラリを変更せずにモジュール化できる。
- 一度に全アプリケーションをモジュール化するため、リスクが高い。
- モジュール化を使用しない。
解答
3
問31
あるモジュールのすべての公開クラスとメソッドを表示するために使用されるコマンドで、適切なオプションを選択してください。
選択肢:
java --list-modules
jdeps --verbose:class
jdeps --print-module-deps
java --describe-module <module-name>
解答
4
問32
module-info.java
ファイルでモジュールが他のモジュールからインターフェースを受け取るために必要なディレクティブはどれですか?
選択肢:
requires transitive
exports
provides
uses
解答
4
問33
jdeps
コマンドで指定されたモジュールの依存関係を含むグラフを生成するオプションはどれですか?
jdeps INSERTCOMMAND
選択肢:
--summary
--print-module-deps
--dotoutput
--verbose:class
解答
3
問34
次のmodule-info.java
ファイルの内容について、正しい選択肢を選んでください。
module com.example.app {
requires java.sql;
exports com.example.app.service;
uses com.example.app.service.MyService;
provides com.example.app.service.MyService with com.example.app.service.MyServiceImpl;
}
選択肢:
- このモジュールは
java.sql
モジュールを使用し、com.example.app.service
パッケージをエクスポートしますが、サービスの提供はしていません。 - このモジュールは
java.sql
モジュールを使用し、サービスを提供しますが、サービスの使用はしていません。 - このモジュールは
java.sql
モジュールを使用し、com.example.app.service
パッケージをエクスポートし、サービスの使用と提供の両方を行っています。 - このモジュールは
java.sql
モジュールを使用し、com.example.app.service
パッケージをエクスポートし、サービスの使用はしていますが、提供はしていません。
解答
3
問35
次のシナリオでモジュールの名前解決に問題が生じた場合、考えられる原因はどれですか?
シナリオ:
-
module-info.java
でrequires
されているモジュールが見つからない。
選択肢:
- モジュールパスにモジュールが存在しない。
-
exports
ディレクティブが正しく使用されていない。 -
provides
ディレクティブが欠如している。 -
uses
ディレクティブが間違っている。
解答
1
問36
自動モジュールを利用する際の注意点として正しい選択肢を選んでください。
選択肢:
- 自動モジュールはすべての
requires
関係を自動的に解決します。 - 自動モジュールは明示的な
exports
ディレクティブを必要としません。 - 自動モジュールは他のモジュールから使用できません。
- 自動モジュールは名前付きモジュールと同じ方法で管理されます。
解答
2
問37
次のmodule-info.java
ファイルで、com.example.api
が依存するモジュールを変更せずに、com.example.impl
モジュールの内部パッケージcom.example.impl.internal
をcom.example.api
モジュールで使用可能にする方法はどれですか?
module com.example.impl {
INSERTCODE
}
選択肢:
exports com.example.impl.internal to com.example.api;
opens com.example.impl.internal to com.example.api;
requires com.example.api;
provides com.example.api with com.example.impl.internal;
解答
2
問38
jlink
コマンドを使用して、特定のモジュールを含む最小限のランタイムイメージを作成するために正しい手順はどれですか?
選択肢:
jlink --list-modules --output <path>
jlink --module-path <path> --add-modules <module-name> --output <path>
jlink --describe-module --compress 2
jlink --module-path <path> --launcher <launcher-name> --output <path>
解答
2
問39
次のmodule-info.java
ファイルについて、指定されたパッケージが複数のモジュールによってエクスポートされている場合の挙動として正しいものはどれですか?
module com.example {
exports com.example.package;
}
module com.another {
exports com.example.package;
}
選択肢:
- 競合が発生し、コンパイルエラーになる。
- 最初に見つかったモジュールが優先される。
- モジュールパスに明示的に順序が指定されている場合、指定された順に解決される。
- すべてのモジュールから同時に使用可能となる。
解答
1
問40
module-info.java
ファイルで、モジュールが他のモジュールから公開されるクラスを明示的に受け取るにはどのディレクティブを使用しますか?
選択肢:
requires transitive
exports
opens
uses
解答
1