Die 21 meistgelesenen Fragen und Antworten zu C++-Interviews [für Studienanfänger]
Veröffentlicht: 2020-12-17Auch heute noch ist C++ so beliebt wie in den 80er Jahren. Diese universelle, kompilierte Programmiersprache mit mehreren Paradigmen (objektorientiert, prozedural und funktional) spielt eine entscheidende Rolle in der IT-Branche, insbesondere in der Softwareentwicklung.
Entwickler auf der ganzen Welt verwenden C++, um Systemsoftware, Datenbanksoftware, eingebettete Software, Unternehmensanwendungen, GUI-basierte Anwendungen, Compiler, erweiterte Berechnungen und Grafiken, Betriebssysteme, Browser, Spiele, Cloud-Systeme usw. zu erstellen. Natürlich ist C++ immer noch sehr relevant Programmiersprache.
In diesem Beitrag haben wir eine Liste mit 21 C++-Interviewfragen erstellt, die Sie kennen sollten, wenn Sie eine Karriere in der Softwareentwicklung anstreben. Diese Fragen und Antworten zu C++-Interviews helfen Ihnen, das Eis zu diesem Thema zu brechen!
Fragen und Antworten zu C++-Interviews
- Definieren Sie „Klasse“ und „Objekt“.
In C++ ist eine Klasse ein benutzerdefinierter Datentyp, der verschiedene Entitäten, Aktionen und Funktionen widerspiegelt. Eine Klasse enthält die Datenmitglieder zusammen mit ihren Funktionen. Der Zugriff auf diese Datenelemente und Funktionen wird durch drei Modifikatoren definiert – privat, öffentlich und geschützt. Während Klassen einen Datentyp definieren, spezifizieren sie lediglich die Datenstruktur, anstatt die Daten zu definieren.
Ein Objekt ist eine Instanz einer Klasse. Es ist eine Laufzeitentität, die eine Person, einen Ort oder eine Sache darstellen kann.
Objekte arbeiten mit Datenmembern und Memberfunktionen. Es enthält Felder, Methoden und Konstruktoren. Während beispielsweise ein Auto ein Objekt ist, sind seine verschiedenen Merkmale wie Räder, Design, Farbe, Halterungen usw. Instanzen seiner Klasse.

