21最も読まれているC++インタビューの質問と回答[新入生向け]

公開: 2020-12-17

今日でも、C++は80年代と同じくらい人気があります。 この汎用のコンパイル済みマルチパラダイム(オブジェクト指向、手続き型、および機能型)プログラミング言語は、IT業界、特にソフトウェア開発において重要な役割を果たします。

世界中の開発者がC++を使用して、システムソフトウェア、データベースソフトウェア、組み込みソフトウェア、エンタープライズアプリケーション、GUIベースのアプリケーション、コンパイラ、高度な計算とグラフィックス、オペレーティングシステム、ブラウザ、ゲーム、クラウドシステムなどを構築しています。当然、C++は依然として関連性が高いです。プログラミング言語。

この投稿では、ソフトウェア開発でのキャリアを築くことを目指す場合に知っておくべき21のC++面接の質問のリストを作成しました。 これらのC++インタビューの質問と回答は、このテーマの氷を壊すのに役立ちます。

C++インタビューの質問と回答

  1. 「クラス」と「オブジェクト」を定義します。

C ++では、クラスはさまざまなエンティティ、アクション、および機能を反映するユーザー定義のデータ型です。 クラスには、データメンバーとその関数が含まれます。 これらのデータメンバーと関数へのアクセスは、private、public、protectedの3つの修飾子によって定義されます。 クラスはデータ型を定義しますが、データを定義するのではなく、単にデータ構造を指定するだけです。

オブジェクトはクラスのインスタンスです。 これは、人、場所、または物を表すことができるランタイムエンティティです。

オブジェクトは、データメンバーとメンバー関数を操作します。 これには、フィールド、メソッド、およびコンストラクターが含まれています。 たとえば、車はオブジェクトですが、ホイール、デザイン、色、ブラケットなどのさまざまな機能は、そのクラスのインスタンスです。

  1. 「アクセス指定子」とは何ですか?

アクセス指定子は、クラスのメンバー(関数と変数)にクラスのスコープ外でアクセスする方法を決定します。 C++には3種類のアクセス指定子があります

  • プライベート–プライベート指定子は、クラスメンバーが宣言されているのと同じクラス内でのみアクセスできることを意味します。 この場合、子クラスは親クラスのプライベートメンバーにアクセスできません。
  • 保護–保護された指定子により、子クラスは親クラスの保護されたデータメンバーにアクセスできます。
  • Public –「public」と宣言されたクラスメンバーは、C++コード全体からアクセスできます。
  1. 可変ストレージクラス指定子とは何ですか?

可変ストレージクラス指定子は、クラスの非静的および非定数メンバー変数にのみ適用され、定数クラスオブジェクトのメンバーを宣言して変更します。

  1. カプセル化とは何ですか?

カプセル化とは、データメンバーとその関数をクラス内でラップまたはバインドすることです。 このプロセスは、外部の方法からのアクセスを制限するため、セキュリティ上の理由から行われます。 データメンバーがプライベートの場合、そのメンバー関数のみがデータにアクセスできます。

  1. 抽象化とは何ですか?

抽象化は、内部実装を非表示にし、重要な詳細のみを表示するプロセスです。 データメンバーと関数へのアクセスは、使用されている修飾子によって異なります。 したがって、パブリックキーワードを使用してメンバーを定義すると、誰でもアクセスできます。 ただし、privateキーワードでメンバーを定義している場合は、外部の方法でメンバーにアクセスすることはできません。

  1. 名前空間とは何ですか?

名前空間は、コードの論理的な分割を容易にします。 これは、C ++プログラムで使用され、識別子に異なる名前空間を割り当てることにより、識別子の名前の競合を防止/解決します。 名前空間は、識別子(変数、クラス、および関数)が宣言されるスコープを定義します。 したがって、名前空間を使用する主な目的は、コードのあいまいさを排除することです。

  1. 「ポリモーフィズム」を定義します。 C ++には何種類のポリモーフィズムが存在しますか?

文字通り、ポリモーフィズムは複数の形態の存在を意味します。 C ++では、ポリモーフィズムは、同じ名前で機能が異なる複数の関数が存在する場合に発生します。

ポリモーフィズムには次の2つのタイプがあります。

  • 動的ポリモーフィズムは、C ++では「オーバーライド」とも呼ばれ、コンパイル時ではなく実行時に実行する必要のある関数メソッドを決定するのに役立ちます。 関数のオーバーライドは、動的ポリモーフィズムの優れたインスタンスです。 関数のオーバーライドでは、子クラスには親クラスにすでに存在するメソッドが含まれています。 したがって、子クラスは親クラスのメソッドをオーバーライドします。 この場合、親クラスと子クラスの両方が、異なる定義で同じ関数を保持します。
  • 静的ポリモーフィズムは、コードのコンパイル時に実装されます(したがって、コンパイル時のポリモーフィズムとも呼ばれます)。 メソッドのオーバーロードは、静的ポリモーフィズムの完璧な例です。 メソッドのオーバーロードにより、同じ名前で機能が異なる複数の関数を存在させることができます。
  1. 「Volatile」キーワードの目的を説明してください。

「volatile」関数は、特定の変数が揮発性であることを宣言するために使用されます。 これにより、コンパイラーが変数を外部で変更するように指示されるため、変数参照でのコンパイラーの最適化が回避されます。

読む: Javaインタビューの質問と回答

  1. インライン関数とは何ですか?

