ホームページ  >  記事  >  Java  >  Java インターンの面接での質問 (回答付き)

Java インターンの面接での質問 (回答付き)

(*-*)浩
(*-*)浩オリジナル
2019-11-28 13:39:064089ブラウズ

Java インターンの面接での質問 (回答付き)

1. Java コンテナ フレームワークとは何ですか?

Java コンテナ フレームワークには Collection と Set という名前の 2 つのインターフェイスがあります

2. リスト、マップ、セット、配列、それらの違いは何ですか? 実装クラス: LinkedList、ArrayList、Vector.LinkedList: 基礎となる実装はリンク リストに基づいています。リンク リストのメモリは分散しています。各要素は独自のメモリ アドレスを格納し、次の要素のアドレスも格納します。

ArrayList と Vector の違い: ArrayList は非スレッド セーフで効率が高く、Vector はスレッドセーフに基づいており、効率が低いです。

1) Set インターフェイスには主に 2 つの実装クラスがあります: HashSet (最下層は HashMap によって実装されます) と LinkedHashSet

2) Map インターフェイスには主に 2 つの実装クラスがあります: HashMap、HashTable、 LinkedHashMap

HashMap はスレッド セーフではなく、効率的であり、NULL をサポートします。HashTable はスレッド セーフではなく、非効率的で、NULL をサポートしません

#Array: オブジェクトと基本データを格納できる配列固定長のタイプ。

List: 要素は順序付けされており、反復可能です。

Set: 要素は順序付けされておらず、反復せず、インデックスもありません。

Map: キーと値のペアを格納するために使用される 2 列のコレクション。キーの値は一意であり、繰り返すことはできません。

3. コレクションとコレクションの違いは何ですか

a.javutil.Collection はコレクション インターフェイスです。これは、コレクション オブジェクトに対する基本的な操作のための共通のインターフェイス メソッドを提供します。 Collection インターフェイスには、Java クラス ライブラリに多くの特定の実装があります。 Collection インターフェイスの重要性は、さまざまな特定のコレクションに対して最大限の統一された操作方法を提供することです。

b.java.util.Collections はラッパー クラスです。これには、コレクション操作に関連するさまざまな静的多態性メソッドが含まれています。このクラスはインスタンス化できず、Java のコレクション フレームワークを提供するユーティリティ クラスに似ています。

4. string、stringbuilder、stringbuffer の違いは何ですか?

プログラムで使用される文字列は 2 つのカテゴリに分類できます。作成後に再度使用できる文字列変数と、作成後に変更できる文字列変数です。

前者の文字列変数については、プログラムで比較や検索などの操作を行うことが多いため、通常は特定の名前のオブジェクトに配置されます。オブジェクトの場合、Java プログラムに格納される文字列変数は String クラス変数です; 後者の文字列変数については、プログラムの操作で追加、挿入、変更などが必要になることが多いため、このような文字列を使用します変数は通常、StringBuilder クラスのオブジェクトに格納されます。

String 文字列変数、

StringBuffer 文字列変数 (スレッド セーフ)、

StringBuilder 文字列変数 (非スレッド セーフ)

5. == とイコールの違いは何ですか。

プログラム内で 2 つの文字を比較する場合は、関係演算子 "==" を使用し、2 つの文字列を比較する場合は、equals( ) 方法 。

6. & と &&

&& の違いは、簡潔な演算子であり、& は非簡潔な演算子です。簡潔な演算子 (&&、||) と非簡潔な演算子 (&、|) の違いは、非簡潔な演算では結果値を取得する前に左と右の式を計算する必要があるのに対し、簡潔な式は結果値を取得せずに左の式のみを計算できることです。右側の式を計算します。つまり、式 && の場合、左側の式が false である限り、右側の式は計算されず、式全体が false になります。 || の場合、左側の式が true で、右側の式が評価されない場合、式全体が true になります。

##7. プログラム、プロセス、スレッドの違い# #1) プログラムは命令とデータを含むファイルであり、ディスクまたはその他のデータ記憶装置に保存されます。これは、プログラムが静的コードであることを意味します。

2) プロセスはプログラムの実行プロセスであり、システムがプログラムを実行するための基本単位であるため、プロセスは動的です。システム上でプログラムを実行することは、プログラムの作成、操作、終了までのプロセスです。簡単に言えば、プロセスは実行プログラムです。コンピュータ内で命令を次々に実行します。同時に、各プロセスは CPU 時間、メモリ空間、ファイル、入出力デバイスの場所などの特定のシステム リソースも占有します。使用権等

3) スレッド: 実際、これはプロセスに似ており、実行プログラムでもありますが、スレッドはプロセスよりも小さな実行単位です。プロセスは実行中に複数のスレッドを生成し、複数の実行パスを形成することがあります。ただし、プロセスとは異なり、同種の複数のスレッドは同じメモリ空間とシステムリソースを共有するため、システムがスレッドを生成したりスレッドを切り替えたりする際の負担はプロセスに比べてはるかに小さくなります。このため、スレッドは軽量プロセスとも呼ばれます。

