top 30 oops interview questions
このチュートリアルでは、よくある質問のオブジェクト指向プログラミング(OOP)インタビューの質問と回答の完全なセットを提供します。
ソフトウェア開発には、FORTRAN、Pascal、C、C ++などのさまざまな言語が発明された約70年以上の歴史があります。いくつかの基本的な数学的計算を実行するためにハードウェアに与えられるコマンドとして機能する一連のステートメントがあり、さまざまなソフトウェアアプリケーションを設計するための手続き型言語を作成しました。
インターネットの発明により、複雑なアプリケーションの設計には、安全で安定した、プラットフォームに依存しない堅牢な言語が必要でした。
オブジェクト指向プログラミングは、プラットフォームに依存せず、移植性があり、安全であり、カプセル化、抽象化、継承、ポリモーフィズムなどのさまざまな概念を備えています。
OOPSの利点は、生産性を向上させる再利用性、拡張性、およびモジュール性、モジュール性による保守の容易さ、コードの再利用による開発の高速化と低コスト、安全で高品質のアプリケーションの作成です。
学習内容:
基本的なオブジェクト指向プログラミングの概念
オブジェクト指向プログラミングには、ビジネス上の問題に解決策をもたらすために、それに関連する知的オブジェクト、データ、および動作が含まれます。 Javaプログラミング言語では、ビジネス上の問題のソリューションを設計するために、開発者は抽象化、カプセル化、継承、ポリモーフィズムなどの概念を適用します。
などのさまざまな概念 抽象化 無関係な詳細を無視します、 カプセル化 これは、内部機能に関する複雑さを開示することなく、最低限必要なものに焦点を当てています。 継承 親クラスのプロパティを継承するか、インターフェイスを使用して複数の継承を実装し、 ポリモーフィズム これは、メソッドのオーバーロード(静的ポリモーフィズム)とメソッドのオーバーライド(動的ポリモーフィズム)のプロパティを拡張します。
最もよくあるOOPSインタビューの質問
Q#1)Javaでのオブジェクト指向プログラミングとはどういう意味ですか?
回答: OOPは、ペン、モバイル、銀行口座など、状態(データ)と動作(メソッド)を持つ実際のエンティティなどのオブジェクトを扱います。
アクセスの助けを借りて、このデータとメソッドへの指定者のアクセスが保護されます。カプセル化と抽象化の概念は、データの非表示とエッセンシャル、継承、およびポリモーフィズムへのアクセスを提供し、コードの再利用とメソッドおよびコンストラクターのオーバーロード/オーバーライドを支援し、Javaなどの言語を使用して、アプリケーションをプラットフォームに依存せず、安全で堅牢にします。
Q#2)Javaは純粋なオブジェクト指向言語ですか?
回答: Javaは、完全に純粋なオブジェクト指向プログラミング言語ではありません。 理由は次のとおりです。
- Javaは、int、float、double、charなどのプリミティブデータ型をサポートおよび使用します。
- プリミティブデータ型は、変数として、またはヒープではなくスタックに格納されます。
- Javaでは、オブジェクト指向の概念とは異なり、静的メソッドはオブジェクトを使用せずに静的変数にアクセスできます。
Q#3)Javaでクラスとオブジェクトを説明してください。
回答: クラスとオブジェクトは、Javaのようなオブジェクト指向プログラミング言語で不可欠な役割を果たします。
- クラスは、オブジェクトによってサポートされ、オブジェクトの作成に使用される状態と動作を持つプロトタイプまたはテンプレートです。
- オブジェクトはクラスのインスタンスであり、 例えば、 人間は、椎骨系、脳、色、身長を持った状態のクラスで、canThink()、ableToSpeak()などの動作をします。
Q#4)Javaのクラスとオブジェクトの違いは何ですか?
回答: 以下は、Javaのクラスとオブジェクトの主な違いです。
| クラス | オブジェクト |
|---|---|
| クラスの実際の例は、 •料理を作るためのレシピ。 •自動車エンジンの青写真。 | オブジェクトの実際の例は次のとおりです。 •レシピから作られた料理。 •設計図に従って構築されたエンジン。 |
| クラスは論理エンティティです | オブジェクトは物理エンティティです |
| クラスは、オブジェクトを作成できるテンプレートです。 | オブジェクトはクラスのインスタンスです |
| クラスは、類似したオブジェクトの状態と動作を持つプロトタイプです。 | オブジェクトは、モバイル、マウスなどの実生活に存在するエンティティ、または銀行口座などの知的オブジェクトです。 |
| クラスは、クラスClassname {}のようなクラスキーワードで宣言されます。 | オブジェクトは、新しいキーワードを介してEmployee emp = new Employee();として作成されます。 |
| クラスの作成中、メモリの割り当てはありません | オブジェクトの作成中に、メモリがオブジェクトに割り当てられます |
| classキーワードを使用して定義される一方向クラスのみがあります | オブジェクトの作成は、newキーワード、newInstance()メソッド、clone()、ファクトリメソッドなど、さまざまな方法で実行できます。 |
Q#5)オブジェクト指向プログラミングが必要なのはなぜですか?
回答: OOPは、セキュリティと制御データアクセスを強化するためのアクセス指定子とデータ隠蔽機能を提供し、関数と演算子のオーバーロードでオーバーロードを実現できます。1つのプログラムで作成済みのオブジェクトを他のプログラムで使用できるため、コードの再利用が可能です。
データの冗長性、コードの保守、データのセキュリティ、およびオブジェクト指向プログラミングにおけるカプセル化、抽象化、ポリモーフィズム、継承などの概念の利点は、以前に使用されていた手続き型プログラミング言語よりも優れています。
Q#6)リアルタイムの例で抽象化について説明してください。
回答: オブジェクト指向プログラミングの抽象化とは、複雑な内部を隠すことを意味しますが、コンテキストに関して本質的な特性と動作のみを公開することを意味します。実生活では、抽象化の例は、たとえば任意のeコマースサイトでのオンラインショッピングカートです。製品を選択して注文を予約すると、時間どおりに製品を受け取ることに関心があります。
それは複雑で隠されているので、物事がどのように起こるかはあなたが興味を持っているものではありません。これは抽象化として知られています。同様に、ATMの例をとると、アカウントからお金を引き落とす方法の内部の複雑さは隠されたままであり、ネットワークを介して現金を受け取ります。同様に自動車の場合、ガソリンがエンジンを自動車に動かす方法は非常に複雑です。