- Was ist ein „Zugriffsspezifizierer“?
Ein Zugriffsbezeichner bestimmt, wie auf die Member einer Klasse (Funktionen und Variablen) außerhalb des Gültigkeitsbereichs der Klasse zugegriffen werden kann. C++ hat drei Arten von Zugriffsbezeichnern
- Private – Ein privater Bezeichner bedeutet, dass auf die Klassenmember nur innerhalb derselben Klasse zugegriffen werden kann, in der sie deklariert sind. In diesem Fall können untergeordnete Klassen nicht auf private Elemente der übergeordneten Klasse zugreifen.
- Geschützt – Ein geschützter Bezeichner ermöglicht untergeordneten Klassen den Zugriff auf die geschützten Datenelemente der übergeordneten Klasse.
- Öffentlich – Auf die als „öffentlich“ deklarierten Klassenmitglieder kann im gesamten C++-Code zugegriffen werden.
- Was ist ein veränderlicher Speicherklassenbezeichner?
Ein änderbarer Speicherklassenbezeichner gilt nur für die nichtstatischen und nichtkonstanten Mitgliedsvariablen einer Klasse, um das Mitglied des konstanten Klassenobjekts zu ändern, indem es deklariert wird.
- Was ist Kapselung?
Kapselung bezieht sich auf das Verpacken oder Binden von Datenelementen und deren Funktionen innerhalb einer Klasse. Dieser Vorgang erfolgt aus Sicherheitsgründen, da er den Zugriff von außen einschränkt. Wenn der Datenmember privat ist, kann nur seine Memberfunktion auf die Daten zugreifen.
- Was ist Abstraktion?
Abstraktion ist ein Prozess, bei dem interne Implementierungen ausgeblendet und nur die wesentlichen Details angezeigt werden. Der Zugriff auf Datenelemente und Funktionen hängt vom verwendeten Modifikator ab. Wenn also ein öffentliches Schlüsselwort verwendet wird, um die Mitglieder zu definieren, kann jeder auf sie zugreifen. Wenn jedoch ein privates Schlüsselwort die Mitglieder definiert, können Sie nicht über externe Methoden darauf zugreifen.
- Was ist ein Namensraum?
Ein Namensraum erleichtert die logische Aufteilung eines Codes. Es wird in C++-Programmen verwendet, um den Namenskonflikt von Bezeichnern zu verhindern/aufzulösen, indem ihnen unterschiedliche Namensräume zugewiesen werden. Ein Namensraum definiert den Geltungsbereich, in dem ein Bezeichner (Variablen, Klasse und Funktionen) deklariert wird. Daher besteht das Hauptziel der Verwendung eines Namensraums darin, Mehrdeutigkeiten aus dem Code zu eliminieren.
- Definiere „Polymorphismus“. Wie viele Arten von Polymorphismen gibt es in C++?
Wörtlich bedeutet Polymorphismus das Vorhandensein mehrerer Formen. In C++ tritt Polymorphismus auf, wenn mehr als eine Funktion unter demselben Namen, aber mit unterschiedlichen Funktionalitäten existiert.
Es gibt zwei Arten von Polymorphismus:
- Dynamischer Polymorphismus, in C++ auch „Überschreiben“ genannt, hilft Ihnen zu bestimmen, welche Funktionsmethode zur Laufzeit statt zur Kompilierzeit ausgeführt werden muss. Das Überschreiben von Funktionen ist ein hervorragendes Beispiel für dynamischen Polymorphismus. Beim Überschreiben von Funktionen enthält die untergeordnete Klasse die Methode, die bereits in der übergeordneten Klasse vorhanden ist. Folglich überschreibt die untergeordnete Klasse die Methode der übergeordneten Klasse. In diesem Fall haben sowohl die übergeordnete als auch die untergeordnete Klasse dieselbe Funktion mit unterschiedlichen Definitionen.
- Statischer Polymorphismus wird zum Zeitpunkt der Codekompilierung implementiert (daher auch als Kompilierzeit-Polymorphismus bekannt). Das Überladen von Methoden ist ein perfektes Beispiel für statischen Polymorphismus. Das Überladen von Methoden ermöglicht das Vorhandensein von mehr als einer Funktion mit demselben Namen, aber unterschiedlichen Funktionalitäten.
- Erklären Sie den Zweck des Schlüsselworts „Volatile“.
Die Funktion „flüchtig“ wird verwendet, um zu erklären, dass eine bestimmte Variable flüchtig ist. Dies weist den Compiler an, die Variable extern zu ändern, wodurch eine Compiler-Optimierung der Variablenreferenz vermieden wird.
Lesen Sie: Fragen und Antworten zu Java-Interviews
- Was ist eine Inline-Funktion?
Jede Funktion mit dem Schlüsselwort „inline“ als Präfix vor der Funktionsdefinition ist eine Inline-Funktion. Sie werden hauptsächlich verwendet, um den Funktionsaufruf-Overhead zu reduzieren. Wenn eine Inline-Funktion aufgerufen wird, wird der gesamte Code an der bestimmten Stelle des Inline-Funktionsaufrufs entweder eingefügt oder ersetzt. Da der Compiler Inline-Funktionen als Makros behandelt, werden sie viel schneller ausgeführt. Daher trägt das Deklarieren kleiner Inline-Funktionen dazu bei, die Effizienz des Codes zu steigern.

