JavaRush /Java Blog /Random-JA /コーヒーブレイク #145。Java 面接でよくある 90 の質問と回答

コーヒーブレイク #145。Java 面接でよくある 90 の質問と回答

Random-JA グループに公開済み
出典: Usemynotes この出版物には、初級レベルおよび中級レベルの Java 開発者とのインタビューでよく遭遇する質問のリストが含まれています。 コーヒーブレイク #145。 Java 面接でよくある 90 の質問と回答 - 1

1. Java がプラットフォームに依存しない言語である理由は何ですか?

Java は、JDK (Java Development Kit) によって生成されたバイト コードが、オペレーティング システムに関係なく、任意のプラットフォーム上の JVM (Java Virtual Machine) によって実行できるため、プラットフォーム非依存言語と呼ばれます。

2. なぜ Java は完全なオブジェクト指向言語ではないのですか?

Java は、オブジェクトではない 8 つのプリミティブ データ型 ( booleanbytecharintfloatdoublelongshort )を使用するため、完全なオブジェクト指向言語ではありません。

3. Java では main() メソッドが静的になっているのはなぜですか?

main()メソッドは静的に宣言されているため、宣言されているクラスのオブジェクトやインスタンスを作成せずに JVM から直接呼び出すことができます。

4. Java のラッパー クラスとは何ですか?

Java では、intfloatなどのすべてのプリミティブ データ型には、ラッパー クラスと呼ばれる対応するクラスがあります。これらは、プリミティブ データ型をラップまたはオブジェクトに変換するため、ラッパーとも呼ばれます。

5. Java のコンストラクターとは何ですか?

Java のコンストラクターは、オブジェクトまたはインスタンスの作成時に自動的に呼び出される特別なメソッドです。コンストラクター名とクラス名は一致する必要があります。

6. Java の配列と ArrayList の違いは何ですか?

配列 配列リスト
これは静的なデータ構造であるため、サイズは固定されており、変更できません。 これは、コレクション構造内の可変長配列または動的サイズの配列であり、要件に応じてサイズを変更できることを意味します。
オブジェクトとプリミティブ型の両方を保存できます。 オブジェクトのみを格納または含めることができますが、プリミティブ型は格納できません。
要素にアクセスするには、角括弧 [ ] でインデックスを指定します。 get()メソッド内でインデックス番号を指定することで要素にアクセスできます。

7. Java はなぜポインタを使用しないのですか?

Java はポインタを使用しません。ポインタは安全ではなく、プログラムが複雑になるためです。さらに、Java はポインタを回避して、ユーザーに直接メモリ アクセスを提供することを回避します。

8. Java にはどのような種類のアクセス修飾子がありますか?

Java では、アクセス修飾子は、クラス外または別のクラス内のクラスおよびメソッドへのアクセスを示すために使用されるキーワードです。Java には 4 つの異なるタイプのアクセス修飾子があります。
  • デフォルト
  • 公共
  • プライベート
  • 保護されています

9. Java の JIT とは何ですか?

JIT は、Java の Just-In-Time Compiler の頭字語です。実行時に、バイトコードをネイティブ マシン コードに変換します。JIT コンパイラーは、Java プログラムのパフォーマンスの向上に役立ちます。

10. Javaのfinalキーワードとは何ですか?

Java では、finalキーワードは定数を表すために使用されます。変数、クラス、メソッドとともに使用できます。
  • Finalキーワードが変数とともに使用されている場合、その値は変更できません。
  • Finalキーワードがメソッドで使用されている場合、そのメソッドをオーバーライドすることはできません。
  • クラスをFinal と宣言すると、そのクラスをサブクラスに拡張したり継承したりすることはできません。

11. OOP (Java のオブジェクト指向プログラミング) の基本概念は何ですか?

Java のオブジェクト指向プログラミング (OOP) では、次の 4 つの主要な概念が使用されます。
  • カプセル化。
  • 抽象化。
  • 継承。
  • 多態性。

12. Java のシングルトン クラスとは何ですか?また、クラスをシングルトンにする方法は何ですか?

