編集者は、Javaプログラマーにインタビューする友人向けの2017年の非常に人気のあるインタビューで、書面によるテストの質問をまとめました。あなたがJavaプログラマーにインタビューする準備をしている読者なら、すぐにそれを学びます。
1.次のステートメントは正しい()
A. 2つの公開クラスがファイルに同時に存在する可能性があります。
B.コンストラクターをオーバーライドできます
C.サブクラスは、パブリックによって親クラスによって変更されていないプロパティにアクセスでき、保護されていません。
D.Final Modified Classesは継承できます
回答:c
Javaソースファイルには1つのパブリッククラスしかありません。パブリッククラスがある場合、ソースファイル名はそれと一致する必要があります。そうしないと、コンパイルできません。ソースファイルにパブリッククラスがない場合、ファイル名とクラスの間に一貫性の要件はありません。 Main()については、プログラムを実行するために公開クラスに配置する必要はありません。
書き換えは、子クラスが親クラスから継承された後、親クラスの方法を変更することです。メソッド名、パラメーター、および戻り値は同じでなければなりません。マークされた最終的な方法は書き直すことはできません。メソッドを継承できない場合、このメソッドをオーバーライドすることはできません。
拡張:書き換えのオーバーライドと過負荷の過負荷の違い
Javaメソッドオーバーロード
同じ名前を持つクラスで複数のメソッドを作成できるが、異なるパラメーターと異なる定義を持つことができるということです。指を呼び出すと、特定の方法は、それらに渡された異なるパラメーターとパラメータータイプの数によって決定されます。返品値のタイプは同じまたは異なる場合がありますが、これはオブジェクト指向の多型でもあります。
Javaメソッド書き換え
親クラスとチャイルドクラスの間の多型は、親クラスの機能を再定義します。サブクラスで定義されているメソッドの親クラスと同じ名前とパラメーターがある場合、この方法はオーバーライドしていると言います。 Javaでは、サブクラスは同じ方法を書き換えることなく、親クラスからメソッドを継承できます。しかし、サブクラスは、親クラスの方法をそのまま継承したくない場合がありますが、メソッドの書き換えが必要な特定の変更を行いたい場合があります。メソッド上書きは、メソッド上書きとも呼ばれます。
サブクラスのメソッドには、親クラスのメソッドと同じメソッド名、返品タイプ、パラメーターテーブルがある場合、新しい方法は元のメソッドをオーバーライドします。親クラスで元のメソッドが必要な場合は、現在のクラスの親クラスを指すスーパーキーワードを使用できます。
サブクラス関数のアクセス修正権限は、親クラスのアクセス許可よりも小さいことはできません。
メソッドの書き換えは、継承関係にのみ存在することができ、メソッドの書き換えは、親クラスではプライベートではないメソッドのみを書き換えることができます。
2。
A.無制限の時間
B. 4回実行します
C. 3回実行します
D. 1回実行しないでください
回答:d
yの初期値は0です。ループ全体では、yの値は変わらないため、判断ステートメント(y!= 0)は真ではないため、1回実行されません。
3。Java Heapに関しては、次のステートメントが間違っています()
A.すべてのインスタンスとクラスの配列は、ヒープにメモリが割り当てられます。
B.オブジェクトが占めるヒープメモリは、自動メモリ管理システムによって収集されます。
C.ヒープメモリは、生き残ったオブジェクトと死んだオブジェクトと自由なフラグメントで構成されています。
D.配列はスタックに割り当てられます
回答:d
まず、アレイはヒープに割り当てられているため、Dのステートメントが正しくありません。
Java Heap:JVMのヒープの構造はランタイムデータ領域であり、クラスのすべてのインスタンスとアレイはヒープにメモリに割り当てられます。 JVMが開始されたときに作成されます。オブジェクトが占めるヒープメモリは、自動メモリ管理システム、つまりゴミコレクターによって収集されます。ヒープメモリは、生き残り死ぬオブジェクトで構成されています。存続するオブジェクトはアプリケーションにアクセスでき、ゴミ収集されません。死んだオブジェクトは、アプリケーションにアクセスできないオブジェクトであり、ゴミコレクターによってリサイクルされていません。ゴミコレクターがこれらのオブジェクトを取り戻すまで、ヒープメモリスペースを占有します。
4。スーパーとこのキーワードを使用する場合、以下の正しい説明は()です
A.サブクラスコンストラクターでsuper()を使用して、親クラスを呼び出すコンストラクターを表示します。
Super()は、サブクラスコンストラクターの最初の行に記述する必要があります。そうしないと、コンパイルは渡されません。
b.super()およびthis()をコンストラクターメソッドの最初の行に配置する必要はありません
C.この()とsuper()は、コンストラクターに同時に表示できます
D.This()およびSuper()は、静的メソッドや静的ステートメントブロックを含む静的環境で使用できます
回答:a
Javaキーワードこれはメソッド本体でのみ使用できます。オブジェクトが作成されると、Java仮想マシン(JVM)は、それ自体を参照するオブジェクトにポインターを割り当て、このポインターの名前はこれです。したがって、これはクラスの非静的な方法でのみ使用でき、これは静的な方法と静的コードブロックに表示されてはなりません。
Superの鍵はこれに似ています。これは、ブロックされたメンバー変数またはメンバーメソッドが表示されるか、ブロックされたメンバー変数とメンバーメンバーメソッドを参照するために使用されることです。
ただし、Superはサブクラスで使用されており、直接親クラスでブロックされたメンバーにアクセスすることを目的としています。それは直接の親クラスであることに注意してください(これはクラスの上の最新のスーパークラスです)
5.次のステートメントのどれが正しい()
A. Javaプログラムがコンパイルされた後、マシンコードが生成されます
B. Javaプログラムは、コンパイルされた後にBYTEコードを作成します。
C. Javaプログラムは、コンパイルされた後にDLLを生成します
D.上記のいずれも正しいものではありません
回答:b
Java bytecodeは、Javaソースファイルコンパイルによって生成された中間ファイルです
Java仮想マシンのクロスプラットフォームの性質は、Java Bytecodeを実行できる架空のコンピューターです。また、他のプログラミング言語にも比較的類似しています。
まず、C言語のコンパイルプロセスを紹介します。CファイルはCコンパイラプログラムによってコンパイルされ、Windows実行可能ファイルの実行可能ファイルを生成し、Windowsで実行します。
Javaコンパイルプロセスを紹介しましょう。JavaファイルはJavaコンパイラによってコンパイルされています。 Java ByteCodeファイルは、Java仮想マシンのクラスファイルです。マシンコードはCPUによって実行されます。 JavaはByteCodeでコンパイルされています。
コンピューターはマシンコードのみを実行できます。 Javaが実行されると、Bytecodeをマシンコードに変えます。 C/C ++は、コンパイル時にマシンコードに直接コンパイルされます
6.次のステートメントのどれが正しい()
A.抽象修飾子は、フィールド、メソッド、クラスを変更します
B.抽象的方法の本体部分は、ブレースのペアに包まなければなりません{}
C.抽象的なメソッドを宣言すると、ブレースはオプションです
D.抽象的なメソッドをブレースに記述することはできません
回答:d
抽象修飾子は、クラスとメンバーの方法を変更するために使用されます
要約で変更されたクラスは、抽象クラスを表します。抽象クラスは、継承ツリーの抽象層にあります。抽象クラスをインスタンス化することはできません。
抽象的な方法は、抽象的な方法を表現するために使用され、抽象的方法にはメソッド本体がありません。抽象的なメソッドは、システムに機能する機能を記述するために使用されますが、特定の実装を提供しません。
要約はJavaの重要なキーワードであり、クラスまたはメソッドの変更に使用できます。
メソッドを変更する場合、メソッドには機能署名(署名)のみがあり、特定の実装がないが、クラスを継承するサブクラスに特定の実装を残すため、ブレースが存在できないことを意味します。
7.次のステートメントは正しい()
A.クラスのコンストラクターは省略できません
B.コンストラクターはクラスと同じ名前を持っている必要がありますが、メソッドはクラスと同じ名前を持つことはできません
C.オブジェクトが新しいときにコンストラクターが実行されます
D.クラスは1つのコンストラクターのみを定義できます
回答:c
ここには誤解があるかもしれません。実際、通常のクラスのメソッドは、クラス名と同じ名前を持つことができます。それらとコンストラクターの唯一の違いは、コンストラクターに戻り値がないことです。
8。GCスレッドはデーモンスレッド()ですか
回答:はい
スレッドは、デーモンスレッドと非デーモンスレッド(つまり、ユーザースレッド)に分割されます。
現在のJVMインスタンスに非デーモンスレッドがない限り、デーモンスレッドはすべて機能します。最後の非デーモンスレッドが終了した場合にのみ、デーモンスレッドはJVMで動作します。
デーモンスレッドの最も典型的なアプリケーションはGC(ゴミコレクター)です
9。Sleep()およびwait()に関して、次のエラーは()です
A.睡眠はスレッドクラスの方法(スレッド)であり、待機はオブジェクトクラスの方法です。
B.スリープはオブジェクトロックを放出せず、オブジェクトロックを放棄するのを待ちます。
C.スリープはスレッドを一時停止しますが、監視ステータスは残り、終了後に自動的に再開されます。
D.待ってから、待機中のロックプールに入ります。このオブジェクトのNotifyメソッドを発行した後にのみ、オブジェクトロックが取得され、実行状態に入ります。
回答:d
睡眠はスレッドクラス(スレッド)の方法であり、このスレッドは指定された時間の実行を一時停止し、他のスレッドに実行の機会を与えますが、監視ステータスは残り、その後自動的に再開されます。スリープを呼び出しても、オブジェクトロックは放出されません。
待機はオブジェクトクラスの方法です。このオブジェクトの待機方法を呼び出すと、スレッドがオブジェクトロックを放棄し、このオブジェクトを待っている待機中のロックプールに入ります。このオブジェクトのNotifyメソッド(またはNotifyAll)を発行した後にのみ、このスレッドはオブジェクトロックプールに入り、オブジェクトロックを取得する準備をし、実行状態に入ります。
10。メソッドresume()は、whipredss()の実行を復元する責任があります
a、stop()メソッドを呼び出すことで停止するスレッド。
B、Sleep()メソッドを呼び出すことによって停止されるスレッド。
C、wait()メソッドを呼び出すことで停止するスレッド。
D、suspend()メソッドを呼び出すことで停止するスレッド。
回答:d
サスペンドはスレッドを吊り下げることができます。これは、スレッドを停止することを意味します。リソースを占有しますが、実行されません。履歴書を使用して、中断されたスレッドを復元し、スレッドを実行し続けます。