Javaのインタビューの質問は3を紹介しました

1、JavaとJavaSciprtを比較します。
答えは:JavaScriptとJavaは2は、二つの異なる製品を開発しています。Javaは、インターネットアプリケーション開発のために特に適した旧サン・マイクロシステムズ導入しているオブジェクト指向プログラミング言語であり、JavaScriptはNetscapeの製品実行しているWebページに埋め込むことができる機能の開発を拡大するためには、Netscapeブラウザでありますオブジェクトベースとイベント駆動型解釈言語。そして以前はオークとして知られているJava言語、; JavaScriptが前身LiveScriptです。
次に、以下の比較を行うための2つの言語間の類似点と相違点は:

  • オブジェクトベースおよびオブジェクト指向:Javaは、簡単な手順であっても、開発、真のオブジェクト指向言語である、あなたがオブジェクトを設計する必要があります。JavaScriptは、ネットワークの独立を作るために使用することができる言語をスクリプトの種類、複合体とユーザーの相互作用でありますソフトウェア。これは、オブジェクトベース自体を使用する設計者にとって非常に豊富な内部オブジェクトを提供するイベント駆動型(イベントドリブン)プログラミング言語、(オブジェクトベース)です。
  • 解釈とコンパイル:実行前にJavaソースコードは、コンパイルする必要があります。JavaScriptは、ブラウザの実行によって解釈コンパイルされていない、そのソースコードの必要性、解釈されたプログラミング言語です。(ほとんどすべてのブラウザでは、現在のJavaScriptの動作効率を高めるために、JIT(タイムコンパイラ)技術を使用します)
  • 弱い変数の強く型付けされた変数と型:;実行時に、変数の使用が明を沈黙することができます前であっても、JavaScriptの変数が弱い型指定されているJavaScriptインタープリタチェックJavaは強くコンパイルする前に、すべての変数が陳述をしなければならないという変数の確認を入力しました推論されたデータ型。
  • コードの形式は同じではありません。

追加:上記の4つの点は、標準的な答えは、いわゆるインターネット上で流通しています。実際には、JavaおよびJavaScriptの最も重要な違いは、静的な言語は、動的な言語であるということです。現在の傾向プログラミング言語は、機能的かつ動的言語です。Javaクラス(クラス)のJavaScript関数(関数)で第一級オブジェクトは、第一級オブジェクトは、JavaScriptをサポート機能をプログラミングし、ラムダ閉鎖(クロージャ)、当然を使用して機能することができるように、Java(登録商標)をサポートし始めているである。官能8このプログラムは、ラムダ式と機能のインタフェースをサポートしています。このような問題については、インタビューの中で最高の自分自身の言葉で答えているオンラインいわゆる標準アンサーバック、よりトリッキーではないでしょう。

2、とき表明(アサート)を使用するには?
A:はい、実行、呼び出し元メソッドに戻る前に実行。

3、Java言語の例外処理、キーワードがどのように:スロー、スロー、試して、キャッチ 、最終的には、それぞれ、どのように使用するには?
:オブジェクト指向のアプローチを介してJavaの例外処理は、種々の異常を分類し、かつ良好なインターフェースを提供します。Javaでは、各異常クラスのThrowableまたはサブクラスのインスタンスであるオブジェクトです。この方法は、例外が例外オブジェクトの後に発生し、オブジェクトのメソッドは、例外情報が含まれているスローする場合、このオブジェクトは例外をキャプチャすることができますし、それを処理することができます呼び出します。試して、キャッチ、スロー、スロー、そして最後に:Javaの例外処理は、5つのキーワードによって達成されます。例外オブジェクトを捕捉することができるシステムは、(スロー)をスローする場合は、プログラムを実行しようと、一般に(キャッチ)はそのタイプによって、または常に(最終的に)処理されたコードブロックを実行することにより、と試みすべての例外は、予防プログラムを指定するには、catch節のすぐtryブロックの後に、あなたがキャプチャしたい例外の種類を指定するために使用され、スロー文を明示的に例外をスローするように、投げるかもしれないメソッドを宣言するためにスロー(もちろん大騒ぎを許可する例外を宣言する)異常の多様;起こった奇妙な何かに関係なく行われなければならないことを確実にするためのコードの最後に一枚、それはtry文に遭遇するたびにtry文は、ネストすることができ、異常な構造が配置されます例外スタックのすべてのtry文が完了するまで。あなたは声明のいくつかの種類の次のレベルは、例外を処理しないしようとした場合、それは、この異常発生したtry文またはJVM投げ、最終的な例外に対処するために持っているまで、例外スタックのポップ操作が実行されます。