Java では、シングルトン クラスは、インスタンスまたはオブジェクトを 1 つだけ持つクラスです。プライベート コンストラクターを作成することで、クラスをシングルトンにすることができます。

13. Java のローカル変数とインスタンス変数の違いは何ですか?

ローカル変数はブロックまたはメソッド内で定義されます。ローカル変数のスコープはブロック内のみにあります。クラス インスタンス変数は、クラス内でメソッドの外で定義される変数です。クラスのオブジェクトを作成することによってアクセスされ、オブジェクトが削除されると終了します。

14. OOP またはオブジェクト指向プログラミングとは何ですか?

オブジェクト指向プログラミング (OOP) は、オブジェクトの概念を使用してプログラムやアプリケーションを開発するために使用されるプログラミング パラダイムです。

15. Java 文字列を不変にするのはなぜですか?

Java の文字列は不変です。つまり、文字列オブジェクトが作成されると更新することはできませんが、新しい文字列オブジェクトは作成されます。これは、文字列オブジェクトが文字列プールにキャッシュされるためです。

16. Java のインターフェイス クラスと抽象クラスの違いについて説明する

インターフェース 抽象クラス
抽象メソッドのみを持つことができます。 抽象メソッドと非抽象メソッドの両方を許可します。
サブクラスは、 Implementsキーワードを使用してインターフェイスを実装します。 サブクラスまたは派生クラスは、キーワードを使用して実装を拡張する (拡張する) ことによって抽象化を継承します。
インターフェイスには、実装のないパブリック静的メソッドのみを含めることができます。 実装なしのメソッドも、実装ありのメソッドも含めることができます。
インターフェイスのすべてのメソッドは、それを実装するクラスによって実装される必要があります。 抽象クラスを継承するクラスは、そのスーパークラスのすべてのメソッドを実装する必要はありません。

17. ポリモーフィズムとは何を意味しますか?またその種類は何ですか?

Java におけるポリモーフィズムとは、オブジェクトが複数の形式を取ることができる機能です。さまざまな方法で実行できる単一のタスクまたはアクティビティとして定義することもできます。ポリモーフィズムは 2 つのタイプに分類されます。
  1. コンパイル時のポリモーフィズム。
  2. 実行時のポリモーフィズム。

18. Java はどのようにしてコンパイル時および実行時のポリモーフィズムを実現しますか?

Java では、コンパイル時のポリモーフィズムはメソッドのオーバーロードによって実現されますが、実行時のポリモーフィズムはメソッドのオーバーライドによって実現されます。

19. 抽象化とは何を意味しますか? Java では抽象化はどのように実現されますか?

抽象化とは、内部または実装の詳細を示さずに重要な情報を表現する行為です。Java では、これは抽象クラスとインターフェイスの使用によって実現されます。

20. Java のインターフェースとは何ですか?

Java のインターフェイスは、関数宣言のみを備えた抽象メソッドのセットであり、実装はありません。インターフェイスのオブジェクトやインスタンスを作成することはできません。インターフェイスにはコンストラクターを含めることはできません。クラスは、Java の Implements キーワードを使用して複数のインターフェイスを実装できます。

21. Java にはどのような種類の継承がありますか?

Java では、extends キーワードを使用して、スーパークラスまたは基本クラスの属性とメソッドを継承します。継承には次の 5 つのタイプがあります。
  1. 単一の継承。
  2. マルチレベルの継承。
  3. 階層的な継承。
  4. インターフェイスを介した多重継承。
  5. ハイブリッド継承。

22. Java はなぜ多重継承をサポートしないのですか?

Java では、あいまいさを防ぐために多重継承はサポートされていません。たとえば、2 つのスーパークラス A と B があり、A と B の両方を継承するサブクラス C があるとします。クラス A と B の両方に show() メソッドがありますクラス C のオブジェクトを作成してshow()メソッドを呼び出すと、 show()メソッドのどのクラスを実行すべき かが明確でないため、コンパイラはエラーをスローします。

