オブジェクト指向プログラミングの面接の質問は、プログラマーや開発者がプログラミングの世界の主要な概念についての知識を高めるのに役立ちます。
OOP は最も必要かつ必要なプログラミング パラダイムの 1 つであり、プロシージャや関数ではなくオブジェクトとクラスに焦点を当てています。
OOP ベースのプログラミング言語には、Objective-C、Java、Ada、Perl、Python、C++ などがあります。
大手企業は、オブジェクト指向のアプローチとパターンに精通した開発者を求めています。
したがって、このような面接プロセスに参加する予定がある場合は、OOP の概念を深く理解する必要があります。
面接やテストの準備に役立つ、OOP 面接でよくある質問と回答のいくつかを見てみましょう。
オブジェクト指向プログラミング (OOP): 概要

OOP は、オブジェクトを中心に展開するプログラミング パラダイムです。ここで、オブジェクトは、クラス テンプレートで指定されたいくつかの動作や特性を含むクラスのような、現実世界のインスタンスと見なされます。
たとえば、車を考えてみましょう。 OOP モデルによると、次のようになります。
- オブジェクト : 車。あなたが所有する車など、任意のタイプまたはモデルにすることができます。
- クラス : 車のモデルまたはタイプ (BMW、シボレー、起亜、アウディなど)。
- 特徴 :車の色、車台番号、エンジン形式、ギア形式など。
- 行動 :ギアの変え方、車の発進の仕方など。
ここで、特性はプロパティ、属性、またはデータとも呼ばれますが、動作はプログラミング言語のプロシージャ、メソッド、または関数として知られています。
それでは、OOP 面接でよくある質問から始めましょう。
OOP という用語は何を意味しますか?
回答: オブジェクト指向プログラミング (OOP) は、プロシージャや関数ではなくオブジェクトとクラスに基づくプログラミング モデルです。個々のオブジェクトはクラスに整理されます。 OOP は、ポリモーフィズム、隠蔽、継承などの概念とプログラミング パラダイムを使用して現実世界のエンティティを記述します。
OOP はコードとデータをバインドします。オブジェクトは、特定の特性と動作を持つクラスによって定義される現実世界のエンティティですが、クラスは特定のオブジェクトのパターンとして定義されます。ユーザー定義データ型とも呼ばれます。
これには、設計および製造用のプログラムとモバイル アプリケーションが含まれます。たとえば、OOP を製造システム シミュレーション ソフトウェアに使用できます。
OOP 以外のプログラミング パラダイムにはどのようなものがありますか?

回答: プログラミング パラダイムは、各言語の特徴に基づいてプログラミング言語を分類する方法です。プログラミング パラダイムには 2 つのタイプがあります。
- 命令型プログラミング パラダイム: ロジックを実行する方法と制御フローを定義する方法に焦点を当てます。これには、手続き型プログラミング パラダイム、オブジェクト指向プログラミング (OOP)、並列プログラミングが含まれます。
- 宣言型プログラミング パラダイム: 制御フローではなく、プログラム内で何を実行するかに焦点を当て、そのロジックを定義します。これには、論理プログラミング パラダイム、関数プログラミング パラダイム、データベース プログラミング パラダイムが含まれます。
OOPとSOPの違いは何ですか?
回答: 次の表を使用して、OOP と SOP の違いを理解しましょう。
オブジェクト指向プログラミング | 構造指向プログラミング |
これは、プロシージャや関数ではなくオブジェクトに基づいたプログラミング モデルです。 | これはプログラムに論理構造を提供し、プログラムは機能に分割されます。 |
ボトムアップのアプローチに従います | トップダウンのアプローチに従います |
データの隠蔽またはカプセル化を提供します | データの隠蔽は提供されません |
複雑な問題を解決できます。 | 中程度の問題は解決できます。 |
コードを再利用できるため冗長性が低い | コードの再利用性はサポートされていません。 |
より柔軟に | 柔軟性が低い |
その主な関心事はデータです。 | その主な関心事はプログラムの論理構造です。 |
OOP の主な機能は何ですか?

