So bestehen Sie das C++-Vorstellungsgespräch: Top-Fragen von A bis Z

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

So bestehen Sie das C++-Vorstellungsgespräch: Top-Fragen von A bis Z



Ein Vorstellungsgespräch für die Position eines C++-Entwicklers testet nicht nur die Kenntnis der Syntax, sondern auch ein tiefes Verständnis der Compiler-Arbeitsweise, der Speicherverwaltung und der Besonderheiten der objektorientierten Programmierung. In diesem Artikel haben wir die Top-Fragen von A bis Z analysiert, die am häufigsten in Vorstellungsgesprächen gestellt werden. Das Material ist sowohl für Junior-Entwickler als auch für diejenigen nützlich, die sich auf das Middle-Level vorbereiten.



1. Grundlagen der Syntax und Datentypen



Beginnen wir mit der Basis – Fragen, die Ihr Verständnis der grundlegenden Konzepte von C++ überprüfen.



1.1. Was ist der Unterschied zwischen einer Referenz und einem Zeiger?

Dies ist eine klassische Frage. Die Hauptunterschiede:

  • Eine Referenz kann nicht nullptr sein, ein Zeiger schon.
  • Eine Referenz kann nach der Initialisierung nicht an ein anderes Objekt gebunden werden.
  • Ein Zeiger unterstützt Arithmetik, eine Referenz nicht.


int a = 5;int& ref = a;  // Referenzint* ptr = &a; // Zeiger

ref = 10; // a = 10*ptr = 20; // a = 20


1.2. Was ist const und wie verwendet man es richtig?

const wird in C++ verwendet, um Daten vor Änderungen zu schützen. Es ist wichtig, const vor dem Typ und danach zu unterscheiden:

  • const int* ptr – Zeiger auf eine konstante Ganzzahl (der Wert an der Adresse kann nicht geändert werden).
  • int* const ptr – konstanter Zeiger auf eine Ganzzahl (die Adresse kann nicht geändert werden).


2. Objektorientierte Programmierung (OOP)



Fragen zur OOP sind ein obligatorischer Teil des C++-Vorstellungsgesprächs. Lassen Sie uns die wichtigsten Themen durchgehen.



2.1. Virtuelle Funktionen und Polymorphismus

Virtuelle Funktionen ermöglichen späte Bindung (dynamischer Polymorphismus). Beispiel:



class Base {public:    virtual void show() { std::cout << "Base"; }    virtual ~Base() = default;};

class Derived : public Base {public: void show() override { std::cout << "Derived"; }};

int main() { Base* b = new Derived(); b->show(); // Gibt "Derived" aus delete b;}


Es ist wichtig, den virtuellen Destruktor nicht zu vergessen – ohne ihn wird beim Löschen eines Objekts über einen Basisklassenzeiger nur der Destruktor der Basisklasse aufgerufen, was zu einem Speicherleck führt.



2.2. Rein virtuelle Funktionen und abstrakte Klassen

Eine Klasse, die mindestens eine rein virtuelle Funktion (= 0) enthält, wird abstrakt. Von einer solchen Klasse kann keine Instanz erstellt werden – nur ein Erbe mit Implementierung aller rein virtuellen Methoden.



2.3. Was sind vtable und vptr?

Zur Implementierung von Polymorphismus erstellt der Compiler eine virtuelle Tabelle (vtable) für jede Klasse mit virtuellen Funktionen. Jedes Objekt enthält einen versteckten Zeiger (vptr) auf diese Tabelle. Der Aufruf einer virtuellen Funktion erfolgt über einen indirekten Zugriff über den vptr, was einen geringen Overhead verursacht.



3. Speicherverwaltung und intelligente Zeiger



C++ gibt dem Entwickler die vollständige Kontrolle über den Speicher, was besondere Sorgfalt erfordert.



3.1. Unterschied zwischen new/delete und malloc/free

  • malloc reserviert Speicher, ruft aber keinen Konstruktor auf. free gibt Speicher frei, ohne den Destruktor aufzurufen.
  • new reserviert Speicher und ruft den Konstruktor auf. delete ruft den Destruktor auf und gibt den Speicher frei.


3.2. Intelligente Zeiger: unique_ptr, shared_ptr, weak_ptr

Intelligente Zeiger verwalten automatisch die Lebensdauer eines Objekts. Wichtige Punkte:

  • std::unique_ptr – exklusiver Besitz, kann nicht kopiert, nur verschoben werden.
  • std::shared_ptr – geteilter Besitz über einen Referenzzähler.
  • std::weak_ptr – erhöht den Referenzzähler nicht, und

Blogs

Buchempfehlungen