Die Standard-Syntax einer Inline-Funktion lautet:
Inline-Rückgabetyp Funktionsname (Parameter)
{
// Hier kommt der Funktionscode
}
- Was ist „dieser“ Zeiger?
In C++ ist „this“-Zeiger ein konstanter Zeiger, der die Speicheradresse des aktuellen Objekts enthält. Es wird als verstecktes Argument an alle nicht statischen Member-Funktionsaufrufe übergeben. Außerdem existiert dieser Zeiger als lokale Variable im Hauptteil aller nicht statischen Funktionen.
Lesen Sie : Fragen und Antworten zu SQL-Interviews
- Hat C++ einen einfachen String-Datentyp?
C++ kann keinen einfachen String-Datentyp haben, sondern eine Klasse aus der Standard Template Library (STL).
- Welche Funktion hat der Bereichsauflösungsoperator?
Der Bereichsauflösungsoperator dient zwei Zwecken:
- Es hilft, den Bereich globaler Variablen aufzulösen.
- Wenn eine Funktion außerhalb einer Klasse definiert wird, ordnet der Bereichsauflösungsoperator diese Funktion der Klasse zu.
- Was ist ein Destruktor?
Die Member-Funktion einer Klasse wird als Destruktor bezeichnet. Der Name ist derselbe wie der Klassenname, jedoch mit einem Tilde-Symbol (~) als Präfix. Immer wenn ein Objekt seinen Gültigkeitsbereich verliert, werden Destruktoren automatisch ausgeführt.
- Erklären Sie den Unterschied zwischen Schlüsselwortklasse und Schlüsselwortstruktur.
Das Schlüsselwort class stellt standardmäßig private Mitglieder dar, während das Schlüsselwort struct standardmäßig öffentlichen Mitgliedern ähnelt.
- Definieren Sie eine rein virtuelle Funktion.
Eine rein virtuelle Funktion ist eine, die keine Definition enthält. Sie müssen nur die reine virtuelle Funktion deklarieren, indem Sie in der Deklaration 0 zuweisen. Abstrakte Klassen in C++ haben mindestens eine rein virtuelle Funktion.
Die Standard-Syntax einer rein virtuellen Funktion lautet:
virtuelle Leere abc () = 0; //reine virtuelle Funktion.
Schauen Sie sich an: 15 Interview-Tipps, um sich in Ihrem Vorstellungsgespräch abzuheben
- Was ist der Zweck einer Klassenvorlage?
Eine Klassenvorlage wird zum Erstellen einer Familie von Klassen und Funktionen verwendet. Beispielsweise können Sie eine Vorlage einer Array-Klasse erstellen, mit der Sie ein Array mit verschiedenen Typen (int, float usw.) erstellen können. Sie können auch eine Vorlage für eine Funktion erstellen. Wenn es also eine add()-Funktion gibt, können Sie mehrere Versionen von add() erstellen.
- Was bedeutet „Überlauffehler“?
Ein Überlauffehler ist ein arithmetischer Fehler, der auftritt, wenn die Ausgabe einer mathematischen Berechnung größer ist als der tatsächlich vom System zugewiesene Speicherplatz.
- Wie unterscheiden sich delete und delete[ ]?
Die delete-Funktion gibt eine einzelne Speichereinheit frei, die mit dem „new“-Operator zugewiesen wurde, während delete[ ] das Array des zugewiesenen Speichers freigibt, das mit dem new[ ]-Operator zugewiesen wurde.
- Was ist der Zweck von vTable und vptr in C++? Wie behandelt der Compiler sie?
In C++ enthält eine vTable Funktionszeiger. Andererseits ist vptr ein der vTable zugewiesener Zeiger. Während jede Klasse eine vTable hat, hat jedes Objekt einen vptr. Der C++-Compiler fügt an zwei Stellen zusätzlichen Code hinzu, um vTable und vptr effektiv zu verwenden und zu warten:
In jedem Konstruktor, um den vptr des zu erstellenden Objekts festzulegen und auf die vTable einer Klasse zu zeigen.
Im Code mit einem polymorphen Funktionsaufruf. Der Compiler fügt den Code an jeder Stelle ein, an der ein polymorpher Aufruf deklariert ist, um unter Verwendung des Basisklassenzeigers/der Referenz nach dem vptr zu suchen. Sobald der vptr abgerufen wurde, können Sie auf die vTable der abgeleiteten Klasse zugreifen. Sie können die vTable verwenden, um auf die abgeleitete Klassenfunktion show() zuzugreifen und sie aufzurufen.

- Wo wird in C++ eine automatische Variable gespeichert?
Alle lokalen Variablen sind standardmäßig Auto-Variablen und werden im Stack-Speicher abgelegt.
- Wie kann man eine Funktion aus einer DLL exportieren?
Es gibt zwei Möglichkeiten, eine Funktion aus einer DLL zu exportieren:
- Sie können die Typbibliothek von DLL verwenden.
- Sie können auf die Funktion aus der DLL-Instanz verweisen.
Melden Sie sich für Software Engineering-Kurse an den besten Universitäten der Welt an. Verdienen Sie Executive PG-Programme, Advanced Certificate-Programme oder Master-Programme, um Ihre Karriere zu beschleunigen.
Fazit
Diese Fragen und Antworten zu C++ gehören zu den am häufigsten gestellten Fragen in Vorstellungsgesprächen. Obwohl wir nur ein paar Fragen aufgelistet haben, sollte Ihnen dies eine ungefähre Vorstellung davon geben, wie Sie sich auf ein C++-Interview vorbereiten können.
Wenn Sie mehr über Full-Stack-Softwareentwicklung erfahren möchten, schauen Sie sich das Executive PG-Programm in Full-Stack-Softwareentwicklung von upGrad & IIIT-B an, das für Berufstätige konzipiert ist und mehr als 500 Stunden strenge Schulungen, mehr als 9 Projekte und mehr bietet Aufgaben, IIIT-B-Alumni-Status, praktische praktische Schlusssteinprojekte und Arbeitsunterstützung bei Top-Unternehmen.