回答: OOP の主な機能は次のとおりです。
- 継承
- カプセル化
- 抽象化
- ポリモーフィズム
- メソッドのオーバーライド
- メソッドのオーバーロード
- オブジェクト
- クラス
- コンストラクターとデストラクター
継承、ポリモーフィズム、カプセル化は、OOP の基本要素であり、これらの機能を非 OOP 言語と区別します。
カプセル化とは何ですか?
回答: カプセル化とは、クラス、変数、メソッドなどをカプセル内に配置する方法であり、作業を実行して同じカプセルをユーザーに表示するために必要です。簡単に言えば、必要なすべてのメソッドとデータがまとめられ、不必要な詳細はユーザーから隠されます。
他の方法でも定義できます。
- データ バインディング: カプセル化は、データ メンバーとメソッドをクラスまたは全体としてバインドするプロセスです。
- データの隠蔽: カプセル化は、オブジェクトのメンバーへのアクセス制限など、不要な情報を隠すプロセスです。
ポリモーフィズムとは何ですか?

回答: ポリモーフィズムを、それを構成する 2 つの単語に分けて理解しましょう。
「ポリ」とは「たくさんの」という意味です
「モルフ」とは「形」を意味します。
したがって、ポリモーフィズムは、異なる形状を持つオブジェクトとして説明できます。
OOP では、一部のデータ、オブジェクト、メソッド、またはコードが複数のコンテキストまたは状況下で異なる動作をするプロセスと呼ばれます。 OOP モデルには 2 種類のポリモーフィズムがあります。
- 実行時のポリモーフィズム
- コンパイル時のポリモーフィズム
言い換えれば、それは単一のインターフェースの複数の定義です。たとえば、「vehicle」という名前のクラスがあり、これはメソッド「speed」で構成されています。車両によって速度が異なるため、速度を定義することは不可能です。したがって、これはさまざまな車両のさまざまな定義のサブクラスで定義できます。
静的ポリモーフィズムとは何ですか?
回答: 静的ポリモーフィズムは、コンパイル時ポリモーフィズムとも呼ばれます。これは、値に基づいてオブジェクトをそれぞれの演算子または関数にリンクできる機能です。これは、演算子のオーバーロードまたはメソッドのオーバーロードによって実現できます。
ここで、メソッドは同様の名前を使用していますが、それぞれの名前のパラメーターは異なります。オブジェクトは、同様のトリガーに対して異なる動作をします。したがって、複数のメソッドが同じクラスに実装されます。
動的ポリモーフィズムとは何ですか?

回答: 動的ポリモーフィズムは、ランタイム ポリモーフィズムとも呼ばれます。これは、実際の関数の組み込みが実行時または実行時に決定される OOP のポリモーフィズムのタイプを指します。これはメソッドのオーバーライドによって実現できます。
たとえば、bike と Yamaha という 2 つのクラスが作成され、クラス Yamaha は run() メソッドをオーバーライドして bike クラスを拡張します。サブクラス メソッドは親クラス メソッドをオーバーライドするため、実行時に呼び出されます。
クラスとは何ですか?
回答: クラスは、メンバー データと呼ばれるいくつかの値を含むブループリントまたはテンプレートとして定義できます。また、関数または動作と呼ばれるいくつかのルールも含まれています。オブジェクトを作成すると、クラスで定義された関数とデータが自動的に取得されます。
ただし、クラスはオブジェクトの設計図またはテンプレートです。クラスに基づいて、要件に応じた数のオブジェクトを設計できます。たとえば、最初に車のテンプレートが作成されます。その後、車のテンプレートに基づいて、さまざまな車のユニットが設計されます。
オブジェクトとは何ですか?

