古典的なJavaの基本的なインタビューの質問、歓迎と共有へのようこそ。
質問:主な方法がプライベートと宣言された場合はどうなりますか?
回答:正常にコンパイルできますが、実行中は「主な方法は公開されていません」とプロンプトします。
質問:Javaの参照の合格と合格値の違いは何ですか?
回答:参照を渡すということは、値自体ではなくアドレスを渡すことを意味し、値を渡すことは値のコピーです。
質問:オブジェクトの等しい方法を書き直したい場合、他に何を考慮する必要がありますか?
回答:ハッシュコード。
質問:Javaの「Write and Averywherewhere」はどのように実装されていますか?
回答:Javaプログラムは、バイトコードで構成されるクラスファイルにコンパイルされ、任意のプラットフォームで実行できるため、Javaはプラットフォームに依存しません。
質問:public static void main(string args [])ステートメントにおける各キーワードの役割を説明する
回答:一般:主な方法は、Javaプログラムが実行されたときに呼び出される最初の方法であるため、Java環境に表示される必要があります。したがって、視認性はプリックに設定されます。
静的:Javaプラットフォームは、このメソッドを呼び出すときにこのクラスのインスタンスを作成しないため、この方法は静的と宣言する必要があります。
void:メインメソッドには戻り値がありません。
文字列は、コマンドラインに渡されたパラメーターのタイプであり、ARGSはコマンドラインに渡される文字列の配列を指します。
質問:== equalsとの違い
回答:== 2つのオブジェクトがメモリ内の同じオブジェクトであるかどうかを比較します。つまり、メモリ内のストレージロケーションが同じであることを意味します。 2つの文字列オブジェクトによって保存されている値は同じですが、メモリ内のさまざまな場所に保存される場合があります。
==比較はリファレンスですが、Equalsメソッドはコンテンツを比較します。 Public Boolean Equals(Object OBJ)このメソッドはオブジェクトオブジェクトによって提供され、サブクラスで書き換えることができます。デフォルトの実装は、オブジェクトがそれ自体と比較された場合にのみTRUEを返し、この時点で==に相当します。文字列、ビットセット、日付、およびファイルはすべて、equalsメソッドをオーバーライドします。 2つの文字列オブジェクトの場合、等しい値は同じ文字シーケンスを含むことを意味します。基本タイプのラッパークラスの場合、等しい値は、対応する基本タイプの値が同じであることを意味します。
public class equalstest {public static void main(string [] args){string s1 = "abc";文字列s2 = s1;文字列s5 = "abc";文字列s3 = new String( "ABC");文字列S4 = new String( "ABC"); System.out.println( "==比較:” +(s1 == s5)); System.out.println( "==比較:” +(s1 == s2)); system.out.println( "equalsメソッド:” + s1.equals(s2)); System.out.println( "==比較:” + s3 == s4); system.out.println( "equalsメソッドを使用:” + s3.equals(s4)); }}結果:
==比較:true
==比較:true
Equalsメソッドの使用:true
間違い
Equalsメソッドの使用:true
質問:メインメソッドの静的修飾子が削除された場合はどうなりますか?
回答:プログラムは正常にコンパイルできます。 Nosuchmethoderrorの例外は、ランタイム中にスローされます。
質問:なぜOracle Type4ドライバーは薄いドライバーと呼ばれるのですか?
回答:Oracleは、薄いドライバーと呼ばれるタイプ4 JDBCドライバーを提供します。このドライバーには、Javaで完全に実装されているOracleにTCP/IP Net8の実装が含まれています。したがって、プラットフォームに依存しないため、実行時にブラウザによってダウンロードでき、クライアントのOracleの実装に依存しません。クライアント接続文字列は、データベース名のTNSNAMEではなく、TCP/IPアドレスポートを使用します。
質問:ファイナライズ方法を紹介させてください
回答:最終:一定の宣言。最後に:例外を処理します。ファイナライズ:ガベージコレクションを支援します。
インターフェイスで宣言された変数は、デフォルトで最終的なものです。最終クラスを継承することはできません。つまり、サブクラスはありません。これは、文字列や整数などの基本的なタイプのセキュリティ上の理由で行われます。これにより、コンパイラがいくつかの最適化を行い、スレッドセキュリティを簡単に確保できるようになります。最終的な方法を書き直すことはできません。最終変数の値を変更することはできません。 Finalize()メソッドは、オブジェクトが破壊され、リサイクルされる前に呼び出されます。最後に、例外がスローされているかどうかに関係なく、通常は例外処理に使用され、実行されます。たとえば、接続の閉鎖は通常、最終的にブロックで行われます。
質問:Java APIとは何ですか?
回答:Java APIは、GUIコンポーネントなどの多くの有用な機能を提供する多数のソフトウェアコンポーネントのコレクションです。
質問:グレゴリアンカレンダークラスは何ですか?
回答:グレゴリアンカレンダーは、従来の西洋カレンダーをサポートしています。
質問:ResourceBundleクラスは何ですか?
回答:ResourceBundleは、指定されたロケールにリソースを保存するために使用されます。アプリケーションは、ランタイムロケールに従ってこれらのリソースをロードでき、それにより異なる言語の表示を提供できます。
質問:なぜJavaにグローバル変数がないのですか?
回答:グローバル変数はグローバルに見えるものであり、Javaはグローバルに見える変数をサポートしていません。なぜなら、グローバル変数は参照透明性の原理を破壊するからです。グローバル変数は、名前空間の競合を引き起こします。
質問:文字列タイプを数値タイプに変換する方法は?
回答:整数クラスのValueofメソッドは、文字列を数値に変換できます。これがコードの例です。
文字列numstring = "1000";
int id = integer.valueof(numstring).intvalue();
質問:SimpleTimeZoneクラスは何ですか?
回答:SimpleTimeZoneはグレゴリオのデートサポートを提供します。
質問:時間ループとdoループの違いは何ですか?
回答:while構造により、ループの開始時に次の反復が続くかどうかが判断されます。 do/whire structureは、ループの終了時に次の反復が続くかどうかを決定します。 DO構造は、少なくとも1回ループ本体を実行します。
質問:ロケールクラスは何ですか?
回答:ロケールクラスは、ロケール環境に応じてプログラムの出力を動的に調整するために使用されます。
質問:オブジェクト指向プログラミングの原則は何ですか?
回答:3つの主要なポイントがあります:多型、相続、およびカプセル化。
質問:相続の原則の紹介
回答:継承により、1つのオブジェクトが別のオブジェクトのプロパティを取得できます。継承を使用すると、テストされた関数を再利用し、一度に変更でき、すべての継承場所が同時に有効になります。
質問:暗黙の型変換とは何ですか?
回答:暗黙的なタイプ変換は、コンパイラに変換が発生したことを明示的に伝えることなく、単に1つのタイプを別のタイプに割り当てることです。すべてのタイプが暗黙のタイプ変換をサポートするわけではありません。
コード例:
int i = 1000;
long j = i; //暗黙のキャスト
質問:Javaのキーワードのサイズはありますか?
回答:いいえ。
質問:ネイティブ方法は何ですか?
回答:ネイティブ方法は、非Javaコード実装方法です。
質問:System.out.println()で、System、out、およびprintlnとは何ですか?
回答:システムは、システムによって提供される事前定義された最終クラスです。 outはprintStreamオブジェクトで、printlnはOUTオブジェクトのオーバーロードされたメソッドです。
質問:カプセル化、相続、多型とは何ですか?
回答:簡単に言えば、多型とは、1つの名前の複数の実装を指します。多型により、エンティティは共通の方法で異なる操作を実装できます。特定の操作は、実際の実装によって決定されます。
Javaには多型を示す3つの方法があります。メソッドオーバーロードは、Javaインターフェイスを通じて継承とメソッド書き換えによって実装されます。
質問:明示的なタイプ変換とは何ですか?
回答:明示的なタイプ変換は、コンパイラにオブジェクトを変換するように明示的に指示します。
コード例:
長いi = 700.20;
int j =(int)i; //明示的なキャスト
質問:Java仮想マシンとは何ですか?
回答:Java仮想マシンは、さまざまなハードウェアプラットフォームに移植できるソフトウェアシステムです。
質問:タイプダウンコンバージョンとは何ですか?
回答:ダウンコンバージョンとは、共通のタイプから特定のタイプに変換することを指します。これは、継承構造で下向きに実行されます。
質問:Javaのアクセス修飾子は何ですか?
回答:アクセス修飾子は、クラスメンバーのアクセスタイプを示すキーワードです。これらのキーワードを使用して、プログラムのメソッドまたは変数へのアクセスを定義します。それらが含まれています:
パブリック:すべてのクラスにアクセスできます。すべてのサブクラスはプライベートにアクセスできます:属性クラスのみがデフォルトにアクセスできます:同じパッケージの下の属性クラスとサブクラスはアクセスできます
質問:すべてのクラスの親クラスは何ですか?
回答:オブジェクト。
質問:Javaの基本的なタイプは何ですか?
回答:Byte、Char、Short、int、long、float、double、boolean。
質問:静的タイプの特性は何ですか?
回答:静的変数はクラスのオブジェクトではなく、クラスにバインドされます。各インスタンスオブジェクトは同じ静的変数を共有します。つまり、クラスには、どれだけのオブジェクトがあるかにかかわらず、クラスには静的変数が1つしかありません。クラス変数または静的変数は、キーワード静的を介して宣言されます。通常、クラス変数は定数として使用されます。静的変数は通常、クラス名でアクセスされます。プログラムが実行されているとき、この変数はプログラムが終了し、破壊されないまで作成されます。クラス変数の範囲は、インスタンス変数の範囲と同じです。その初期値は、メンバー変数と同じです。変数が初期化されていない場合、データ型に応じてデフォルト値があります。同様に、静的メソッドは、クラスオブジェクトではなくクラスに属する方法です。彼らの呼び出しはクラスオブジェクトに作用することはなく、クラスインスタンスを作成する必要はありません。書き換えはクラスインスタンスでのみ発生するため、静的メソッド自体が最終的です。静的メソッドは、オブジェクトではなくクラスにバインドされます。親クラスの静的方法は、元の方法が最終として宣言されていない限り、子クラスの静的方法によってブロックされます。非静的な方法は静的方法をオーバーライドできません。つまり、静的方法をサブクラスのインスタンスメソッドに変更することはできません。
非静的変数には、各オブジェクトインスタンスの値の個別のコピーがあります。
質問:&オペレーターと&&オペレーターの違いは何ですか?
回答:AN&Expressionが評価されると、両方のオペランドが評価され、&&はオペレーターの近道のようになります。 AN &&式が評価すると、最初のオペランドが最初に計算され、TRUEを返すと、2番目のオペランドが計算されます。最初のオペランドがfalseと見なされる場合、2番目のオペランドは評価されません。
質問:Javaは整数のオーバーフローとアンダーフローをどのように処理しますか?
回答:Javaは、計算結果に対応する低次バイトを、型のサイズに応じて対応する値に保存します。
質問:public static voidが静的パブリックボイドとして記述された場合はどうなりますか?
回答:プログラムはコンパイルされ、正常に実行されます。
質問、変数の宣言と変数の定義の違いは何ですか?
回答:変数を宣言して、変数のタイプと名前のみを提供し、それを初期化しません。定義には、宣言と初期化文字列sの2つの段階が含まれます。 Variable宣言、文字列S = new String( "Bob");または文字列s = "bob";可変定義です。
質問:Javaはどのパラメーターの渡しタイプをサポートしていますか?
回答:Javaパラメーターはすべて渡された値です。オブジェクトの場合、渡された値はオブジェクトへの参照です。つまり、元の参照とパラメーター参照の両方のコピーは両方とも同じオブジェクトを指します。
質問:オブジェクトのカプセル化の原則は何ですか?
回答:カプセル化とは、データを別のユニットに操作するデータとコードをバインドすることです。これにより、データのセキュリティが保証され、外部コードの誤った使用が防止されます。オブジェクトにより、プログラムとデータをカプセル化して、潜在的な干渉を減らすことができます。カプセル化のもう1つの理解は、保護層の外側のコードへのランダムアクセスを防ぐために、データとコードの保護層として機能することです。
質問:変数をどのように理解していますか?
回答:変数は、プログラムによるアクセスのための名前付きメモリ領域です。変数はデータを保存するために使用され、プログラムが実行されると、保存されたデータも変更される場合があります。
質問:数値改善とは何ですか?
回答:数値強化とは、整数または浮動小数点操作のデータ型からデータ型へのデータの変換を指します。数値の増加の過程で、バイト、char、短い値はintタイプに変換されます。必要に応じて、INTタイプは長く昇格することもあります。長いフロートとフロートは、ダブルタイプに変換される場合があります。
質問:Javaのタイプ変換は何ですか?
回答:あるデータ型から別のデータ型への変換は、タイプ変換と呼ばれます。 Javaには2種類の変換方法があります。1つは明示的なタイプ変換で、もう1つは暗黙的です。
質問:メインメソッドのパラメーターの文字列配列の最初のパラメーターは何ですか?
回答:アレイは空で、要素はありません。 CやC ++とは異なり、最初の要素はデフォルトでプログラム名です。コマンドラインがパラメーターを提供しない場合、メインメソッドの文字列配列は空ですが、nullではありません。
質問:配列がnullか空かを判断するにはどうすればよいですか?
回答:array.lengthの出力値。 0の場合、配列は空です。 nullの場合、nullポインターの例外がスローされます。
質問:複数のクラスを同時に所有し、プログラムに主要な方法を持つことができますか?
回答:はい。プログラムが実行されたら、実行中のクラス名を指定します。 JVMは、指定したクラスの主要な方法のみを探します。したがって、メインメソッドを持つ複数のクラスの間に命名対立はありません。
質問:静的変数はいつロードされますか?コンパイルまたはランタイム?静的コードブロックの読み込みのタイミングは何ですか?
回答:クラスローダーがクラスをJVMにロードすると、静的変数が作成されます。これは、オブジェクトが作成されるかどうかとは何の関係もありません。静的変数がロードされると、メモリスペースが割り当てられます。静的コードブロックのコードは、クラスが初めて初期化されたときにのみ実行されます。クラスには複数の静的コードブロックを持つことができ、クラスのメンバーではなく、返品値がなく、直接呼び出すことはできません。静的コードブロックにはこれやスーパーを含めることはできません。通常、静的変数で初期化されます。
質問:クラスには複数の主要な方法を持つことができますか?
回答:はい。ただし、次の署名がある主な方法は1つだけです。
public static void main(string [] args){}
それ以外の場合、プログラムはコンパイルされません。コンパイラは、主な方法がすでに存在することを警告します。
質問:JVMの仕組みを簡単に紹介しましょう。
回答:JVMは抽象的なコンピューターです。実際のコンピューターのように、最初に.javaファイルを.classファイル(.classファイルはbytecodeファイル)にコンパイルし、その後、インタープリターを使用してbytecodeを読み込みます。
質問:2つの変数の値が配置されている場合はどうなりますか?
回答:最初に2つの値を追加し、最初の変数に値を割り当て、結果から2番目の変数を差し引き、値を2番目の変数に割り当てます。次に、最初の変数で2番目の変数を減算し、同時に最初の変数に値を割り当てます。コードは次のとおりです。
int a = 5、b = 10; a = a+b; b = ab; a = ab;
XORを使用して切り替えます。最初の方法は、オーバーフローを引き起こす可能性もあります。 XORの方法は次のとおりです。IntA= 5、b = 10; a = a+b; b = ab; a = ab;
int a = 5; int b = 10;
a = a ^ b;
b = a ^ b;
a = a ^ b;
質問:データのカプセル化とは何ですか?
回答:データをカプセル化する1つの方法は、クラスのセットを作成してメソッドを取得して、オブジェクトのデータ変数にアクセスすることです。一般的に言えば、変数はプライベートですが、Get and Setメソッドは公開されています。カプセル化を使用して、データを保存するときにデータを検証したり、データを計算したり、内省として使用したりすることもできます(ストラットでJavabeansを使用するなど)。データと機能を別の構造にカプセル化することは、データカプセル化と呼ばれます。カプセル化は、実際にはデータと関連する操作方法を独立したユニットにカプセル化するため、これらの関連する方法を使用してデータにアクセスできます。カプセル化はデータセキュリティを提供します。これは、実際にはデータを非表示にする方法です。
質問:反射APIとは何ですか?どのように実装されていますか?
回答:リフレクションとは、ランタイム中にクラスのステータスと特性を表示し、動的管理を実行できる機能を指します。これらの関数は、クラス、メソッド、フィールド、コンストラクターなどの組み込みクラスリフレクションAPIを介して提供されます。使用例:Java反射APIのgetNameメソッドを使用して、クラス名を取得します。
質問:JVM自体はキャッシュを維持しますか?ヒープにオブジェクトが割り当てられていますか、それともJVM自体によって管理されているオペレーティングシステムまたはヒープのヒープですか?なぜ?
回答:はい、JVM自体がキャッシュを管理し、ヒープ内のオブジェクトを作成し、スタック内のオブジェクトを参照します。
質問:仮想メモリとは何ですか?
回答:仮想メモリは拡張メモリとも呼ばれ、実際には実際の物理メモリはありません。
質問:この方法は静的で同期することができますか?
回答:はい。これを行うと、JVMはこのオブジェクトに関連付けられているjava.lang.classインスタンスのロックを取得します。そうすることは次のとおりです。
同期(xyz.class){
}
質問:文字列とStringTokenizerの違いは何ですか?
回答:StringTokenizerは、文字列を分割するために使用されるツールクラスです。
stringtokenizer st = new StringTokenizer( "Hello World"); while(St.HasmoreTokens()){system.out.println(St.NextToken());}
出力:
こんにちは
世界
質問:過渡変数の特性は何ですか?
回答:過渡変数はシリアル化されません。たとえば、シリアル化可能なインターフェイスを実装するクラスがObjectStreamにシリアル化される場合、Type Transientの変数はストリームに書き込まれません。同時に、戻ると、対応する変数値はnullです。
質問:どのコンテナがデフォルトのレイアウトとしてボーダーレイアウトを使用していますか?
回答:ウィンドウ、フレーム、ダイアログ。
質問:同期とは何かを理解する方法は?
回答:同期は、複数のスレッド間の共有リソースのアクセスを制御するために使用され、1つのスレッドのみがこのリソースに同時にアクセスできるようにします。非同期に保護されたマルチスレッドプログラムでは、スレッドが共有変数を変更している場合、別のスレッドがその値を使用または更新することもできます。同期は、汚れたデータの生成を回避します。
メソッドの同期:
public synchronized void method1(){//適切なメソッド関連コード。}メソッド内のコードブロックを同期します。
public MyFunction(){synchronized(this){//ここで同期コード。 }}上記は、Javaインタビューの質問のための情報の編集です。今後も関連情報を追加し続けます。このサイトへのご支援ありがとうございます!