Javaの面接の基本(D)

1、Q:Javaの三つの特徴は、それぞれについて話すことは何もありません。

  A:継承:以下のチェンHouzaiクラスは、自動的に親クラスのプロパティとメソッドを持っていますが、特別な注意は私有財産であると親クラスのコンストラクタは継承できません。コードの再利用のメリットは、コードの量を減らすことができます

       パッケージ:また、情報の隠蔽と呼ばれるパッケージは、一緒に包装操作データに基づいて抽象データ型とデータの使用では、非表示にできるだけ不可分別個のエンティティ、抽象データ型内で保護されるべきデータを構成します外部との接触の外部インタフェースの一部だけを残して内部の詳細、。のみ相互作用データを介して外部と通信するためのシステムの他の部分はこの抽象データ型を許可オペレータに包まれています。言い換えれば、ユーザーは、メソッド内のオブジェクトの実装の詳細を知っている必要はありませんが、オブジェクトが提供する外部インタフェース(オブジェクト名およびパラメータ)に基づいてオブジェクトにアクセスすることができます。利点は、必要なときに各プログラマはプロ分割、ならびに隠し情報、実装の詳細を達成するために、呼び出すことができ、特定の機能コードは、別のエンティティにパッケージ化され得ることです。

     多型:三つの要素の多型:、書き換え方法、継承された:1.多メソッドが多型であるが、多型はつ以上の状態は、三の必要条件が存在している(プロパティが多型ではない)のプロパティではありません親子クラスオブジェクトへの参照。3.サブクラスオブジェクトの親クラスリファレンスの後、方法は、サブクラスを参照して、コールがスーパークラスをオーバーライドし、その後マルチ状態が生じます。

    要約:オブジェクト指向の概念では、すべてのオブジェクトは、種類によって記述されますが、逆に、ないクラスは、特定のを記述するために十分な情報が含まれていない場合は、オブジェクトを記述するために使用されるクラスのすべてオブジェクトは、そのようなクラスは抽象クラスです。オブジェクトをインスタンス化しない抽象クラスに加えて、他の機能的クラスは依然として通常のクラスと同じようにアクセスするために、メンバ変数、メソッドおよびメンバーのコンストラクタが存在します。抽象クラスは、オブジェクトをインスタンス化することはできませんので、抽象クラスを継承する必要があり、使用することができます。また、このような理由のために、通常は設計段階でかどうか抽象的なデザインクラスを決定します。親クラスは、一般的なサブクラスのセットが含まれていますが、これらのメソッドを使用することはできませんので、理由は、親クラス自体の、抽象的です。Javaの抽象クラスに継承され表し、クラスが抽象クラスを継承することができるが、このクラスは、複数のインターフェイスを実装することができます。制限抽象クラス:1.抽象クラスは、それがインスタンス化されている場合、それはコンパイラが渡すことはできません、エラーになり、(間違いを犯しやすい初心者)をインスタンス化することはできません。唯一の抽象クラス非抽象サブクラスは、オブジェクトを作成することができます。2.抽象クラスは必ずしも抽象メソッドが含まれていませんが、抽象クラスでなければならないクラスの抽象メソッドがあります。3.抽象クラスのメソッドは、単に抽象メソッドの実装方法は、特定の機能で、ボディを持っていない与えられていないと宣言しました。前記構成のメソッド、クラスメソッド(変性静的メソッド)が抽象メソッドを宣言することはできません。抽象クラスのサブクラスはサブクラスが抽象的でない限り、抽象メソッドは、特定の抽象クラスを与える実装する必要があります。

2、Q:簡単にJavaヒープとスタックについて

   A:Javaプログラムが実行されて、空間がデータを格納するためのメモリ5に分割されています。それらは:1:登録します。2:ローカルエリア方法。3:メソッドのエリア。4:スタック。5:ヒープ。

    基本データ型、ローカル変数はスタックメモリに格納され、実行が姿を消しました。そして作成されたオブジェクトの新しいインスタンスのアレイは、自動的に除去、ヒープメモリに格納された時刻からの時間にガーベッジコレクション機構によって使い果たされます。

    スタック:

関数で定義された変数の基本的なタイプは、参照オブジェクトは、スタックメモリ割り当て関数で可変です。
特長は、メモリ空間を節約する、データが終了すると、変数はすぐにリリースされる、メモリをスタック。
スタックメモリ内のデータは、デフォルト値が初期化されていない、手動で設定する必要があります。  

    ヒープ:

ヒープメモリが作成された新しいオブジェクトと配列を格納するために使用されます。
すべてのエンティティは、ヒープメモリの値のメモリアドレスを持っています。
ヒープメモリは、データエンティティをカプセル化するために使用され、これらのデータは、デフォルトの初期値を持っています。
ヒープの実体は、もはや自動的にクリアするためにガベージコレクションメカニズムを開始するには、JVMを指していない、これはC ++、JAVA優れた性能の一つである場合には(C ++プログラマは手動でクリアする必要があります)。

    :あなたはを参照することができhttps://blog.csdn.net/jasonwang18/article/details/70578647

    私たちは夕食のためにレストランに行くと、ちょうどアラカルト(発行申請)、支払うスタックを使用して、および(使用)を食べて、上の供給:ヒープとスタックの違いは、ビューのメタファーとして使用することができます。要約することはでき仕事オフなどの野菜、野菜やその他の準備や洗濯料理、スクラブポット、に関係なく、行く、彼の利点は高速ですが、自由度が小さいです。ヒープは、DIY、あまりにも多くの問題を食べ物を食べるのが好き、しかし、より自分の好みに合わせて、かつ自由度が大きいようです。

 

3、Q:最終の違いを説明し、最後に、確定?

   :Javaでは、最終的には、クラス、メソッド、および変数(メンバ変数またはローカル変数)を変更するために使用することができます。最終的なクラスで修飾された場合、クラスは他のクラスによって継承されないことを示します。私たちが継承されることはありませんクラスを作成する必要がある場合は、この時間は、最終的に変更することができますが、警告が表示さ:

最後のクラスメソッドは、暗黙的に、最終的な方法のすべてのメンバーを定義します。

    最後に、例外処理の一環として、それが唯一のtry / catchステートメントにすることができ、およびステートメントのブロックが付属して、文は最終的には、多くの場合、必要なリソースの解放に使用される、(または例外をスローせずに)実行されます表しますケース。出口に直面したとき、プログラムを終了します、それは文の底に最後に実行されません。それ以外の場合は、最終的には何のキャッチがない場合でも、最終的には戻り試しにプログラムのコードを実行するために来る、実行されます。

    各オブジェクトは、メソッドファイナライズを有することを意味する()java.lang.Objectの年に定義されています。彼らが呼ばれたときに、このメソッドのGCの開始は、オブジェクトが回収されます。実際には、オブジェクトのほとんどは、(GCが得ることができるすべての新しいオブジェクトの外に、我々は使用しません、一般的に新しいオブジェクトを作成する以外の意味)のGCを再利用することができますので、一般的に、あなたが達成するために、プログラマを確定する必要はありません。 

特殊な状況下では、オブジェクトのようないくつかのリソース、アップ無料回収されたときに、ファイナライズを達成するために、プログラマが必要です。ライフサイクル全体で有効なオブジェクトが初期化されるときに作成されたソケットのリンクを、あなたは、確定実現リンクをクローズする必要があります。 
  ()super.finalizeを呼び出し、使用は事を確定ことにも注意してください。

  後のオブジェクト()メソッドが一度だけ呼ばれて確定し、オブジェクトの直接の回復を意味しませんGCと呼ばれている)(確定、()オブジェクトをファイナライズ呼び出すことが可能であり、実際のに対して、その後回復し、する必要はありません回収しようとするとき、一度前の呼び出しとして、それは、問題を引き起こす)(確定呼び出すことはありません。従って、ファイナライズして()メソッドは、使用しないことが推奨されるデストラクタ同じではないが。

 4、Q:バブルソートを書くためにJavaを使用しています。(Pythonのバブルソートに言われているものの前に、最初は、バブルソートである:https://www.cnblogs.com/cxiaocai/p/11040749.html

   :

以下のためのパッケージ変更COM; 

パブリック クラスのブログ{
 //     次のように原則バブルソートアルゴリズムは次のとおりです。
 //     隣接する要素を比較しました。最初は、二以上である場合には、それらの2を交換しました。
//     それぞれが第一の対の最初から最後のペアの終わりに、隣人のために同じ作業を行うため。この時点で、それは最後の要素は、最大数であるべきです。
//     最後の1を除いて、すべての要素については、上記の手順を繰り返します。
//     比較する必要がなくなるまで、数字のペアをするたびにますます少なく要素に対して上記の手順を繰り返し続けます。
    パブリック 静的 ボイドメイン(文字列[]引数){
         int型 [] ARR = {-97、-8 ,. 9、-5、87 ,. 1、-87、98 };
         のためint型 I = 0; I <arr.length ; I ++ ){
             int型 K = 0 ;
             のためのINTJ = 1を+。J <arr.length。J ++ ){
                 場合(ARR [I]> [J]){ARR 
                    のk =の[I] ARR。
                    ARR [I] =のARR [J]。
                    ARR [J] = K。
                } 
            } 
        } 
        のためにint型私は++; iは<arr.length I = 0 {)
            のSystem.out.println(ARR [I])。
        } 
    } 
}

5、Q:どのようにHashMapやTreeMapのを使用することを決めたのですか?

   :彼らは非スレッドセーフであるために、キーの自然増加、ないのHashMapのため、HashMapの速いスピードのTreeMapのソートは、あなたがスレッドセーフする必要があり、ハッシュテーブルを使用することをお勧めします。

おすすめ

転載: www.cnblogs.com/cxiaocai/p/11099714.html