Q#7)リアルタイムの例をいくつか挙げて、継承について説明してください。
回答: 継承とは、あるクラス(サブクラス)が継承によって別のクラス(スーパークラス)のプロパティを取得することを意味します。実生活では、通常の自転車が親クラスであり、スポーツバイクが子クラスである場合の継承の例を考えてみましょう。スポーツバイクは、通常の自転車と同じギアを介してペダル付きの回転ホイールの特性と動作を継承しています。
Q#8)Javaでポリモーフィズムがどのように機能するか、実際の例で説明してください。
回答: ポリモーフィズムは、さまざまなことを行うためのメソッドの複数の形式または機能を持つ機能です。実生活では、異なる職務を遂行する同じ人は異なる行動をします。彼はオフィスでは従業員であり、自宅では父親であり、放課後または放課後の授業では学生であり、週末にはクリケットをし、遊び場で選手をしています。
SQLインジェクションを手動でテストする方法
Javaには、2つのタイプのポリモーフィズムがあります
- コンパイル時 ポリモーフィズム: これは、メソッドのオーバーロードまたは演算子のオーバーロードによって実現されます。
- ランタイムポリモーフィズム: これは、メソッドのオーバーライドによって実現されます。
Q#9)継承の種類はいくつありますか?
回答: さまざまな種類の継承を以下に示します。
- 単一継承: 単一の子クラスは、単一の親クラスの特性を継承します。
- 多重継承: 1つのクラスは複数の基本クラスの機能を継承し、Javaではサポートされていませんが、クラスは複数のインターフェースを実装できます。
- マルチレベルの継承: クラスは派生クラスから継承して、新しいクラスの基本クラスにすることができます。 例えば、 子供は父親から行動を継承し、父親は父親から特性を継承しています。
- 階層的継承: 1つのクラスが複数のサブクラスに継承されます。
- ハイブリッド継承: これは、単一継承と多重継承の組み合わせです。
Q#10)インターフェースとは何ですか?
回答: インターフェイスは、メソッドと変数を持つことができるクラスに似ていますが、そのメソッドには本体がなく、抽象メソッドと呼ばれる署名だけがあります。インターフェイスで宣言された変数は、デフォルトでpublic、static、finalを持つことができます。インターフェイスは、Javaで抽象化と多重継承のために使用され、クラスは複数のインターフェイスを実装できます。
Q#11)抽象化と継承の利点を説明できますか?
回答: 抽象化は、ユーザーに重要な詳細のみを明らかにし、無関係または複雑な詳細を無視または非表示にします。言い換えると、データの抽象化により、インターフェイスが公開され、実装の詳細が非表示になります。 Javaは、インターフェースと抽象クラスの助けを借りて抽象化を実行します。抽象化の利点は、実装の複雑さを軽減または非表示にすることで、物事を簡単に表示できることです。
コードの重複が回避され、コードの再利用性が向上します。重要な詳細のみがユーザーに公開され、アプリケーションのセキュリティが向上します。
継承とは、子クラスが親クラスの機能(動作)を継承する場所です。親クラスで一度記述したコードを、子クラスで再び機能させるために記述する必要がないため、コードの再利用が容易になります。コードも読みやすくなります。継承は、「ある」関係がある場合に使用されます。 例: ヒュンダイ は 車またはMSWord は ソフトウェア。
Q#12)拡張と実装の違いは何ですか?
回答: extendsキーワードとimplementsキーワードはどちらも継承に使用されますが、その方法は異なります。
JavaのExtendsキーワードとImplementsキーワードの違いを以下に説明します。
| 拡張します | 実装 |
|---|---|
| クラスは別のクラスを拡張できます(子はその特性を継承して親を拡張します)。インターフェイスも(キーワードextendsを使用して)別のインターフェイスを継承します。 | クラスはインターフェースを実装できます |
| スーパークラスを拡張するサブクラスは、すべてのスーパークラスメソッドをオーバーライドできない場合があります | クラス実装インターフェイスは、インターフェイスのすべてのメソッドを実装する必要があります。 |
| クラスは単一のスーパークラスのみを拡張できます。 | クラスは任意の数のインターフェースを実装できます。 |
| インターフェイスは、複数のインターフェイスを拡張できます。 | インターフェイスは他のインターフェイスを実装できません。 |
| 構文: クラス子はクラス親を拡張します | 構文: クラスHybridはRoseを実装します |
Q#13)Javaのさまざまなアクセス修飾子は何ですか?
回答: Javaのアクセス修飾子は、クラス、コンストラクタ、変数、メソッド、またはデータメンバーのアクセススコープを制御します。 さまざまなタイプのアクセス修飾子は次のとおりです。
- デフォルトのアクセス修飾子 アクセス指定子のデータメンバー、クラス、およびメソッドがなく、同じパッケージ内でアクセスできます。
- プライベートアクセス修飾子 キーワードprivateでマークされており、クラス内でのみアクセス可能であり、同じパッケージからクラスでアクセスすることもできません。
- 保護されたアクセス修飾子 同じパッケージまたは異なるパッケージのサブクラス内でアクセスできます。
- パブリックアクセス修飾子 どこからでもアクセスできます。
Q#14)抽象クラスとメソッドの違いを説明してください。
回答: 以下は、Javaの抽象クラスと抽象メソッドのいくつかの違いです。
| 抽象クラス | 抽象メソッド |
|---|---|
| 抽象クラスからオブジェクトを作成することはできません。 | 抽象メソッドには署名がありますが、本体はありません。 |
| 抽象クラスのメンバーにアクセスするために、抽象クラスを作成または継承するサブクラス。 | サブクラスのスーパークラスの抽象メソッドをオーバーライドする必要があります。 |
| 抽象クラスには、抽象メソッドまたは非抽象メソッドを含めることができます。 | 抽象メソッドを含むクラスは抽象クラスにする必要があります。 |
Q#15)メソッドとコンストラクターの違いは何ですか?
回答: Javaのコンストラクタとメソッドの違いは次のとおりです。
| コンストラクター | メソッド |
|---|---|
| コンストラクターの名前は、クラスの名前と一致する必要があります。 | メソッドは、クラス名と同じ名前であってはなりません。 |
| これらは、メモリを作成、初期化、およびオブジェクトに割り当てるために使用されます。 | メソッドは、メソッド内に記述された特定のステートメントを実行するために使用されます。 |
| コンストラクターは、オブジェクトが作成されるたびにシステムによって暗黙的に呼び出されます。 | メソッドは、呼び出されたときに呼び出されます。 |
| これらは、クラス(オブジェクト)のインスタンスを作成するときにnewキーワードを使用して呼び出されます。 | メソッドは、プログラムの実行中に呼び出されます。 |
| コンストラクターには戻り値の型がありません。 | メソッドには戻り値の型があります。 |
| コンストラクターはサブクラスに継承できません。 | メソッドはサブクラスに継承できます。 |
Q#16)Javaのコンストラクターとは何ですか?
回答: コンストラクターは戻り値の型のないメソッドであり、その名前はクラス名と同じです。オブジェクトを作成すると、デフォルトのコンストラクターがJavaコードのコンパイル中にオブジェクトにメモリーを割り当てます。コンストラクターは、オブジェクトを初期化し、オブジェクト属性の初期値を設定するために使用されます。
Q#17)Javaでは何種類のコンストラクターを使用できますか?説明してください。
回答: Javaには基本的に3種類のコンストラクタがあります。
これらは:
最高のオペレーティングシステムは何ですか
- デフォルトのコンストラクター: このコンストラクターにはパラメーターがなく、クラス(オブジェクト)のインスタンスを作成するたびに呼び出されます。クラスがEmployeeの場合、デフォルトのコンストラクターの構文はEmployee()になります。
- 引数なしのコンストラクター: 名前が示すように、引数のないコンストラクターは引数なしコンストラクターと呼ばれます。
- パラメータ化されたコンストラクタ: いくつかのパラメーターを持つコンストラクターは、パラメーター化されたコンストラクターと呼ばれます。引数、つまりそのコンストラクターのパラメーターのデータ型に関する初期値を指定する必要があります。
Q#18)Javaで新しいキーワードが使用されるのはなぜですか?
回答: クラスのインスタンス、つまりオブジェクトを作成するときは、Javaキーワードを使用します 新着 。 JVMがオブジェクト用のスペースを予約するヒープ領域にメモリを割り当てます。内部的には、デフォルトのコンストラクターも呼び出します。
構文:
Class_name obj = new Class_name();Q#19)スーパーキーワードはいつ使用しますか?
回答: 素晴らしい 親(基本)クラスを識別または参照するために使用されるJavaキーワードです。
- superを使用して、スーパークラスコンストラクターにアクセスし、スーパークラスのメソッドを呼び出すことができます。
- スーパークラスとサブクラスでメソッド名が同じ場合、スーパークラスを参照するには、 素晴らしい キーワードが使用されます。
- 親クラスと子クラスに存在する場合に、親クラスの同じ名前のデータメンバーにアクセスするため。
- 素晴らしい 親クラスの引数なしおよびパラメーター化されたコンストラクターを明示的に呼び出すために使用できます。
- 親クラスのメソッドへのアクセスは、 素晴らしい 、子クラスのメソッドがオーバーライドされている場合。
Q#20)このキーワードはいつ使用しますか?
回答: この Javaのキーワードは、コンストラクターまたはメソッド内の現在のオブジェクトを参照します。
- クラス属性とパラメーター化されたコンストラクターの両方が同じ名前の場合、 この キーワードが使用されます。
- キーワード この 現在のクラスコンストラクター、現在のクラスのメソッドを呼び出し、現在のクラスのオブジェクトを返し、コンストラクターに引数を渡し、メソッドを呼び出します。
Q#21)ランタイムとコンパイル時のポリモーフィズムの違いは何ですか?
回答: 実行時とコンパイル時の両方のポリモーフィズムは、2つの異なるタイプのポリモーフィズムです。 それらの違いを以下に説明します。
| コンパイル時のポリモーフィズム | ランタイムポリモーフィズム |
|---|---|
| 呼び出しは、コンパイル時のポリモーフィズムでコンパイラーによって解決されます。 | 実行時ポリモーフィズムでは、呼び出しはコンパイラーによって解決されません。 |
| これは、静的バインディングおよびメソッドのオーバーロードとも呼ばれます。 | これは、動的、遅延、およびメソッドのオーバーライドとも呼ばれます。 |
| 異なるパラメーターを持つ同じ名前のメソッド、または同じシグネチャと異なる戻り値の型を持つメソッドは、コンパイル時のポリモーフィズムです。 | 異なるクラスに関連付けられた同じパラメータまたはシグニチャを持つ同じ名前のメソッドは、メソッドのオーバーライドと呼ばれます。 |
| これは、関数と演算子のオーバーロードによって実現されます。 | これは、ポインターと仮想関数によって実現できます。 |
| すべてのものがコンパイル時に実行されるため。コンパイル時のポリモーフィズムは柔軟性が低くなります。 | 実行時に実行されるため、実行時のポリモーフィズムはより柔軟になります。 |
Q#22)Javaで使用されているオブジェクト指向機能は何ですか?
回答: Javaプログラミング言語でオブジェクトを使用するという概念は、オブジェクトの状態と動作をバインドするためのカプセル化、アクセス指定子によるデータアクセスの保護、情報隠蔽の抽象化、状態を拡張するための継承などのオブジェクト指向の概念を使用することでメリットがあります。 、および基本クラスから子クラスへの動作、メソッドのオーバーロードとメソッドのオーバーライドのそれぞれのコンパイル時とランタイムのポリモーフィズム。
Q#23)メソッドのオーバーロードとは何ですか?
回答: 同じ名前の2つ以上のメソッドが異なる数のパラメーターまたは異なるタイプのパラメーターを持っている場合、これらのメソッドは異なる戻り値の型を持っている場合と持っていない場合があり、オーバーロードされたメソッドであり、機能はメソッドのオーバーロードです。メソッドのオーバーロードは、コンパイル時のポリモーフィズムとも呼ばれます。
Q#24)メソッドのオーバーライドとは何ですか?
回答: サブクラス(派生、子クラス)のメソッドが、そのスーパークラス(ベース、親クラス)のメソッドと同じ名前、パラメーター(署名)、および同じ戻り値の型を持つ場合、サブクラスのメソッドはオーバーライドされると言われます。スーパークラスのメソッド。この機能は、ランタイムポリモーフィズムとも呼ばれます。
Q#25)コンストラクターのオーバーロードについて説明してください。
回答: 各コンストラクターで異なるタスクを実行できるように異なるパラメーターを持つ複数のコンストラクターは、コンストラクターのオーバーロードと呼ばれます。コンストラクターのオーバーロードを使用すると、さまざまな方法でオブジェクトを作成できます。 Java APIのさまざまなCollectionクラスは、コンストラクターのオーバーロードの例です。
Q#26)Javaではどのような種類の引数を使用できますか?
回答: Javaのメソッドと関数の場合、パラメーターデータはさまざまな方法で送受信できます。 methodB()がmethodA()から呼び出され、methodA()が呼び出し元関数であり、methodB()が関数と呼ばれる場合、methodA()によって送信される引数は実際の引数であり、methodB()のパラメーターは仮引数と呼ばれます。
- 値による呼び出し: 仮パラメーター(methodB()のパラメーター)に加えられた変更は、呼び出し元(methodA())に返送されません。このメソッドは呼び出されます。 値で呼び出す 。 Javaは値による呼び出しをサポートします。
- 参照による呼び出し: 仮パラメーター(methodB()のパラメーター)に加えられた変更は、呼び出し元(methodB()のパラメーター)に返送されます。
- 仮パラメーター(methodB()のパラメーター)の変更は、実際のパラメーター(methodA()によって送信される引数)に反映されます。これは、参照による呼び出しと呼ばれます。
Q#27)静的バインディングと動的バインディングを区別しますか?
回答: 静的バインディングと動的バインディングの違いは、次の表で説明されています。
| 静的バインディング | 動的バインディング |
|---|---|
| Javaの静的バインディングでは、フィールドのタイプとクラスを解決策として使用します。 | Javaの動的バインディングは、バインディングを解決するためにオブジェクトを使用します。 |
| メソッドのオーバーロードは、静的バインディングの例です。 | メソッドのオーバーライドは、動的バインディングの例です。 |
| 静的バインディングはコンパイル時に解決されます。 | 動的バインディングは実行時に解決されます。 |
| 静的バインディングを使用するメソッドと変数は、private、final、およびstaticタイプです。 | 仮想メソッドは動的バインディングを使用します。 |
Q#28)基本クラス、サブクラス、スーパークラスについて教えてください。
回答:Javaの基本クラス、サブクラス、およびスーパークラスは次のように説明されています。
- 基本クラスまたは親クラスはスーパークラスであり、サブクラスまたは子クラスの派生元のクラスです。
- サブクラスは、基本クラスから属性(プロパティ)とメソッド(動作)を継承するクラスです。
Q#29)Javaでは演算子のオーバーロードがサポートされていますか?
回答: 演算子のオーバーロードは、Javaではサポートされていません。
- これにより、インタープリターはオペレーターの実際の機能を理解するためにより多くの労力を費やし、コードが複雑になり、コンパイルが困難になります。
- 演算子のオーバーロードにより、プログラムでエラーが発生しやすくなります。
- ただし、演算子のオーバーロードの機能は、メソッドのオーバーロードで、シンプルで明確なエラーのない方法で実現できます。
Q#30)ファイナライズメソッドを使用する場合は?
回答: ファイナライズ オブジェクトがガベージコレクションされる直前にメソッドが呼び出されます。このメソッドは、メモリリークを最小限に抑えるためにオーバーライドし、システムリソースを削除してクリーンアップアクティビティを実行します。
Q#31)トークンについて説明してください。
回答: Javaプログラムのトークンは、コンパイラーが認識する最小の要素です。識別子、キーワード、リテラル、演算子、および区切り文字は、トークンの例です。
結論
オブジェクト指向プログラミングの概念は、アプリケーションをテストしたり、Javaプログラミング言語でアプリケーションを開発したりするための自動化テストフレームワークを設計する開発者、自動化、および手動テスターにとって不可欠な部分です。
クラス、オブジェクト、抽象化、カプセル化、継承、ポリモーフィズムなどのすべてのオブジェクト指向機能を深く理解し、これらの概念をJavaなどのプログラミング言語に適用して顧客の要件を達成する必要があります。
私たちは、最も重要なオブジェクト指向プログラミングの面接の質問をカバーしようとし、例を挙げて適切な回答をしました。
今後のインタビューにご期待ください。