23. メソッドのオーバーロードとメソッドのオーバーライドの違いは何ですか?

メソッドのオーバーロード メソッドのオーバーライド
コンパイル時のポリモーフィズム。 実行時のポリモーフィズム。
同じクラス内の、同じ関数名またはメソッド名を持つがシグネチャが異なる 2 つ以上のメソッド。 異なるクラス内で同じ関数またはメソッド名とシグネチャを持つ 2 つ以上のメソッド。

24. Java で静的メソッドまたはプライベート メソッドをオーバーライドすることはできますか?

プライベート メソッドはクラスの外部からアクセスできないため、サブクラスによってオーバーライドされません。したがって、これをオーバーライドすることはできません。同様に、基本クラスと派生クラスの両方で同じメソッド名とシグネチャを持つ静的メソッドを作成すると、派生クラスは基本クラスのメソッドを非表示にするため、静的メソッドをオーバーライドすることはできません。これはメソッドの隠蔽として知られています。

25. Java におけるコンストラクターのオーバーロードとは何ですか?

Java では、クラスに複数のコンストラクターがあり、パラメーターのリストが異なる場合、コンストラクターはオーバーロードされているとみなされます。

26. 抽象メソッドがない場合でも、抽象クラスを定義できますか?

はい、抽象メソッドがなくても抽象クラスを作成できます。ただし、クラスに少なくとも 1 つの抽象メソッドが含まれる場合は、それを抽象として定義する必要があります。そうしないと、エラーが発生します。

27. 静的変数と静的メソッドは何に使用されますか?

各オブジェクトの複数のコピーを作成する代わりに、クラスのすべてのオブジェクトに共通のメソッドまたは変数を使用したい場合は、静的メンバー (メソッドと変数) を使用します。たとえば、Employee クラスでは、すべてのオブジェクトが同じ会社名を持つため、会社名を静的にすることができます。

28. Java には何種類のコンストラクターがありますか?

Java には 2 種類のコンストラクターがあります。
  1. デフォルトのコンストラクターはパラメーターを受け入れません。
  2. パラメーター化されたコンストラクター - 少なくとも 1 つのパラメーターを取ります。

29. Java はコピー コンストラクターを使用しますか?

いいえ、Java には C++ のようなコピー コンストラクターがありません。

30. Java のコンストラクターとメソッドの違いを説明する

コンストラクタ 方法
コンストラクター名とクラス名は一致する必要があります。 メソッド名はクラス名と同じ場合もあれば、異なる場合もあります。
戻り値の型を持つことはできません。 戻り値の型が必要です。
コンストラクターを静的にすることはできません。 メソッドは静的である場合もあれば、静的でない場合もあります。
これは、クラスのオブジェクトまたはインスタンスが作成されるときに自動的に呼び出されるか、呼び出されます。 これは、オブジェクトの名前とピリオド (.) を使用して呼び出されるか、適用されます。
オブジェクトの状態を初期化するために使用されます。 オブジェクトの動作を定義するために使用されます。

31. main() メソッドを使用せずにプログラムを実行することはできますか?

いいえ、プログラムの実行はmain()メソッドから開始されるため、Java ではmain()メソッドなしではプログラムを実行できません。

32. Java では this キーワードは何を意味しますか?

Java の this キーワードは、メソッドまたは変数を呼び出す現在のオブジェクトを参照するために使用される参照変数です。

33. Java で this キーワードを使用して静的メンバーを参照することはできますか?

はい、これは現在のオブジェクトの参照変数であるため、this キーワードを使用して静的メンバーを参照できます。

34. Java の main() メソッドをパブリックではなくプライベートにできますか?

main()メソッドをプライベートにすることはできますが、実行時エラーが発生するため、プログラムは実行されません。

35. Java では super キーワードは何を意味しますか?

Java では、super キーワードは、直接の親クラスのオブジェクトを参照するために使用される参照変数です。

36. ベクトルと配列の違いを述べます。