8. スレッドの状態とは何ですか?

5 つの状態は、新規状態、準備完了状態、実行状態、ブロック状態、および停止状態です

9. スレッド相互排他と同期の違い

相互排他とは、2 つ以上のスレッドを同時に実行できないことを意味しますが、同期は 2 つ以上のスレッドが実行できる順序に対する制約です。

10. スレッド同期と共有データの違いは何ですか?

共有とは、スレッドが共有のデータを共有して所有しているため、スレッド間でメモリ データを共有することを指します。これは、複数のスレッドが同時にデータを処理することによってデータの不整合を引き起こすため、この問題を解決するために同期が提案されています。複数のスレッドです。

同期とは、データを処理するスレッドは、他のスレッドがまだ処理していないデータは処理できませんが、他のデータは処理できることを意味します。

11. スレッド同期と非同期の違い

スレッド同期は、複数のスレッドが同じリソースに同時にアクセスし、リソース アクセスが終了するのを待つことです。これは時間の無駄で効率が低い; スレッド同期: リソースにアクセスするとき、マルチスレッド メカニズムを実装するためにアイドル状態で待機している間に他のリソースにアクセスします。

12. Java の丸めメソッドとは何ですか?

Math クラスには、丸めに関連する 3 つのメソッド (ceil、floor、round) が用意されています。作用する英語名は対応しています 例:

ceil の英語の意味は天井です この方法は切り上げを意味します Math.ceil (11.3) の結果は 12 で、結果はMath.ceil (- 11.6 の結果) の結果は -11;

floor は英語で床を意味し、このメソッドは切り捨てを意味します。Math.floor(11.6) の結果は 11 で、その結果はMath.floor(-11.4) is - 12;

マスターするのが最も難しいのはroundメソッドです。これは「丸め」を意味します。アルゴリズムはMath.floor(x 0.5)で、これは0.5を加算することを意味します。したがって、Math.round(11.5) の結果は 12、Math.round(-11.5) の結果は -11 になります。

Math.round() は次のとおりです。このルールに従う: 5 より大きい小数点の後のすべての正の数を追加します (これは 5 に正の数を加えたものと等しくなります)。5 未満の場合は何も追加しません。

13.MVC とは何を指しますか?

M - モデル モデル層。通常、作成するクラスはモデル層に配置されます

V - ビューはビュー層であり、一般的には jsp ページです。

C - コントロール層、アクション、サービス、dao、処理関連のビジネス ロジックを含みます。

14. 違いは何ですか?クラスとオブジェクトの間は?

クラスは、特定のタイプの物事の記述であり、抽象的かつ概念的な定義ですが、オブジェクトはそのタイプの物事の実際の具体的な個体であるため、インスタンスとも呼ばれます。

15.Final の使用法?

a. クラスを Final クラス、つまり非継承クラスとして宣言すると、そのクラスを継承できないことを意味します。他のクラス。

b. 最後の修飾子。この変数の値を変更できないことを指定します。

c. 最後の修飾子。このメソッドをオーバーロードできないことを指定します。

抽象の使用法

a. クラスを抽象クラスとして宣言すると、実装メソッドがなく、メソッドの実装を提供するサブクラスが必要になるため、このインスタンスはクラスを作成できません。

b. 抽象修飾子。メソッドがメソッド本体を含まずにメソッド ヘッダーのみを宣言することを指定します。抽象メソッドはサブクラスに実装する必要があります。

Static の使用法

a. 静的修飾子。変数がすべてのオブジェクトで共有されること、つまりすべてのインスタンスが変数を使用できることを指定します。

b. 最後の修飾子。オブジェクトをインスタンス化せずに呼び出すことができるメソッドを指定します。

16. メンバ変数とローカル変数の違い

クラス内で定義された変数がメンバ変数であり、メソッド内で定義された変数がローカル変数です。

相違点:

a. 文法の観点から見ると、メンバー変数はクラスに属しますが、ローカル変数はメソッドまたはメソッドのパラメーターで定義された変数です。メンバー変数は、public、private、static、およびその他の修飾子によって変更できますが、ローカル変数は、アクセス制御修飾子および static によって変更できません。メンバー変数とローカル変数は両方とも、final によって変更できます。

b. 変数がメモリに格納される方法から判断すると、メンバー変数はオブジェクトの一部であり、オブジェクトはヒープ メモリに存在し、ローカル変数はスタック メモリに存在します。

c. メモリ内での変数の生存時間の観点から見ると、メンバー変数はオブジェクトの一部であり、オブジェクトの作成とともに存在しますが、ローカル変数はメソッドの呼び出しによって生成されます。結果は自動的に消えます。

d. メンバー変数に初期値が割り当てられていない場合は、その型のデフォルト値が自動的に割り当てられます (1 つの例外を除き、final によって変更されるが static によって変更されないメンバー変数は、明示的に割り当てる必要があります)。 ; ローカル変数には値が自動的に割り当てられないため、使用する前に明示的に割り当てる必要があります。

以上がJava インターンの面接での質問 (回答付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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