Java面接基礎(一)

4972 ワード


Java面接基礎(一)
 
 
1、オブジェクト向けの特徴はどのような面がありますか:A:抽象B:継承C:パッケージD:マルチステート2、Java基本的なデータ型:    Javaの基本データ型には、byte、short、int、long、float、double、boolean、charが含まれます.    Stringは基本的なデータ型ではなく、オブジェクトです.    JAva.lang.Stringクラスはfinalタイプなので、このクラスを継承することはできません.このクラスを変更することはできません.効率を向上させ、スペースを節約するために、StringBufferクラスを使用する必要があります.3、Java基本タイプと参照タイプの違い:Javaは2つの異なるタイプを提供します:参照タイプと元のタイプ(または内蔵タイプ).また、Javaは元のタイプごとにパッケージクラス(Wrapper)を提供しています.次はjavaの元のタイプと対応するパッケージクラスです.   A: boolean-----Boolean     B: char--------Character     C: byte--------Byte     D: short-------Short     E: int---------Integer     F: long--------Long     G: float-------Float     H:double------Double参照タイプと元のタイプの動作はまったく異なり、それらは異なる意味を持っている.参照タイプと元のタイプには、クラスのインスタンスデータとして参照タイプと元のタイプが使用される場合に指定されるデフォルト値として使用されるデータ構造で格納されるサイズと速度の問題が含まれます.オブジェクト参照インスタンス変数のデフォルト値はnullであり、元のタイプのインスタンス変数のデフォルト値はそれらのタイプに関連しています.4、StringとStringBufferの違い:JAVAプラットフォームにはStringとStringBufferの2つのクラスがあり、文字列、すなわち複数の文字を含む文字データを格納し、操作することができます.このStringクラスは、数値が変更できない文字列を提供します.このStringBufferクラスが提供する文字列は変更できます.文字データが変更されることを知っていればStringBufferを使用することができます.通常、StringBufferを使用して文字データを動的に構築できます.
String   s;sを割り当てるたびに、新しいStringインスタンスが生成されます.StingBuffer sb;sbはそうではなく、常に同じインスタンスです.したがって、文字列の値を常に動的に変更する場合にStingBufferを使用する効率が高く、javaがインスタンスを生成するコストが大きい.5、ArrayList、Vector、LinkedListの記憶性能と特性1)ArrayListとVectorは、実際に記憶されているデータよりも多くのデータを格納し、要素を追加して挿入するために、直接シーケンス番号で要素をインデックスすることができるが、挿入要素は配列要素の移動などのメモリ操作に関連しなければならない.インデックスデータが速く、挿入データが遅い.2)Vectorはsynchronizedメソッド(スレッドセキュリティ)を使用しているため、通常はArrayListより性能が悪い.3)LinkedListは双方向チェーンテーブルを用いて記憶されており,シーケンス番号インデックスデータでは順方向または後方向の遍歴が必要であるが,データを挿入する際には本項の前後を記録するだけでよいため,挿入速度が速い.6、CollectionsとCollectionsの違い.Collectionは集合クラスの上位インタフェースであり、彼とのインタフェースを継承する主にSetとList.Collectionsは集合クラスに対するヘルプクラスであり、彼は一連の静的方法を提供して各種集合の検索、ソート、スレッドの安全化などの操作を実現する.7、HashMapとHashtableの違い.1).HashTableの方法は同期であり,HashMapは同期されていないので,マルチスレッドの場合にHashMapを手動で同期するという違いはVectorとArrayListのようなものである.2).HashTableはnull値を許可しない(keyもvalueもできない)、HashMapはnull値を許可する(keyもvalueもできる).3).HashTableにはcontains(Object value)があり、containsValue(Object value)と同じ機能があります.4).HashTableはEnumeration,HashMapはIteratorを用いる.5).HashTableにおけるhash配列のデフォルトサイズは11であり,old*2+1として増加する.HashMapにおけるhash配列のデフォルトサイズは16であり,必ず2の指数である.6).ハッシュ値の使用は異なり,HashTableはオブジェクトのhashCodeを直接使用し,コードは次のようになる.     int hash = key.hashCode();      int index = (hash & 0x7FFFFFFF) % tab.length; 一方、HashMapはhash値を再計算し、代わりにモデルを求める.
 1 int hash = hash(k); 
2 int i = indexFor(hash, table.length);
3 static int hash(Object x)
4 {
5   int h = x.hashCode();
6
7   h += ~(h << 9);
8   h ^= (h >>> 14);
9   h += (h << 4);
10   h ^= (h >>> 10);
11   return h;
12 }
13 static int indexFor(int h, int length)
14 {
15   return h & (length-1);
16 }

8、final、finally、finalizeの違い:1)finalは属性、メソッド、クラスを宣言するために使用され、それぞれ属性が可変ではなく、メソッドが上書きできず、クラスが継承できないことを表す.2)finallyは例外処理文構造の一部であり,常に実行されることを示す.3)finalizeはObjectクラスの1つのメソッドであり,ゴミ収集器の実行時に回収対象のこのメソッドが呼び出され,このメソッドがゴミ収集を提供する際の他のリソース回収,例えばファイルのクローズなどを上書きすることができる.9、String、StringBuffer StringBuilderの違い.1)Stringの長さは可変ではない;2)StringBufferの長さは可変であり、文字列の内容、特に内容を変更する場合はStringBufferを使用し、最後にStringが必要な場合はStringBufferのtoString()メソッドを使用する.スレッドセキュリティ;3)StringBuilderはJDK 5から始まり、StringBufferクラスに単一スレッドで使用される等価クラスを追加する.通常、StringBuilderクラスは、同じ操作をすべてサポートするため優先的に使用する必要がありますが、同期を実行しないため、より高速です.10、OverloadとOverrideの違い.Overloadedのメソッドは、戻り値のタイプを変更できますか?メソッドの書き換えOverridingとリロードOverloadingはJava多様性の異なる表現である.Overridingの書き換えは親クラスと子クラスの間の多態性の表現であり、オーバーロードOverloadingはクラス内の多態性の表現である.サブクラスでメソッドが親と同じ名前とパラメータを持つように定義されている場合、メソッドは書き換えられます(Overriding).子クラスのオブジェクトがこのメソッドを使用すると、子クラスの定義が呼び出され、親クラスの定義は「マスク」されているようになります.同じ名前のメソッドが1つのクラスに複数定義されている場合、異なるパラメータの数があるか、異なるパラメータタイプがある場合は、メソッドのオーバーロード(Overloading)と呼ばれます.Overloadedの方法は、戻り値のタイプを変更することです.