この記事では、外国人 Java の面接での質問をいくつかまとめました。これも多くの人を困惑させたと聞きました。これらの面接の質問を見て、何が興味深いのかを見てみましょう。
1. 次の Java コードの出力は何ですか?
public class Test { public static void main(String[] args) { method(null); } public static void method(Object o) { System.out.println("Object method"); } public static void method(String s) { System.out.println("String method"); } }
回答:
は「文字列メソッド」を出力します。まず、Java では null はオブジェクトではないため、Java では任意の参照型に null を割り当てることができます。 Java の文字列は Java.lang.String クラスのオブジェクトです。ここで、Java コンパイラは、最も具体的なパラメータ タイプを使用してオーバーロードされたメソッドを呼び出すことを選択します。 String 型は Object 型よりも具体的であるため、method(String s) メソッドが呼び出されます。
2. 次の Java コードの出力は何ですか?
public class Test{ public static void main(String[] args){ Integer num1 = 100; Integer num2 = 100; if(num1 == num2){ System.out.println("num1 == num2"); } else{ System.out.println("num1 != num2"); } } }
答え:
は「num1 == num2」と出力します。 「==」を使用して 2 つの異なるオブジェクト参照を比較する場合、値は常に「false」になります。ただし、ここでは、整数キャッシュにより、num1 と num2 がオートボックス化されます。したがって、num1 == num2 は「true」を返します。また、整数のキャッシュは、-128 から 127 までの値に対してのみ発生します。
3. ガベージ コレクションは Java アプリケーションのメモリ不足をどのように防ぐのでしょうか?
回答:
Java ガベージ コレクターは、Java アプリケーションのメモリ不足を防ぐことはできません。オブジェクトがスコープ外になり不要になったときに、未使用のメモリを単純にクリアします。したがって、Java アプリケーションのメモリ不足を防ぐことは保証されていません。
(学習ビデオ共有: java ビデオ チュートリアル)
4. Java は「参照渡し」ですか、それとも「値渡し」ですか
答え:
Java は常に「値渡し」です。ただし、変数にはオブジェクト自体ではなくオブジェクト参照が格納されるため、オブジェクトの値を渡すときは、そのオブジェクトへの参照を渡します。ただし、これは初心者にとって混乱を招く可能性がある「参照渡し」ではありません。
5. 次のコードによって、いくつの String オブジェクトが作成されますか?
public class Test{ public static void main(String[] args){ String s = new String("Hello World"); } }
答え:
2 つの String オブジェクトが作成されます。 1 つはヒープ メモリにあり、もう 1 つはメソッド領域の文字列定数プールにあります。
6. 次のコードの出力は何ですか?
public class Test{ public static void main(String[] arr){ System.out.println(0.1*3 == 0.3); System.out.println(0.1*2 == 0.2); } }
答え:
print の最初の文は false を出力し、print の 2 番目の文は true を出力します。浮動小数点数には丸め誤差があるため、単純な 2 進数表記では 2 のべき乗のみが正確に表現できます。 2 のべき乗に対応しない数値は、限られた桁数に合わせて四捨五入する必要があるため、0.1*3 は 0.3 に等しくなりません。
7. Java で静的メソッドをオーバーライドまたはオーバーロードすることは可能ですか?
回答:
静的 Java メソッドをオーバーロードすることは可能ですが、オーバーライドすることはできません。サブクラス内に同じ名前の別の静的メソッドを記述することはできますが、スーパークラスのメソッドはオーバーライドされません。 Javaではメソッド隠蔽と呼ばれます。
8. 2 つの double 値が等しいかどうかをテストする最も信頼できる方法は何ですか?
回答:
Double.compare(d1, d2) == 0
9. try または catch ブロックが return ステートメントを実行する場合、finally ブロックも実行されますか?
回答:
が実行されます。 finally ブロックの実行を防ぐ唯一の方法は、System.exit() を使用することです。
10. 次のコードの出力は何ですか?
public class Test{ public static void main(String[] args){ System.out.println("main method"); } public static void main(String args){ System.out.println("Overloaded main method"); } }
回答:
は「main メソッド」を出力します。 Java では main メソッドをオーバーロードできるため、エラーや例外は発生しません。他のメソッドと同様に実行するには、メイン メソッド内から呼び出す必要があります。
関連する推奨事項:Java 面接の質問と回答
以上がJava の面接でのこれらの難しい質問に答えることができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。