回答: オブジェクトは、テンプレートで定義された動作とメンバーのインスタンスを含むクラスのインスタンスとして定義できます。オブジェクトはユーザーが操作する実際のエンティティですが、クラスはそのオブジェクトの単なる設計図です。
したがって、オブジェクトには何らかの特性や動作があり、スペースを消費します (特定の自動車モデルなど)。
クラスと構造体の違いは何ですか?
回答: 表を使ってこれを理解しましょう。
クラス | 構造 |
クラスは参照型です。 | 構造体は値型です。 |
ヒープメモリに割り当てられます。 | スタックメモリ上に割り当てられます。 |
大規模参照型では割り当てが安くなる | 参照型よりも値型の方が割り当てが安価です。 |
無限の機能が備わっています。 | 機能が制限されています。 |
クラスは大規模なプログラムで使用されます。 | 構造体は小さなプログラムで使用されます。 |
これにはコンストラクターとデストラクターが含まれます。 | パラメーター化されたコンストラクターまたは静的コンストラクターが含まれます。 |
インスタンスを作成するたびに new() キーワードを使用します。 | キーワードの有無にかかわらず、インスタンスを簡単に作成できます。 |
クラスは別のクラスから継承できます。 | 構造体は継承できません。 |
クラスのデータ メンバーを保護できます。 | 構造体のデータ メンバーは保護できません。 |
関数メンバーは抽象または仮想にすることができます | 関数メンバーを抽象または仮想にすることはできません |
クラスの 2 つの異なる変数に、類似したオブジェクトの参照を含めることができます。 | 各変数には独自のコピーが含まれます。 |
継承とは何ですか?

回答: 継承は、クラスが別のクラスの主要なプロパティを継承できるようにする OOP の機能の 1 つです。たとえば、「vehicle」がクラスの場合、「car」、「bike」などは、クラス「vehicle」から主要なプロパティを継承できる他のクラスになります。
この機能は、冗長なコードを削除するのに役立ちます。したがって、コードのサイズが小さくなります。簡単に言うと、継承は親クラスから子クラスへのプロパティの受信者として定義されます。ここで、上記の例から、「vehicle」は親クラス、「car」または「bike」は子クラスです。
こうすることで、同じコードを再度記述したり、プロセスで時間を無駄にしたりすることなく、あるクラスのプログラミング コードを別のクラスで再利用できます。
さまざまな種類の継承にはどのようなものがありますか?
回答: OOP モデルでは、次のようなさまざまなタイプの継承が使用されます。
- 単一継承: 単一のクラスが単一の基本クラスの共通機能を継承する継承として定義されます。
- 多重継承: 単一のクラスが複数のクラスを継承する場合に問題が発生します。
- マルチレベル継承: これは、クラスが他のクラスのサブクラスである他のクラスから継承することを意味します。
- 階層継承: 1 つのクラスが複数のサブクラスを持つ継承を指します。
- ハイブリッド継承: マルチレベル継承と複数の継承の組み合わせです。
継承の制限は何ですか?

回答: 継承の制限には次のようなものがあります。
- プログラムの実行に必要な労力と時間が増加します。これは、あるクラスから別のクラスに頻繁にジャンプする必要があり、時間がかかるためです。
- 親クラスと子クラスは非常に密接に結合されているため、柔軟性が低くなります。
- 慎重に組み込む必要があります。そうしないと、不十分な結果や不正確な結果が生じる可能性があります。
- プログラム内の 1 つの変更により、親クラスと子クラスの両方のコードが変更される可能性があります。
抽象化とは何ですか?
回答: 抽象化は OOP の要素の 1 つです。抽象化の重要な役割は、複雑さを処理することです。これは、不要な詳細をユーザーから隠すことで実現されます。これにより、ユーザーは隠れた複雑さを考慮することなく、抽象化の上に複雑なロジックを実装できるようになります。
たとえば、コーヒー愛好家であれば、コーヒーマシンを使って一杯のコーヒーを作るために、どのくらいの量のミルク、コーヒー豆、角砂糖を加えるべきかを知る必要があります。その機械の動作原理について考えるのは無意味です。コーヒーマシンは隠れた複雑さであり、知る必要はありませんが、コーヒーを作るプロセスは必要不可欠です。
抽象化には 2 つのタイプがあります。
- データの抽象化
- プロセスの抽象化
コンストラクターとは何ですか?