関数定義の前に接頭辞として「inline」キーワードがある関数はすべて、インライン関数です。 これらは主に、関数呼び出しのオーバーヘッドを減らすために使用されます。 インライン関数が呼び出されると、コード全体がインライン関数呼び出しの特定のポイントに挿入または置換されます。 コンパイラはインライン関数をマクロとして扱うため、実行速度ははるかに速くなります。 したがって、小さなインライン関数を宣言すると、コードの効率が向上します。

インライン関数の標準構文は次のとおりです。

インラインリターン型関数名(パラメータ)

{{

//関数コードはここにあります

}

  1. 「この」ポインタとは何ですか?

C ++では、「this」ポインタは、現在のオブジェクトのメモリアドレスを含む定数ポインタです。 これは、すべての非静的メンバー関数呼び出しに隠し引数として渡されます。 また、このポインターは、すべての非静的関数の本体内にローカル変数が存在します。

読む:SQLインタビューの質問と回答

  1. C ++には文字列プリミティブデータ型がありますか?

C ++は、文字列プリミティブデータ型を持つことはできませんが、標準テンプレートライブラリ(STL)のクラスを持つことができます。

  1. スコープ解決演算子の機能は何ですか?

スコープ解決演算子には、次の2つの目的があります。

  • これは、グローバル変数のスコープを解決するのに役立ちます。
  • 関数がクラスの外部で定義されている場合、スコープ解決演算子はその関数をクラスに関連付けます。
  1. デストラクタとは何ですか?

クラスのメンバー関数は、デストラクタと呼ばれます。 名前はクラス名と同じですが、接頭辞としてチルダ記号(〜)が付いています。 オブジェクトがスコープを失うと、デストラクタが自動的に実行されます。

  1. キーワードクラスとキーワード構造体の違いを説明してください。

キーワードクラスはデフォルトでプライベートメンバーを表しますが、キーワード構造体はデフォルトでパブリックメンバーに似ています。

  1. 純粋仮想関数を定義します。

純粋仮想関数とは、定義を含まない関数です。 宣言で0を割り当てることによって、純粋仮想関数を宣言するだけで済みます。 C ++の抽象クラスには、少なくとも1つの純粋仮想関数があります。

純粋仮想関数の標準構文は次のとおりです。

仮想ボイドabc()= 0; //純粋仮想関数。

チェックアウト:あなたの就職の面接で目立つための15の面接のヒント

  1. クラステンプレートの目的は何ですか?

クラステンプレートは、クラスと関数のファミリを作成するために使用されます。 たとえば、さまざまなタイプ(int、floatなど)を含む配列を作成できる配列クラスのテンプレートを作成できます。 関数のテンプレートを作成することもできます。 したがって、add()関数がある場合は、add()の複数のバージョンを作成できます。

  1. 「オーバーフローエラー」とはどういう意味ですか?

オーバーフローエラーは、数学計算の出力がシステムによって割り当てられた実際のスペースよりも大きい場合に発生する算術エラーです。

  1. deleteとdelete[]はどのように異なりますか?

削除関数は、「new」演算子を使用して割り当てられたメモリの単一ユニットを解放しますが、delete []は、new[]演算子によって割り当てられた割り当て済みメモリの配列を解放します。

  1. C ++でのvTableとvptrの目的は何ですか? コンパイラはそれらをどのように扱いますか?

C ++では、vTableに関数ポインターが含まれています。 一方、vptrはvTableに割り当てられたポインターです。 各クラスにはvTableがありますが、各オブジェクトにはvptrがあります。 C ++コンパイラは、vTableとvptrを効果的に使用および保守するために、2つの場所に追加のコードを追加します。

各コンストラクターで、作成されるオブジェクトのvptrを設定し、クラスのvTableをポイントします。

ポリモーフィック関数呼び出しを持つコード。 コンパイラーは、ポリモーフィック呼び出しが宣言されているすべての場所にコードを挿入して、基本クラスのポインター/参照を使用してvptrを検索します。 vptrが取得されると、派生クラスのvTableにアクセスできます。 vTableを使用して、派生クラス関数show()にアクセスして呼び出すことができます。

  1. C ++では、自動変数はどこに格納されますか?

すべてのローカル変数はデフォルトで自動変数であり、スタックメモリに保存されます。

  1. DLLから関数をエクスポートするにはどうすればよいですか?

DLLから関数をエクスポートする方法は2つあります。

  • DLLのタイプライブラリを使用できます。
  • DLLインスタンスから関数を参照できます。

世界のトップ大学のソフトウェアエンジニアリングコースに登録します。 エグゼクティブPGプログラム、高度な証明書プログラム、または修士プログラムを取得して、キャリアを早急に進めましょう。

結論

これらのC++の質問と回答は、就職の面接で最もよく聞かれる質問の一部です。 いくつかの質問をリストしましたが、これにより、C++インタビューの準備方法についての公正なアイデアが得られるはずです。

フルスタックソフトウェア開発の詳細に興味がある場合は、upGrad&IIIT-Bのフルスタックソフトウェア開発のエグゼクティブPGプログラムをチェックしてください。これは、働く専門家向けに設計されており、500時間以上の厳格なトレーニング、9以上のプロジェクト、および割り当て、IIIT-B卒業生のステータス、実践的な実践的なキャップストーンプロジェクト、トップ企業との仕事の支援。

フルスタック開発者になる

ソフトウェアエンジニアリングの修士号を今すぐ申し込む