ベクター 配列
これは動的にサイズ変更される配列です。 固定サイズのデータ​​構造です。
ベクトルは同期されています。 アレイは同期されていません。
配列に比べて遅いです。 ベクターに比べて高速です。
Java オブジェクトのみを含めたり保存したりできます。 これは、プリミティブ型と Java オブジェクトの両方を格納するために使用されます。
size()メソッドを使用して、ベクトルの長さを調べることができます。 lengthプロパティを使用して、配列の長さを確認できます。

37. Java におけるマルチスレッドとは何ですか?

マルチスレッドとは、単一のプログラム内で複数のタスクを同時に実行するプロセスです。これは、プロセッサの負荷を最大化するために行われます。

38. Java でマルチスレッドを実装するにはどのような方法がありますか?

Java でのマルチスレッドは、次の 2 つの方法で実装できます。
  1. Runnableインターフェースをjava.lang.Runnableに実装することによって。
  2. java.lang.ThreadThreadクラスを拡張することによって。

39. Java における super キーワードと this キーワードの違いをいくつか述べます。

素晴らしい これ
親クラスのオブジェクトを参照するために使用されます。 現在のクラス オブジェクトを参照するために使用されます。
親クラスまたは基本クラスのメソッドにアクセスするために使用されます。 現在のクラスのメソッドにアクセスするために使用されます。
基本クラスのデフォルトのコンストラクターを呼び出します。 現在のクラスのデフォルトのコンストラクターを呼び出します。

40. サブクラスと内部クラスの違いは何ですか?

サブクラス 内部クラス
これは、基本クラスまたは親クラスのプロパティとメソッドを継承するクラスです。 これは、別のクラス内にネストされたクラスです。
スーパークラスまたは基本クラスのすべてのパブリック メンバーと保護されたメンバーにアクセスできます。 外部クラスのすべてのメンバーにアクセスできます。

41. Javaのクラスローダーとは何ですか?

Java クラス ローダーは、実行時に Java クラスを Java 仮想マシン (JVM) にロードするために使用される Java ランタイム環境 (JRE) のコンポーネントです。

42. Try ブロックの後に Catch ブロックで Java 例外処理を行う必要がありますか?

はい、 tryブロックによってスローされた例外は catch ブロックでキャッチされる必要があるため、catchブロック使用は必須です。

43. Java の例外の種類に名前を付ける

Java の例外には次の 2 つのタイプがあります。
  1. 未チェックの例外
  2. チェックされた例外

44. スレッドの状態とは何ですか?

Java には 4 つのスレッド状態があります。
  1. 新しい流れ。
  2. 実行可能。
  3. 実行不可。
  4. 死亡または終了。

45. NullPointerException とは何ですか?

ユーザーが null オブジェクトの値にアクセスまたは変更しようとすると、 NullPointerExceptionがスローされます。

46. Java例外処理ではどのような種類のキーワードが使用されますか?

  1. 試す

  2. キャッチ

  3. ついに

  4. 投げる

  5. 投げる

47. Java で main() メソッドをオーバーロードすることは可能ですか?

はい、main()メソッドはオーバーロードできますが、JVM または Java 仮想マシンは元のmain()メソッドのみを呼び出します。

48. Java で main() メソッドをオーバーライドすることはできますか?

いいえ、main()メソッドは静的メソッドであり、静的メソッドをオーバーライドできないためです。

49.equals() と == の違いは何ですか?

Java では、equals() は2 つのオブジェクトまたは変数の値を比較するために使用されるメソッドであり、==はさらに 2 つのオブジェクトまたは変数のアドレスまたはメモリ位置を比較するために使用される比較演算子です。

50. クラス コンストラクターは値を返すことができますか?

いいえ、コンストラクターには戻り値の型がないため、値を返すことはできません。

51. 集計を定義する

集約は、2 つのクラス間の has-a 関係として定義される関連付けの形式です。これはコードを再利用するために行われます。これは、2 つのクラス間の一方向または一方向の関係です。

52. 協会とは何ですか?

