1. Java では、final キーワードはどのような用途に使用されますか?
変更された変数は初期化する必要があるか、変更できません。変更されたクラスは継承できません。また、変更されたメソッドはオーバーライドできません。
(その他の面接の質問に関する推奨事項: java の一般的な面接の質問 )
2. try{} に return ステートメントがあり、この文に従って try Will を実行します。 Finally{} 内のコードは実行されますか? いつ実行されますか? return の前または後?
return が実行された後、結果が返される前に実行されます。return 戻り結果が配置されます。関数スタック上で、実際に返される前に、finally が実行されるのを待ちます;
3.final、finally、finalize の違いを説明します。
final は、クラス (継承不可)、変数 (変更不可、1 回のみ割り当て可能)、メソッド (オーバーライド不可) の変更に使用されます。
finally は、次の目的で使用されます。 try{}catch 実行プロセス中、キャッチする例外や閉じるリソースなどがあるかどうかに関係なく、最終的に実行する必要があるブロックがあります。
finalize はメソッド名、オブジェクトの最後の単語です。 , ガベージ コレクターがオブジェクトを再利用してクリーンアップする前にメソッドを実行するために使用されます。オブジェクト クラスによって定義され、すべてのクラスがそれを継承します。
(推奨される関連チュートリアル: java 入門チュートリアル )
4. リフレクションを通じてオブジェクトを作成するにはどうすればよいですか?
Class オブジェクトの newInstance() メソッドを通じて、Class オブジェクトの対応するクラスのインスタンスを作成します。
Class オブジェクトを使用して、指定された Constructor オブジェクトを取得し、 Constructor オブジェクトの newInstance() メソッドを使用して作成します。 Class オブジェクトはクラスのインスタンスに対応します。
5. Java 8 の新機能
1. Java 8 では、関数型インターフェイスの概念が導入されています。 Lambda を使用すると、関数を引数としてメソッドに渡したり、コードをデータとして扱うことができます。
2. インターフェイスのデフォルト メソッドと静的メソッド: インターフェイスでデフォルト メソッドを定義し、default キーワードを使用して、デフォルトの実装を提供します。このインターフェイスを実装するすべてのクラスは、サブクラスが独自の実装を提供しない限り、デフォルト メソッドの実装を受け入れます。インターフェイスで静的メソッドを定義し、 static キーワードを使用して実装を提供することもできます。
3. ラムダ式と組み合わせたメソッド参照
(1) コンストラクターの参照。構文は Class::new
(2) 静的メソッド参照です。構文は Class::static_method
です。 (3) 特定のクラスのオブジェクト メソッド参照。その構文は Class::method
(4) 特定のオブジェクトのメソッド参照、その構文は instance::method
4 です。Java 8 では重複したアノテーションが導入されており、同じアノテーションは同じ場所では複数回宣言できます。繰り返しアノテーション メカニズム自体に @Repeatable でアノテーションを付ける必要があります。 Java 8 ではコンパイラ層で最適化が行われ、同じアノテーションがコレクションに保存されるため、基本的な原則は変わっていません。
5. アノテーションのサポートの拡張。Java 8 では、アノテーションのコンテキストが拡張されました。アノテーションは、ローカル変数、ジェネリック クラス、親クラスとインターフェイス実装、さらにはメソッド例外を含む、ほぼすべてのものに追加できます。アノテーションの追加。
6. null ポインター例外を防ぐために Optional クラスを導入します. Optional クラスは実際にはコンテナーであり、型 T または null の値を保存できます。 Optional クラスを使用すると、null ポインターを明示的にチェックする必要がありません。
(ビデオ チュートリアルの推奨事項: java コース)
7. ストリーム API と関数型プログラミング スタイルを導入して、コードをシリアル化し、連続および並列の集計操作をサポートします。理解する。
8. JavaScript エンジン Nashorn. Nashorn を使用すると、JavaScript アプリケーションを JVM 上で開発および実行できるようになり、Java と JavaScript が相互に呼び出せるようになります。
9. Base64、Base64 クラスは、URL および MIME フレンドリーなエンコーダーとデコーダーを提供します。
10. 日付/時刻 API (JSR 310) は、java.util.Date および java.util.Calendar を置き換えるために使用できる新しい java.time パッケージを提供します。一般に、Clock、LocaleDate、などのクラスLocalTime、LocaleDateTime、ZonedDateTime、Duration は時刻と日付を改善するのに非常に優れています。
これら 10 個の新機能に加えて、他の新機能もあります:
より優れた型推測メカニズム: Java 8 には型推測があります 大幅な改善により、コードは次のようになります。クリーンで、あまり多くのキャストを必要としません。
コンパイラの最適化: Java 8 ではメソッドのパラメータ名がバイトコードに追加されるため、パラメータ名は実行時のリフレクションを通じて取得できます。コンパイル時に - を使用するだけで済みます。 . パラメータ パラメータ。
並列 (並列) 配列: 主に、ParallelSort() メソッドによる配列の並列処理をサポートします。これにより、マルチコア マシンでの配列のソート速度が大幅に向上します。
同時実行性: 新しい Stream メカニズムと Lambda に基づいて、集計操作をサポートするためにいくつかの新しいメソッドが追加されました。
Nashorn エンジン jjs: Nashorn エンジンに基づくコマンド ライン ツール。一部の JavaScript ソース コードをパラメータとして受け取り、これらのソース コードを実行します。
クラス依存関係アナライザー jdeps: Java クラスのパッケージ レベルまたはクラス レベルの依存関係を表示できます。
JVM の PermGen スペースは削除され、Metaspace (JEP 122) に置き換えられました。
以上が長年の開発経験からまとめた Java 面接の質問 - (3)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。