3.実行時例外と異常な被験者の類似点と相違点は何ですか?
:異常状態のプログラムは、それが発生する可能性が実行されている異常ショーは異常ショーが発生する可能性があり、通常は仮想マシンは、限りプログラミングは全く問題は通常発生しませんでしたとして、共通ランタイムエラーで例外をランタイム。異常な状況は問題がまだ使用してスローされる可能性があるため、プログラミングが、正しくても、程度実行している被験者。宣言を要求しなければならないJavaコンパイラは、被験者の異常が発生する可能性がスローされますが、宣言されなければならないスローキャッチされない例外を実行する際に必要とされていません。異常と継承されたが、多くの場合、例外の使用に効果的なJavaで乱用されているもので、オブジェクト指向プログラミングは、以下のガイドラインを示しています。

  • (うまく設計されたAPIは、正常と異常の使用の流れを制御するために、呼び出し元に強制すべきではない)通常の制御フローのために例外処理を使用しないでください
  • 使用すると、実行時のプログラミングエラーの使用、異常な状況を復元することができる例外を施し、
  • 被験者は(異常の発生を防止するために、いくつかの状態検出手段を介して)例外の不必要な使用を避けるために
  • 標準の例外の優先利用
  • 各メソッドは、例外が文書を持っている必要がありますスロー
  • 異常アトミック
  • キャッチでキャッチされた例外を無視しないでください。

4、あなたの共通ランタイム例外のいくつかをリストアップ!
回答:

  • ArithmeticException(算術演算例外)
  • A ClassCastExceptionが(クラスキャスト例外)
  • 例外:IllegalArgumentException(不正な引数例外)
  • 例外:IndexOutOfBoundsException(添字境界例外)
  • NullPointerExceptionが(ヌル・ポインタ例外)
  • SecurityExceptionが(セキュリティ例外)

図5に示すように、最終的な差を説明し、最後に、完成。
回答:

  • 最終:修飾子(キーワード)3つの用法があります。クラスは、それが抽象的と反意語であるので、それは、継承することはできません別の予期せぬ新しいサブクラスを送信できないことを意味し、最終的に宣言されている場合。finalとして宣言された変数は、彼らが利用変化していないことを保証することができ、それが最終的変数が初期文で与えられなければならないと宣言され、その後の参考文献にのみ変更することができません読み取ることができます。それは、また、唯一の使用、最終的なアプローチを宣言し、サブクラスでオーバーライドすることはできません。
  • 最終的には:コードは、通常のtry ...キャッチの背後に配置されている...関係なく、常に正常か異常な実行が起こるのプログラムは、コードは限りJVMが実行できるように近い、ここでないこと、あなたが外部リソースの解放に書くことができる手段コードのブロック構造を、実行finallyブロック。
  • ファイナライズ:クラスで定義されたオブジェクトのメソッドは、Javaのガベージコレクタでメモリから出て行く前に必要なクリーンアップ作業を行うためにオブジェクトを削除するにはファイナライズ()メソッドを使用することができました。このメソッドは、オブジェクトが破棄されたとき、あなたはファイナライズ()メソッドをオーバーライドすることにより、システムリソースを片付けるか、その他のクリーンアップ作業を行うことができるガベージコレクタによって呼び出されます。

6、クラスExampleA継承した例外、クラスExampleB継承ExampleA。
次のコード:

try {
    throw new ExampleB("b")
} catch(ExampleA e){
    System.out.println("ExampleA");
} catch(Exception e){
    System.out.println("Exception");
}

このコードの出力が実行されたものを尋ね?
A:出力:ExampleA。(リヒター置換原理によれば、特定のサブタイプを使用することができる場合、スーパータイプを使用することができる]、異常のExampleAグラブタイプがスローされた例外のExampleBキャッチブロックtryブロックのタイプを把握することができます)

インタビューの質問は - 次のコードの動作を言います。(この問題の原因は、書籍「Javaプログラミングのアイデア」にあります)

class Annoyance extends Exception {}
class Sneeze extends Annoyance {}

class Human {

    public static void main(String[] args) 
        throws Exception {
        try {
            try {
                throw new Sneeze();
            } 
            catch ( Annoyance a ) {
                System.out.println("Caught Annoyance");
                throw a;
            }
        } 
        catch ( Sneeze s ) {
            System.out.println("Caught Sneeze");
            return ;
        }
        finally {
            System.out.println("Hello World!");
        }
    }
}

回答:

うるささがキャッチ
くしゃみキャッチ
!Hello Worldの
私たちは疑いを持っている第一及び第三行、キーは二行目があると信じて、それはそれでアウトすべきですか?例外親が行うことをキャッチのサブクラスではないですか?
ブレークポイントを追加した後、我々は発見したが、
キャッチ(うるさのa)は
この文は、親クラスの使用への参照ですが、実際にJavaの多型の古典的な現れであるオブジェクトのサブクラスです。
キャッチ(くしゃみS)
コースでは、異常を捨て、自分のをキャプチャすることができるとき。

7、Collectionインタフェースから継承されたかどうかをリスト、セット、地図?
A:リスト、セット市、地図ではありません。キーと値のマッピングコンテナ地図、そしてセットリストを明確に区別して、要素の断片化と保存された設定が重複(あまりにも設定数学)を許可していません、コンテナがために、値の線形構造一覧ですインデックス・ケースのアクセス要素。
ここに画像を挿入説明
8、セット記載のArrayList、ベクター、LinkedListのストレージ性能と特性。
:ArrayListのとベクトルデータには、配列、配列要素数が増加すると、直接シリアル番号によって索引付け要素を許可要素、インサートが、移動等のメモリ動作に関わる要素配列要素を挿入するように格納されている実際のデータよりも大きい場合を用いて格納されていますインデックスデータは、高速と低速の挿入データ、ベクターの方法は、同期の付加により修飾されているので、ベクトルは、スレッドセーフなコンテナですが、ArrayListに比べてパフォーマンスの低下、したがって、Javaでのレガシーコンテナを持っています。LinkedListのシリアル番号、連続鎖ストレージアレイのストレージに比べて、メモリの使用率によってインデックス付けすることができる線状構造を形成するために一緒に加え散在関連する基準メモリセルによってメモリ(記憶されている二重リンクリストを使用して実装しましたより高い)、横断する、または後のデータニーズの前にシリアル番号によって索引付けが、唯一の前と後のこのレコードはデータ項目、挿入速度を挿入することができます。レガシーコンテナ属しベクトル(ジャワのコンテナ以前のバージョンを加えて提供、ハッシュテーブルは、辞書、のBitSetは、スタックは 、プロパティは、 従来のコンテナです)、もはや、しかし、原因のArrayListとLinkedListedに非スレッドセーフされている推奨され、複数のスレッドを動作させる経験のコンテナとのシーンは、あなたが方法論的ツールをsynchronizedListことができた場合、カテゴリのコレクションは、このモードを装飾するためのアプリケーションです(使用前にスレッドセーフなコンテナに変換します、既存のオブジェクトは別のものを渡します。新しい拡張機能の実装を作成するオブジェクトのクラスのコンストラクタ)。

注:プロパティクラスの船が出て、スタッククラスは設計に重大な問題を抱えている、プロパティは特殊なキーとキーの値は、文字列をマッピングされている、デザインが1と2のHashtableに関連付けされなければなりませんジェネリック型パラメータはStringに設定しますが、Java APIのプロパティに直接、明らかに虐待の継承であるハッシュテーブルを、継承しています。ここではモードコードを多重化することは、しており、ツール継承されたクラス自体が間違ったアプローチ一方コンテナは、すべてのツールです上の代わりに、IS-A関係の関係、である必要があり、使用ツールへの最善の方法は、HAS-さの関係を(関連)または使用-Aの関係(依存性)。同様に、Stackクラスは、Vectorも間違っている拡張します。Sunのエンジニアはまた、このような愚かなミスを犯している、人々は驚嘆します。

9、コレクションと差のコレクション?
A:コレクションは、それはセット、リストおよびその他の容器のインターフェースの親である、インターフェースであり、コレクションがコンテナの操作を支援するための静的メソッドのシリーズを提供するユーティリティクラスです、これらの方法では、など、コンテナの検索、ソート、スレッドの安全性を備えように。

アクセス要素が、違いは何ですかながら10は、リスト、地図は、3つのインタフェースを設定しますか?
A:特定のインデックスが要素にアクセスリスト、重複した要素が存在し得ます。セットは、重複する要素保存しない(物体とを繰り返し要素にするかどうかを区別するための()メソッドに等しいです)。地図は、キーと値のペア(キーと値のペア)のマッピングを保存し、マッピング関係1または多くのことができます。コンテナは、設定されたマップの実装のバージョンは、2つのハッシュ木の保存に基づいて、アクセス時間の複雑さをソートしているときであるO(1)理論的なバージョンに基づいて、ハッシュ、ツリーのソートベースの挿入や削除の要素のバージョンを保存効果を達成するために重要な要素または要素(キー)による再発注に応じてソートツリーを構成するであろう。

公開された444元の記事 ウォン称賛15 ビュー10000 +

おすすめ

転載: blog.csdn.net/zt2650693774/article/details/105022804