アソシエーションは、オブジェクトを使用して 2 つのクラス間の関係を定義します。関係または関連付けは、1 対 1、1 対多、多対多、または多対 1 にすることができます。集約と合成は、関連付けの 2 つの形式です。

53. 構成とは何ですか?

合成は、2 つのクラスが相互に依存する関連付けの形式です。

54. 動的バインディングと静的バインディングの違いは何ですか?

動的バインディングでは、メソッドをオブジェクトにバインドするかどうかが実行時に決定されます。遅延バインディングは、動的バインディングの別名です。静的バインディングでは、メソッドをオブジェクトにバインドするかどうかはコンパイル時に決定されます。静的バインディングは、早期バインディングの別名です。

55. カプセル化と抽象化の違いを説明する

カプセル化では、データとメソッドがクラスと呼ばれる単一の単位にパッケージ化またはバンドルされます。抽象化では重要な情報のみが表示され、内部または実装の詳細は非表示になります。

56. Javaの抽象クラスとは何ですか?

抽象クラスはインスタンス化できないクラスですが、参照変数を作成できます。クラスは、abstract キーワードを使用して抽象として宣言されます。これには、抽象メソッドと非抽象メソッドの両方が含まれます。

57. メソッド内で、final キーワードと abstract キーワードの両方を使用できますか?

いいえ、抽象メソッドはサブクラスによってオーバーライドされる必要があり、 finalメソッドはオーバーライドできないため、finalメソッドとstaticメソッドを抽象メソッドと一緒に使用することはできません。

58. インターフェース内でメソッドをfinalとして宣言できますか?

いいえ、インターフェイス内のすべてのメソッドは抽象メソッドであるため、メソッドをFinalとして宣言することはできません。したがって、メソッドはサブクラスによって実装する必要があり、 finalメソッドはオーバーライドできません。

59. すべての Java 例外クラスの基本クラスに名前を付けます

すべての例外の基本クラスはjava.lang.Throwableです。

60. 1 つの try ブロック内に複数の catch ブロックを作成することはできますか?

はい、1 つのtryブロックに対して複数の catch ブロックを作成できます。

61. Java プログラムを実行するために指定する必要がある 2 つの環境変数を定義します。

  1. パス変数。
  2. クラスパス変数。

62. Java でデストラクターを使用することはできますか?

いいえ、Java ではデストラクターを使用できません。

63. 匿名クラスとはどういう意味ですか?

Java の匿名内部クラスには名前がなく、オブジェクトを 1 つだけ作成します。

64. すべてのスレッドに実装する必要がある Java メソッドに名前を付けます

Run()メソッド。

65. Java における Break と continue の違いは何ですか?

壊す 続く
特定の条件が満たされた場合にループを終了または終了するために使用されます。 何らかの条件に基づいて現在の反復のループの実行をスキップするために使用されます。
ループやスイッチ内で使用できます。 ループ内でのみ使用されます。

66. Java の文字列プールとは何ですか?

Java の文字列プールは、ヒープ メモリに格納された文字列のコレクションです。

67. Java の throws キーワードと throws キーワードの違いは何ですか?

投げる 投げる
明示的に例外をスローするために使用されます。 実行時にメソッドによってスローされる例外を宣言するために使用されます。
メソッド本体内で使用されます。 throwsキーワードを使用すると、複数の例外を宣言できます。
Throwの後には、Exceptionクラスのインスタンスが続きます。 その後に、スローされる例外クラスの名前が続きます。

68. 同じクラスの別のコンストラクター内でコンストラクターを呼び出すことはできますか?

はい、最初の行として this()を使用して、別のコンストラクター内で同じクラスのコンストラクターを呼び出すことができます。

69. JavaでString BufferとStringクラスを比較することはできますか?

いいえ、String BufferStringオブジェクトを比較することはできません。エラーが発生するためです。

70. 継承中にコンストラクターはどのような順序で呼び出されますか?

親クラスまたは基本クラスのコンストラクターが最初に呼び出され、次に派生クラスのコンストラクターが呼び出されます。

71. コンストラクターにクラス名以外の名前を付けることはできますか?