回答: コンストラクターは、クラス名に似た名前を持つクラスまたは構造内の特別なメソッドです。これは、オブジェクトを初期化するという必要な目的を果たします。また、メンバー データやオブジェクトをクラスに割り当てるメソッドのインスタンス化にも役立ちます。
コンストラクターを作成するときは、次の点に留意する必要があります。
- クラス名と同じ名前が付けられます。
- 抽象的、最終的、または静的にすることはできません。
- 戻り値の型変数はありません。
C++ のさまざまなタイプのコンストラクターとは何ですか?
回答: C++ には主に 3 種類のコンストラクターがあります。
- デフォルトのコンストラクター: 定義にパラメーターや引数を持たないコンストラクター。このタイプのコンストラクターは、データ メンバーまたは変数を実際の値で初期化するために使用されます。
- パラメーター化されたコンストラクター: 宣言と定義に引数またはパラメーターが含まれます。パラメーター化されたコンストラクターを介して複数のパラメーターを渡すことができます。複数のコンストラクターの違いを知るためにオーバーロードに使用されます。
- コピー コンストラクター: 同様のクラスの別のオブジェクトを使用してオブジェクトを初期化するメンバー関数です。さらに、単一のオブジェクトから別のオブジェクトにデータをコピーするのにも役立ちます。
デストラクターとは何ですか?

回答: デストラクターは、オブジェクトの破棄中に自動的に呼び出されるメソッドです。特定のアクションを実装します。
- オブジェクトの初期化中に以前に割り当てられたヒープ領域を回復する
- データベース接続とファイルを閉じる
- ネットワークリソースとリソースロックの解放
- さまざまな家事の実行
つまり、デストラクターは、コンストラクターによって初期化されたオブジェクトを破棄します。これは、クラス名と同じ名前を持つ特殊なメンバー関数ですが、先頭に (~) 記号が付いています。デストラクターは一方向関数であるため、オーバーロードすることができます。
ガベージ コレクション (GC) とは何ですか?
回答: ガベージ コレクション (GC) は、Java や C# などのプログラミング言語に組み込まれたメモリ回復要素です。 GC 対応プログラミング言語には、プログラム内で不要になったメモリ領域を自動的に解放するガベージ コレクターが少なくとも 1 つ含まれています。
ガベージ コレクションにより、プログラムがまだメモリ クォータ内にあることが確認されます。これにより、開発者がプログラムのメモリを手動で管理することがなくなり、メモリ関連のバグが最小限に抑えられます。
例外処理とは何ですか?

回答: 例外処理は、コンピューター プログラムの実行中に予期しないイベントに応答する方法です。プログラマは、システムやプログラムのクラッシュを防ぐために、不要なイベント (例外) を「処理」する必要があります。この方法を使用しないと、例外によってプログラムの共通の動作が中断され、非効率またはリスクが生じる可能性があります。
Try/Catch ブロックとは何ですか?
回答: Try または catch は 、プログラム実行中のコーディングまたはデータ エラーによる例外処理を表すキーワードです。
- try ブロックは例外が発生するコード ブロックです。
- catch ブロックは、try ブロックの例外を処理し、キャッチします。
try ステートメント と catch ステートメントは、C++ を含むさまざまなプログラミング言語で頻繁に使用されます。 C#、Java、SQL、JavaScript。すべての try ステートメントは、実行を処理するために catch ステートメントと一致します。 Try および Catch ステートメントで覚えておくべき点がさらにいくつかあります。
- try ブロックの後には catch ブロックが続きます。
- try ブロックの後には、少なくとも 1 つの catch ブロックが続きます。
- try ブロックの後には別の try ブロックが続き、さらにその後に catch ブロックが続きます。
結論
OOP はプログラマが知っておくべき重要な概念です。それを徹底的に学ぶことは、OOP の概念を使用する言語でうまくプログラミングするのにも役立ちます。
面接やテストの準備をしている場合、上記の面接の質問と回答は、クラス、オブジェクト、カプセル化、ポリモーフィズム、継承、抽象化などの OOP の概念についての理解を新たにするのに役立ちます。そうすれば、自信を持って面接に挑み、面接をうまく乗り越えてキャリアを築くことができます。
これらの SQL インタビューの質問の一部を参照することもできます。