Java

✅【保存版】Java面接対策:よく聞かれる質問と回答まとめ

勉強ちゃん

Javaの面接を受ける前に、どんな質問をされるか気になりますよね。

「もし事前に質問内容を知っていて、きちんと答えられたら…もっと良い印象が残せるかも!」
そんなあなたのために、Javaエンジニアの面接でよく聞かれる質問7つと、それぞれのわかりやすい回答をまとめました。

これを読めば、面接前に自信がつくこと間違いなし!


💡 よく聞かれる質問一覧

番号質問内容
1intIntegerの違いは?
2文字列の比較は何?
3インタフェースと抽象クラスの違いは?
4オーバーロードとオーバーライドの違いは?
5thissuperの使い分けは?
6Javaのメモリ管理の仕組みは?
7マルチスレッドとは?どうやって実現?

① intIntegerの違いは?

  • int:プリミティブ型(基本データ型)で、値そのものとして扱います。
     例:
    int num = 10 ;
  • Integer:クラス型(ラッパークラス)で、オブジェクトとして扱います。
     例:
    Integer num = new Integer(10);
項目intInteger
プリミティブ型参照型(オブジェクト)
初期値0null
null代入× 不可○ 可能
メソッド使用×○ compareTo()など

② 文字列の比較方法

Javaでは、文字列の比較には必ずequals()メソッドを使いましょう

String str1 = "hello";
String str2 = "hello";

System.out.println(a == b);         // メモリ参照を比較   → false
System.out.println(a.equals(b));   // 中身(文字列)を比較 → true
  • == は**参照(アドレス)**を比較
  • equals() は**値(中身)**を比較

③ インタフェースと抽象クラスの違い

項目インタフェース抽象クラス
継承多重継承できる単一継承のみ
フィールド定数のみ変数も定義できる
メソッド抽象メソッドのみ(Java8以降defaultもOK)抽象+通常のメソッド
コンストラクタなしあり

💡使い分けの目安:

  • 共通の振る舞いのみを定義 → インタフェース
  • 共通の属性+共通の振る舞いを定義 → 抽象クラス

④ オーバーロードとオーバーライドの違い

項目オーバーロードオーバーライド
説明同じ名前で引数が違うメソッドを複数定義親クラスのメソッドを子クラスで再定義
引数違ってOK同じである必要がある
戻り値自由基本的に同じ(サブクラスでもOK)
アノテーション不要@Override 推奨

⑤ thissuperの使い方・違い

  • this現在のクラスのインスタンスを指します(自分自身)。
  • super親クラスのメンバーやコンストラクタを参照したいときに使います。

例:

class Parent {
  void say() { System.out.println("親のこんにちは"); }
}

class Child extends Parent {
  void childSay() {
    super.say();     // 親クラスのgreet()を呼ぶ
    System.out.println("子のこんにちは");
  }
void childEvent(){
    this. childSay();
}
}
出力結果
親のこんにちは
子のこんにちは

⑥ Javaのメモリ管理

Javaは自動でメモリを管理する「ガベージコレクション(GC)」という仕組みを持っています。

主なメモリ領域:

  • Heap領域:オブジェクトの保存場所(GCの対象)
  • Stack領域:メソッドの呼び出しやローカル変数の保存場所
  • Method領域:クラス情報、定数など

ポイント:

  • 不要になったオブジェクトは、自動で削除されます。
  • メモリリークを避けるには、不要な参照を早めに切ることが大事です。

⑦ マルチスレッドとは?どう実現?

マルチスレッドは複数の処理を同時に行うことができる仕組みです。

2つの実装方法:

  1. Threadクラスを継承します
 class MyThread extends Thread {  
     public void run() { 
         System.out.println("スレッド実行中");  
     }
}
  1. Runnableインタフェースを実装します
class MyRunnable implements Runnable {
  public void run() {
    System.out.println("スレッド実行中");
  }
}

違い:

  • Runnableの方が柔軟で、他のクラスと組み合わせやすいです。
  • 実用的にはExecutorServiceを使うのが一般的です。

🎯 まとめ

面接でよく聞かれるJavaの質問をまとめると:

✅ intIntegerの違いを理解します。
✅ 文字列はequals()で比較することを理解します。
✅ 抽象クラスとインタフェースの使い分けを理解します。
✅ オーバーロードとオーバーライドの違いを理解します。
✅ thissuperの使い方を理解します。
✅ Javaのメモリ管理(Heap、GC)を理解します。
✅ マルチスレッドの基本と実装方法を理解します。

お役に立てればうれしいです。

ABOUT ME
自己紹介
自己紹介
職業:Web開発エンジニア
こんにちは!
このブログでは、ITのお仕事で学んだ知識や、 日本での生活で学んだ知識を紹介しています。
お役に立てればうれしいです 😊
記事URLをコピーしました