いいえ、コンストラクターとクラス名は同じである必要があります。

72. Java パッケージとは何ですか?

パッケージは、グループ化されたクラスとインターフェイスのコレクションです。

73. String クラスと StringBuffer クラスの違いは何ですか?

文字列バッファ
Stringクラスは不変です。 StringBufferクラスは変更可能です。
StringBufferよりも遅い。 Stringよりも高速です。
多くの文字列を連結すると、より多くのメモリが使用されます。 多くの文字列を連結するときに使用するメモリが少なくなります。

74. Java で静的メソッドをオーバーロードすることは可能ですか?

はい、さまざまな関数シグネチャを渡すことで、Java の静的メソッドをオーバーロードできます。

75.ガベージコレクション中にクリーンアップされるのはメモリのどのコンポーネント、スタックまたはヒープですか?

ヒープ。

76.データを頻繁に更新する必要がある場合、次の文字列クラスのうちどれを使用する必要がありますか?

StringBufferクラスは変更可能であり、文字列プールが過負荷にならないため、頻繁に更新する場合に使用する必要があります。

77. Java の main() メソッドで static キーワードが使用されていない場合はどうなりますか?

コンパイル エラーは発生しませんが、実行時にNoSuchMethodErrorエラーが発生します。

78. try ブロックと catch ブロックの最後に return ステートメントが配置された場合、finally ブロックは実行されますか?

はい、finallyブロックは例外があるかどうかに関係なく常に実行されます。

79. Java ソース ファイル内に多数のパブリック クラスを含めることは可能ですか?

いいえ、Java ソース ファイルにはパブリック クラスを 1 つだけ含めることができます。

80. インターフェースは別のインターフェースを拡張できますか?

はい、Java の extends キーワードを使用して、あるインターフェイスが別のインターフェイスを拡張できます。

81. Java のさまざまなタイプのクラスローダーに名前を付けます

  1. ブートストラップ クラスローダー

  2. 拡張クラスローダー

  3. システムクラスローダー

82. Java では三項演算子は何をしますか?

三項演算子は、 Java のif-else演算子の代わりに使用されます。これは、3 つのオペランドを含む唯一の条件演算子です。

83. Java ではガベージ コレクションは何をしますか?

Java ガベージ コレクションは、Java アプリケーションがメモリ内の未使用のオブジェクトやパッケージを削除またはクリーンアップすることでメモリを自動的に節約する方法です。

84. Java ではデフォルトのコンストラクターはどのように使用されますか?

Java では、デフォルト コンストラクターは、オブジェクトのデータ メンバーまたはメンバー変数をデフォルト値で初期化するために使用されます。プログラム内に他のコンストラクターがない場合、コンパイラーによって自動的に生成されます。

85. Javaのパスとクラスパスの違いは何ですか

  1. クラスパスは、バイトコード ファイル、つまり .class ファイルの場所を定義します。
  2. パスは .exe ファイルの場所を指定します。

86. Javaのデータ型は何ですか?

Java には 8 つのデータ型があります。
  1. 短い

  2. バイト

  3. チャー

  4. 整数

  5. 浮く

  6. ダブル

  7. 長さ

  8. ブール値

87. Java における OOP の 4 つの概念は何ですか?

  1. カプセル化。
  2. 抽象化。
  3. 多態性。
  4. 継承。

88. Java で this キーワードに null 値を割り当てることはできますか?

いいえ。

89. Javaの静的ブロックとはどういう意味ですか?

Java の静的ブロックは、クラスの静的変数を初期化するために使用されます。これは、クラスが最初にメモリにロードされたときに 1 回だけ実行されます。

90. 例外とは何ですか? Java のすべての例外クラス定義が含まれているパッケージはどれですか?

例外とは、プログラムの実行中に発生する異常な状況です。これらは、不正なユーザー入力または不正なエンコーダ ロジックの結果として発生する可能性があります。java.lang.Exceptionパッケージには、Java のすべての例外クラス定義が含まれています。
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION