ホームページ Java &#&面接の質問 Java の面接でのこれらの難しい質問に答えることができますか?

Java の面接でのこれらの難しい質問に答えることができますか?

Mar 15, 2021 am 09:21 AM
java 面接の質問

Java の面接でのこれらの難しい質問に答えることができますか?

この記事では、外国人 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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

範囲のループについて例を参照してください 範囲のループについて例を参照してください Jul 25, 2025 am 03:52 AM

GOでは、範囲を使用してデータ型を反復し、対応する値を返します。1。スライスと配列の場合、範囲はインデックスと要素コピーを返します。 2。_を使用して、不要なインデックスまたは値を無視できます。 3。マップの場合、範囲はキーと値を返しますが、反復順序は固定されていません。 4。文字列の場合、範囲はルーンインデックスと文字(ルーンタイプ)を返し、ユニコードをサポートします。 5。チャネルの場合、範囲はチャネルが閉じられるまで値を読み続け、単一の要素のみが返されます。範囲を使用すると、手動でインデックスの管理が回避されると、反復剤をよりシンプルで安全にします。

Java開発に適用されるクリーンコード原則 Java開発に適用されるクリーンコード原則 Jul 25, 2025 am 03:11 AM

意味のある命名:intdayssincemodificationなどの変数を使用します。 getSerrolesbyUsername()などの方法コード意図を明確にするため。 2。関数は小さく、1つのことのみを実行する必要があります。たとえば、createUser()は、valimaterequest()やmaptouser()などの単一責任メソッドに分割されます。 3.コメントを削減し、自己解釈コードを書きます:冗長なコメントの代わりにusersprivilededaccess()を使用します。 4.エラーをエレガントに処理する:例外を無視しないでください。リソース付きのTry-Resourcesを使用して、リソースを自動的に管理します。 5。「ボーイスカウトルール」に従ってください:変更するたびに変数を最適化します

Python Run Shellコマンドの例 Python Run Shellコマンドの例 Jul 26, 2025 am 07:50 AM

subprocess.run()を使用して、シェルコマンドを安全に実行し、出力をキャプチャします。注入リスクを避けるために、リストのパラメーターを渡すことをお勧めします。 2。シェル特性が必要な場合は、シェル= trueを設定できますが、コマンドインジェクションに注意してください。 3. subprocess.popenを使用して、リアルタイム出力処理を実現します。 4。Check = COMMATが失敗したときに例外をスローするためにtrueを設定します。 5.単純なシナリオで直接チェーンを呼び出して出力を取得できます。 os.system()または非推奨モジュールの使用を避けるために、日常生活の中でsubprocess.run()を優先する必要があります。上記の方法は、Pythonでシェルコマンドを実行するコアの使用を上書きします。

JavaScriptの並行性パターンのマスター:Webワーカーvs. Javaスレッド JavaScriptの並行性パターンのマスター:Webワーカーvs. Javaスレッド Jul 25, 2025 am 04:31 AM

JavaScriptのWebworkersとJavathreadsの同時処理には本質的な違いがあります。 1。JavaScriptは、単一スレッドモデルを採用しています。 Webworkersは、ブラウザによって提供される独立したスレッドです。これは、UIをブロックしないがDOMを操作できない時間のかかるタスクを実行するのに適しています。 2。Javaは、複雑な同時ロジックとサーバー側の処理に適した、スレッドクラスを通じて作成された言語レベルからの実際のマルチスレッドをサポートしています。 3。ウェブワーカーは、PostMessage()を使用してメインスレッドと通信します。これは非常に安全で孤立しています。 Javaスレッドはメモリを共有できるため、同期の問題に注意する必要があります。 4。ウェブワーカーは、画像処理などのフロントエンドの並列コンピューティングにより適しています。

Java開発者にとって説明された堅実な原則 Java開発者にとって説明された堅実な原則 Jul 26, 2025 am 05:16 AM

単一の責任原則(SRP)は、保存とメールの送信を順序処理など、1つの関数のみに対して責任を負うことをクラスに要求しています。 2。開閉原理(OCP)では、電卓を変更せずに新しいグラフィックを追加するなど、拡張機能の開閉と閉鎖が必要です。 3.リヒター置換原理(LSP)は、サブクラスが、正方形の継承長方形によって引き起こされる行動の異常を回避するために独立したクラスを使用するなど、プログラムを破壊することなく親クラスを置き換えることを要求しています。 4.インターフェイス分離原理(ISP)では、クライアントがマルチファンクションデバイスインターフェイスを独立した印刷、スキャン、ファックスインターフェースに分割するなど、不要なインターフェイスに依存してはならないことが必要です。 5.依存関係の反転原理(DIP)では、高レベルのモジュールが低レベルモジュールに依存せず、両方ともOrderserviceなどの抽象化に依存することが必要です。

Spring Bootを備えたJava開発者向けのGraphQL Spring Bootを備えたJava開発者向けのGraphQL Jul 25, 2025 am 04:31 AM

GraphQLは、公式サポートを通じてスプリングブートに簡単に統合できます。 1. spring-boot-starter-graphqlを使用して依存関係を追加します。 2。クエリと突然変異を宣言するために、リソースの下のschema.graphqlsファイルを定義します。 3. @Controllerを使用して、 @QueryMappingおよび@MutationMappingと協力してデータ収集を実現します。 4. GraphiQLインターフェイステストAPIを有効にします。 5.入力検証、n 1クエリ防止、セキュリティ制御などのベストプラクティスに従い、最終的には柔軟で効率的なクライアント駆動型APIを実装します。

Resilience4Jを使用した回復力のあるJavaマイクロサービスを構築します Resilience4Jを使用した回復力のあるJavaマイクロサービスを構築します Jul 26, 2025 am 06:36 AM

Resilience4Jは、回路ブレーカー、現在の制限、再試行、その他のメカニズムを介してJavaマイクロサービスの柔軟性を向上させます。 1.サーキットブレーカーを使用して、カスケードの障害を防ぎ、サービスが頻繁に失敗したときにリクエストが送信されないようにします。 2。現在の制限制御を使用して、突然のトラフィックの下流サービスを圧倒することを避けるために、同時アクセスを制御します。 3.再試行メカニズムを介した一時的なエラーに応答しますが、無効な再試行とリソースの無駄を避けます。 4.複数の戦略を組み合わせて使用して、システムの全体的な回復力を高めることができますが、ポリシー間の相互の影響力に注意を払う必要があります。これらの機能を適切に構成すると、分散システムの安定性と断層トレランスが大幅に向上する可能性があります。

Javaの軽量の並行性にProject Loomを使用します Javaの軽量の並行性にProject Loomを使用します Jul 26, 2025 am 06:41 AM

ProjectlooomintroduceSvirtualThreadStoSoSolvejava’sconcurrencylimitations byEnablinglightweight、scalablethreading.1.virtualthreadsarejvm-managed、low-footprintthreadsthatallowmillions of conurentthreadswithminimalosources.2.theysimplifyplifyplifypliyplifyplifyplifyplifyplifyplifypliyplifyplifyplifyprifyprifycurrys

See all articles