金、銀、銀のもう1年です。さまざまな業界での仕事の再開に伴い、誰もが就職活動の波を始めました。優れた雇用Javaトレーニングの教師として、多くの学生へのインタビューでいくつかの問題も解決しています。だから今日Javaインタビューで遭遇する問題について簡単に紹介します。
1. JAVAのクロスプラットフォームの原則
ソースコードはコンパイルされてバイトコードファイルが生成され、バイトコードファイルは、異なるプラットフォームにダウンロードされたJVMの異なるバージョンを介して、対応するマシンコードに変換されます。クロスプラットフォームのJavaプログラムはJVMではないことに注意してください。JVMはC / C ++を使用して開発されています。これはバイトコードでコンパイルされており、クロスプラットフォームにすることはできません。
2. intとIntegerの違いは何ですか?
1)、Integerはintのパッケージクラス、intはjavaの基本データ型2)、Integer変数は使用する前にインスタンス化する必要がありますが、int変数は必要ありません3)、Integerは実際には新しいオブジェクトへの参照です整数、実際にはこのオブジェクトへのポインタを生成し、intはデータ値を直接格納します4)、Integerのデフォルト値はnull、intのデフォルト値は0です。
3. Javaオブジェクトのライフサイクル
作成フェーズ、アプリケーションフェーズ、不可視フェーズ、到達不能フェーズ、収集フェーズ、ファイナライズフェーズ、オブジェクト空間再割り当てフェーズなど。
4. MapまたはHashMapのストレージ原則
HashMapは、配列+リンクリストの構造で構成されています。具体的なリファレンス:HashMapの実装原理
5. JVM構造原理とGC動作メカニズムの詳細な説明
特定の参照:JVM構造、GCの動作メカニズムの詳細な説明GCに関しては、次の2つの点に注意してください:1. GCは、参照されるオブジェクトなしですべてのメモリ空間を再利用する責任があります。注:ガベージコレクションは、オブジェクト自体ではなく参照なしでオブジェクトが占有するメモリ領域です。2。GCリサイクルメカニズムの2つのアルゴリズム、a。参照カウント方法b。到達可能性分析アルゴリズム(ここでは到達可能、基本的な2つのJavaオブジェクトのサイクルを確認できます)、
6. JAVAオブジェクト指向機能ですか?
カプセル化、継承、ポリモーフィズム、および抽象カプセル化:クラスによって反映され、エンティティを属性とメソッドを含むクラスにカプセル化します。
継承:クラス間の継承可能な機能、コードの再利用
ポリモーフィズム:親クラスのオブジェクトに渡してさまざまな動作を示すことにより、さまざまなサブクラスを参照する
抽象化:エンティティーのクラスの一般的な特性を抽象化し、それらを抽象クラスにカプセル化します。
7. final、finally、finalizeの違い
最後の:
1.修飾子(キーワード)クラスがfinalとして宣言されている場合、それは新しいサブクラスを派生できなくなり、親クラスとして継承できないことを意味します。したがって、クラスを抽象または最終として宣言することはできません。
2.変数またはメソッドをfinalとして宣言すると、e68a84e8a2ade799bee5baa6e79fa5e9819331333365666235を使用して、使用中に変更されないようにすることができます。finalとして宣言された変数には、宣言時に初期値を与える必要があり、読み取りのみが可能であり、将来の参照で変更することはできません。finalとして宣言されたメソッドも使用できるだけで、オーバーロードできません。
最後に:
例外処理中に明確な操作を実行するfinallyブロックを提供します。例外がスローされると、一致するcatchステートメントが実行され、制御は最終ブロック(もしあれば)に入ります。
ファイナライズ:
メソッド名です。Javaテクノロジーでは、ガベージコレクターがオブジェクトをメモリから削除する前に、finalize()メソッドを使用して必要なクリーンアップを実行できます。このメソッドは、ガベージコレクターが、クリーニングされるオブジェクトが参照されていないと判断したときに呼び出されます。
FinalizeはObjectクラスで定義されているため、すべてのクラスがそれを継承します。サブクラスはfinalize()メソッドをオーバーライドして、システムリソースを編成したり、他のクリーンアップタスクを実行したりできます。
8. Javaは使用できますか?
gotoは、Java言語では予約語であり、Javaでは使用されていません。
Gotoは、C言語の条件と組み合わせて、ループからのジャンプなどの操作に使用されます。Javaは構造化プログラミング言語です。Javaでgotoを使用すると、多くの不要な問題が発生します。Gotoはまだ使用されていません。
9.エラーと例外の違いは何ですか?
ExceptionとErrorはどちらもThrowableクラスを継承します。Javaでは、Throwable型のインスタンスのみがスロー(Throw)またはキャッチ(Catch)できます。これは、例外処理メカニズムの基本コンポーネントタイプです。
例外は、プログラムの通常の操作中に予期される予期しない状況であり、それに応じてキャッチおよび処理する必要があります。
エラーとは、通常の状況では起こりそうもない状況を指します。ほとんどのエラーは、プログラムを異常で回復不可能な状態にします。異常なので捕まえる必要はなく便利です。たとえば、一般的なOutOfMemoryErrorはErrorのサブクラスです。
Exceptionクラスは、チェック可能な例外とチェックされない例外に分かれています。チェック可能な例外は、キャプチャ処理のためにソースコードでキャプチャする必要があります。これは、コンパイル時チェックの一部です。
チェックされていない例外は、いわゆるランタイム例外であり、NullPointerException、ArrayIndexOutOfBoundsExceptionなどと同様です。これらは通常、回避するためにコーディングできる論理エラーです。
10.データテーブルのAおよびBフィールドにインデックスが付けられている場合、AまたはBのみを使用するとインデックス付けに影響がありますか?
AとBを組み合わせたインデックスを見ると、誰が前にいて誰が後ろにいるのか、Aが前にある場合、Aを単独で使用するとインデックス効果があり、Bを単独で使用すると効果がありません。逆も同様です。同様に、like fuzzyクエリを使用する場合、最初の%のみを使用すると、インデックス効果があり、double%マッチングを使用すると、インデックス効果はありません。
11.リスト、セット、マップはコレクションインターフェースを継承しますか?
ListとSetはCollectionインターフェースから継承されたインターフェースです。Setは重複アイテムを許可しません。Listは重複アイテムを許可します。Setインターフェースから派生したクラスはTreeSet、HashSet、LinkedHashSetです。Listインターフェースから派生したクラスは、ArrayList、Vectorなどです。Mapは独立したインターフェースであり、Collectionインターフェースを継承しません。
12. Stringクラスを継承することは可能ですか?
「いいえ、Stringクラスにはfinal修飾子があり、最終的に変更されたクラスは継承できず、実装の詳細は変更できません。」
13.分散環境およびクラスター環境で、キャッシュを更新する方法と同期を維持する方法を教えてください。
A.キャッシュを更新する方法1.定期的な更新2.アクティブな更新カバレッジ各キャッシュフレームワークには、独自の更新メカニズムまたはキャッシュ無効化メカニズムがあります。さらに、カバレッジをアクティブに更新する場合、対応するキーを取得するだけでデータを上書きできます。
B.キャッシュの同期を維持する方法は?このredisには独自のクラスター同期メカニズム、つまりレプリケーション機能があります。Ehcacheにも分散キャッシュ同期構成があり、異なるサーバーアドレスを構成するだけで済みます。
13.新しいタスクの提出を防ぐ方法は?
スレッドプールの状態をSTOPに変更することにより、実行がタスクを再度実行するときに、状態がRUNNINGではないことがテストされた場合、rejectedExecutionがスローされ、新しいタスクの送信を防ぐ目的を達成します。
14. String、StringBuilder、StringBufferの違いは何ですか?
(1)実行速度:StringBuilder> StringBuffer> String
文字列は文字列定数です。他の2つは文字列変数です。文字列オブジェクトは作成後に変更できません。文字列に対する操作は、実際には継続的な作成とリサイクルのプロセスであり、実行速度が遅くなります。
(2)スレッドセーフ:StringBuilderはスレッドに対して安全ではありませんが、StringBufferはスレッドセーフです
StringBufferオブジェクトは、スレッドの安全性を確保するために複数のスレッドで文字列バッファーが使用されている場合、synchronizedキーワードを使用できます。
(3)使用シナリオ
Stringは、少数の文字列操作に適しています。StringBuilderは、文字列バッファでの多数の操作の場合の単一スレッドに適しています。StringBufferは、文字列バッファでの多数の操作の場合のマルチスレッドに適しています。
15. ==と=の違いは何ですか?
(1)2つの等号(==)を使用して2つの値を比較する基本的なデータ型間の比較
(2)等号を使用した、メモリプール内のアドレスの比較、複合データタイプ(クラス)間の比較。Java言語では、通常、等しいが開発者に定義のために与えられ、オブジェクトが満たす条件は等しい。
16.Javaコンテナとは何ですか?
JAVAのコンテナには以下が含まれます。
リスト、マップ、セット、コレクション、リスト、LinkedList、ArrayList、ベクター、スタック、セット
Map、Hashtable、HashMap、WeakHashMap
17.スレッドを作成する方法は何ですか?
スレッドを作成するには4つの方法があります。
1. Threadクラス(実際のスレッドクラス)の継承は、Runnableインターフェースの実装です。
2. Runnableインターフェースを実装し、内部でrunメソッドを書き換えます
3.アプリケーションは、Executorフレームワークを使用してスレッドプールを作成できます。Executorフレームワークは、jucで提供されるスレッドプールの実装です。
4. Callableインターフェースを実装して、FutureTaskラッパーを介してスレッドスレッドを作成します。
18.リフレクションとは何ですか?
Javaランタイム環境では、どのクラスについても、このクラスのプロパティとメソッドを知ることができますか?どのオブジェクトについても、そのメソッドを呼び出すことができます
Javaリフレクションメカニズムは、主に次の機能を提供します。
1.実行時にオブジェクトが属するクラスを決定します。
2.実行時に任意のクラスのオブジェクトを作成します。
3.実行時に任意のクラスのメンバー変数とメソッドを決定します。
4.実行時にオブジェクトメソッドを呼び出します。
19. shutdownNow()の機能は何ですか?
新しいタスクの送信を防ぎ、現在実行中のスレッド、つまりワーカー内のスレッドに割り込む。さらに、workQueue内のタスクを削除し、これらのタスクをリストに追加して戻ります。
20.提出されたタスクに影響がないのはなぜですか?
タスクを中断するメソッドを呼び出すと、ワーカー内のタスクを検出し、ワーカーに対応するタスクが中断されておらず、アイドルスレッドである場合は、タスクを中断します。さらに、workQueueの値は引き続き特定の論理的な順序で作品に送信されるため、送信されたタスクがスレッド自体のロジックに従って実行され、影響を受けないようにすることができます。
以上が優秀な就職Java研修講師がまとめた面接でのよくある質問ですので、よろしくお願いします。