Top 30 Interviewfragen und Antworten zu Datenstrukturen und Algorithmen [Für Studienanfänger und Erfahrene]

Veröffentlicht: 2021-08-31

Datenstrukturen und Algorithmen gehören zu den wichtigsten Themen in der Welt der Informatik und Ingenieurwissenschaften. Wenn Sie zu einem Software-Engineering-Interview erscheinen, können Sie sicher sein, dass Sie sich einer Fragerunde stellen, die sich speziell mit Datenstrukturen und Algorithmen befasst – so wichtig sind sie!

Algorithmen bilden den Kern von allem, was in der Informatik und Datenwissenschaft passiert. Von Machine Learning über KI bis hin zu Blockchain – alle Technologien basieren auf Algorithmen. Und Algorithmen brauchen Datenstrukturen, um zu funktionieren. So kann Ihnen das kombinierte Wissen über Datenstrukturen und Algorithmen helfen, sich während Ihres Vorstellungsgesprächs von der Masse abzuheben.

Die Herausforderung besteht jedoch darin, dass DSA ein umfangreicher Bereich ist. Hier hört das Lernen nie auf, und es gibt immer neue Entwicklungen, die Sie verstehen müssen. Während kontinuierliche Weiterbildung im Umgang mit Datenstrukturen und Algorithmen obligatorisch ist, werden wir uns heute einige DSA-Grundlagen ansehen, die Ihnen helfen werden, technische Vorstellungsgespräche zu bestehen.

Inhaltsverzeichnis

Fragen und Antworten zu den wichtigsten Datenstrukturen und Algorithmen im Interview

  1. Was verstehen Sie unter „Datenstrukturen“?

Datenstrukturen können als Techniken definiert werden, die zum systematischen Definieren, Speichern und Zugreifen auf Daten verwendet werden. Sie bilden die wichtigste Komponente eines jeden Algorithmus. Abhängig von der Art der Datenstrukturen speichern sie unterschiedliche Arten von Daten und sind auf unterschiedliche Weise zugänglich. Damit ein Algorithmus ein Ergebnis zurückgibt, muss er eine Reihe von Datenstrukturen auf organisierte und effiziente Weise verarbeiten und manipulieren, um zum Endergebnis zu gelangen.

  1. Wie können Sie zwischen einer Dateistruktur und einer Datenstruktur unterscheiden?

In Dateistrukturen werden die Daten gemäß Standardrichtlinien zur Dateispeicherung auf Datenträgern gespeichert und sind nicht mit externen Anwendungen von Drittanbietern kompatibel. In Data Structures hingegen werden die Daten sowohl auf der Festplatte als auch im RAM in angepassten Speicherrichtlinien gespeichert, und diese sind hochgradig kompatibel mit externen Apps.

  1. Was sind die allgemeinen Arten von Datenstrukturen?

Datenstrukturen können grob in zwei Kategorien unterteilt werden:

  • Linear: Dabei werden alle Elemente sequentiell gespeichert und der Abruf erfolgt linear. Die Anordnung ist nicht hierarchisch, und jedes Element hat einen Nachfolger und einen Vorgänger. Beispiel – Arrays, verknüpfte Listen, Stapel, Warteschlangen usw.
  • Nicht-linear: Hier erfolgt die Speicherung nicht in linearer Reihenfolge – dh alle Elemente haben nicht notwendigerweise nur einen Nachfolger und Vorgänger. Stattdessen werden Elemente in nichtlinearen Datenstrukturen auf nichtlineare Weise mit zwei oder mehr Elementen verbunden. Beispiel – Bäume, Graphen, Haufen.

4. Was sind einige der wichtigsten Anwendungsbereiche von Datenstrukturen?

Datenstrukturen werden so ziemlich in allen Bereichen der Informatik benötigt, die Sie sich vorstellen können, insbesondere Algorithmen und Algorithmusoptimierung. Hier sind einige andere Bereiche, in denen Datenstrukturen ausgiebig verwendet werden:

  • Betriebssystemdesign
  • Numerische Analyse
  • Maschinelles Lernen und KI
  • Compiler-Design und -Entwicklung
  • Datenbankmanagement
  • Lexikalische Analyse
  • Grafische Programmierung
  • Such- und Sortieralgorithmen und mehr.
  1. Erklären Sie die Stack-Datenstruktur und erwähnen Sie ihre Verwendungsbereiche.

Stack ist einfach eine geordnete Liste, die das Einfügen und Löschen nur von einem der Enden erlaubt – das als „oben“ bekannt ist. Es ist eine rekursive Datenstruktur, die einen Zeiger auf ihre "obersten" Elemente hat, der uns über das oberste Element des Stapels informiert. Basierend auf der Strategie zum Abrufen von Elementen ist Stack auch als Last-In-First-Out bekannt, da das letzte Element, das in den Stapel geschoben wird, ganz oben ist und als erstes herausspringt. Hier sind einige Verwendungen der Stack-Datenstruktur:

  • Rückverfolgung
  • Speicherverwaltung
  • Funktionsrückgabe und Aufruf
  • Ausdrucksauswertung
  1. Welche Operationen können auf einem Stapel ausgeführt werden?

Die Stapeldatenstruktur unterstützt die folgenden drei Operationen:

  • push() — um ein Element an der obersten Position des Stapels einzufügen.
  • pop() — um ein Element von der Spitze des Stapels hervorzubringen.
  • peek() – um einfach das Element zu prüfen, das oben auf dem Stack vorhanden ist, ohne es aus dem Stack zu entfernen.
  1. Was verstehen Sie unter Postfix-Ausdrücken?

Postfix-Ausdruck ist ein Ausdruck, bei dem Operatoren auf die Operanden folgen. Dies ist in Bezug auf die Berechnung äußerst vorteilhaft, da es keine Gruppierung von Unterausdrücken in Klammern erfordert oder sogar den Vorrang von Operatoren berücksichtigt. Der Ausdruck a+b wird einfach als ab+ im Postfix dargestellt.

  1. Wie werden 2D-Array-Elemente im Speicher gespeichert?

Die Elemente eines 2-D-Arrays können auf zwei Arten im Speicher gespeichert werden:

  • Row-Major: Bei dieser Methode werden zunächst alle Zeilen des Arrays zusammenhängend im Speicher abgelegt. Zuerst wird die 1. Reihe komplett gespeichert, dann die 2. Reihe und so weiter bis zur letzten.
  • Column-Major: Dabei werden alle Spalten des Arrays fortlaufend im Speicher abgelegt. Zuerst wird die 1. Spalte komplett gespeichert, dann die 2. Spalte und so weiter.
  1. Definieren Sie die Datenstruktur der verknüpften Liste.

Verkettete Listen sind Sammlungen von Knoten – die zufällig gespeicherte Objekte sind. Jeder Knoten hat zwei interne Elemente – ein Datenfeld und ein Link-Feld. Das Datenfeld enthält den Wert, den der bestimmte Knoten hat, während das Link-Feld einen Zeiger auf den nächsten Knoten enthält, mit dem dieser verknüpft ist. Je nach Situation kann eine Linked List sowohl als lineare als auch als nichtlineare Datenstruktur betrachtet werden.

  1. Inwiefern sind verkettete Listen besser als Arrays?

Verkettete Listen sind in folgender Hinsicht besser als Arrays:

  • Array-Größen werden zur Laufzeit festgelegt und können später nicht mehr geändert werden, aber verknüpfte Listen können gemäß den Anforderungen in Echtzeit erweitert werden.
  • Verkettete Listen werden nicht zusammenhängend im Speicher gespeichert, daher sind sie wesentlich speichereffizienter als statisch gespeicherte Arrays.
  • Die Anzahl der Elemente, die in einer verknüpften Liste gespeichert werden können, ist nur auf den verfügbaren Speicherplatz beschränkt, während die Anzahl der Elemente durch die Größe des Arrays begrenzt ist.
  1. Welchen Zeiger würden Sie in der Programmiersprache C verwenden, um eine heterogene verkettete Liste zu implementieren?

Heterogene verknüpfte Listen enthalten, wie der Name schon sagt, unterschiedliche Datentypen. Daher können hier keine gewöhnlichen Pointer verwendet werden. Daher werden in einem solchen Szenario normalerweise Void-Zeiger verwendet, da sie in der Lage sind, auf jede Art von Wert zu zeigen.

  1. Was ist eine doppelt verkettete Liste?

Wie der Name schon sagt, ist eine doppelt verknüpfte Liste eine verknüpfte Liste, deren Knoten sowohl mit den nachfolgenden als auch mit den vorhergehenden Knoten verknüpft sind. Infolgedessen haben die Knoten der doppelt verknüpften Liste drei statt zwei Felder:

  • Das Datenfeld
  • Nächster Zeiger (um auf den nächsten Knoten zu zeigen)
  • Vorheriger Zeiger (zum Zeigen auf den vorherigen Knoten)
  1. Erklären Sie die Warteschlangendatenstruktur mit einigen ihrer Anwendungen.

Eine Warteschlange ist eine geordnete Liste, die das Einfügen und Löschen von Elementen nicht an einem, sondern an zwei Enden – REAR und FRONT genannt – ermöglicht. Das Einfügen erfolgt vom FRONT-Ende, das Löschen vom REAR-Ende. Aus diesem Grund wird die Warteschlange oft als First-In-First-Out (FIFO) bezeichnet. Hier sind einige weit verbreitete Anwendungen von Warteschlangen als Datenstruktur:

  • Für Wartelisten für einzeln gemeinsam genutzte Ressourcen wie CPU, Drucker, Festplatte usw.
  • Für asynchrone Übertragung von Daten, Beispiel File IO, Sockets, Pipes.
  • Als Puffer in den meisten Media-Player-Anwendungen.
  • In Betriebssystemen zur Behandlung von Unterbrechungen.
  1. Können Sie einige Nachteile der Implementierung von Warteschlangen mithilfe von Arrays auflisten?

Es gibt hauptsächlich zwei Nachteile, die bei der Implementierung von Warteschlangen mit Arrays auftreten:

  • Fehlverwaltung des Speichers, da Arrays statische Datenstrukturen sind, sodass die Implementierung von Warteschlangen mit Arrays viele Funktionalitäten von Warteschlangen entfernt.
  • Problem mit der Größe, da Array-Größen während der Array-Definition definiert werden. Wenn wir also mehr Elemente zu unserer Warteschlange hinzufügen möchten, als das Array groß ist, ist dies nicht möglich.
  1. Welche Bedingungen müssen erfüllt sein, damit ein Element in eine zirkuläre Warteschlange eingefügt wird?

Hier sind einige relevante Bedingungen für das Einfügen in kreisförmige Warteschlangen:

  • Wenn (hinten + 1)%maxsize == vorne -> bedeutet dies, dass die Warteschlange voll ist -> kein Einfügen mehr möglich.
  • Wenn hinten != max – 1, wird der Wert von hinten auf maxsize erhöht und ein neuer Wert wird am hinteren Ende eingefügt.
  • Wenn vorne != 0 und hinten == max -1 –> bedeutet dies, dass die Warteschlange nicht voll ist. Der Wert von hinten wird also auf 0 gesetzt, und ein neues Element wird am hinteren Ende der kreisförmigen Warteschlange eingefügt.

16. Was ist eine Warteschlange?

Double-Ended Queue oder Deque ist ein geordneter Satz von Elementen, der das Einfügen und Löschen von beiden Enden erleichtert – hinten und vorne. Dadurch ist diese noch flexibler als die Queue-Datenstruktur.

  1. Definieren Sie die Baumdatenstruktur und führen Sie einige Arten von Bäumen auf.

Baum ist eine nichtlineare, rekursive Datenstruktur, die verschiedene Knoten enthält. Ein bestimmter Knoten wird als Wurzel des Baums bezeichnet, aus dem alle anderen Knoten hervorgehen. Abgesehen von Root werden alle anderen Knoten als untergeordnete Knoten bezeichnet. Es gibt im Großen und Ganzen die folgenden Arten von Baumdatenstrukturen:

  • Allgemeine Bäume
  • Binäre Bäume
  • Binäre Suchbäume
  • Wälder
  • Ausdrucksbaum
  • Turnierbaum
  1. Wie funktioniert Bubble Sort?

Bubble Sort ist einer der am häufigsten verwendeten Sortieralgorithmen und wird mit Arrays verwendet, indem benachbarte Elemente verglichen und ihre Positionen basierend auf ihren Werten ausgetauscht werden. Es wird Blasensortierung genannt, weil die Visualisierung seiner Funktionsweise wie Blasen ist, die von der Wasseroberfläche schweben und größere Einheiten, die nach unten sinken.

Lesen Sie: Datenstrukturen in C & wie zu verwenden?

  1. Welches ist der schnellste verfügbare Sortieralgorithmus?

Es stehen viele verschiedene Sortieralgorithmen zur Verfügung, wie Merge-Sort, Quick-Sort, Bubble-Sort und mehr. Aus diesen können wir keinen bestimmten Algorithmus auswählen, der objektiv der schnellste ist, da seine Leistung stark von den Eingabedaten, der Reaktion nach der Verarbeitung der Daten durch den Algorithmus und der Art der Speicherung abhängt.

  1. Was sind binäre Bäume?

Binäre Bäume sind spezielle Arten von Bäumen, bei denen jeder Knoten HÖCHSTENS zwei Kinder haben kann. Zur Vereinfachung werden Binärbäume im Allgemeinen in drei disjunkte Sätze unterteilt – Wurzelknoten, rechter Teilbaum und linker Teilbaum.

  1. Wie können AVL Trees im Vergleich zu BST in verschiedenen Operationen verwendet werden?

AVL-Bäume sind höhenausgeglichene Bäume, daher können sie nicht zulassen, dass der Baum von einer Seite schief wird. Die Zeit, die für alle Operationen benötigt wird, die auf BST der Höhe h durchgeführt werden, ist O(h). Dies kann jedoch im schlimmsten Fall O(n) werden – wenn BST verzerrt wird. AVL hilft bei der Beseitigung dieser Einschränkung, indem es die Höhe des Baums begrenzt. Dabei wird allen Operationen eine Obergrenze von maximal O(log n) auferlegt, wobei n = Anzahl der Knoten ist.

  1. Welche Eigenschaften hat ein B-Baum?

Ein B-Baum der Ordnung m enthält die folgenden Eigenschaften:

  • Alle Eigenschaften eines M-Wege-Baums.
  • Jeder Knoten des B_Baums wird maximal m Kinder haben.
  • Jeder Knoten außer Wurzel und Blatt wird mindestens m/2 Kinder haben.
  • Der Stammknoten muss mindestens 2 untergeordnete Knoten haben.
  • Alle Blattknoten müssen auf der gleichen horizontalen Ebene liegen.
  1. Was verstehen Sie über die Graph-Datenstruktur?

Die Datenstruktur des Graphen (G) kann als eine geordnete Menge G(V,E) definiert werden, wobei V die Menge der Eckpunkte darstellt und E die Kanten sind, die die Verbindungen bilden. Grundsätzlich kann ein Graph als zyklischer Baum betrachtet werden, in dem Knoten komplexe Beziehungen zwischen ihnen aufrechterhalten können und nicht nur Eltern-Kind-Beziehungen.

  1. Unterscheiden Sie anhand der Graph-Datenstruktur zwischen Zyklus, Pfad und Schaltung.

Die Unterschiede zwischen Zyklus, Weg und Rundkurs sind wie folgt:

  • Ein Patch ist eine Anordnung benachbarter Scheitelpunkte, die ohne Einschränkungen durch Kanten verbunden sind.
  • Ein Zyklus ist ein geschlossener Pfad, bei dem der Anfangsknoten derselbe ist wie der Endknoten. In einem Zyklus kann kein bestimmter Verte zweimal besucht werden.
  • Ein Kreis ist wie ein Zyklus ein geschlossener Pfad, bei dem der Anfangsknoten derselbe ist wie der Endknoten. Jedoch kann jeder bestimmte Scheitelpunkt in einer Schaltung mehr als einmal besucht werden.
  1. Wie funktioniert Kruskals Algorithmus?

Kruskals Algorithmus betrachtet den Graphen als einen Wald und jeden seiner Knoten als einen individuellen Baum. Ein Baum soll sich dann und nur dann mit einem anderen Baum verbinden, wenn er unter allen Optionen die geringsten Kosten hat und keine Eigenschaft eines Minimum Spanning Tree (MST) verletzt.

Verwandte: Binärer Baum in der Datenstruktur

  1. Wie findet der Algorithmus von Prim den Spanning Tree?

Der Algorithmus von Prim betrachtet Knoten als einzelne Bäume. Dann fügt es dem Spannbaum aus dem gegebenen Graphen, der in den erforderlichen Spannbaum umgewandelt werden muss, immer wieder neue Knoten hinzu.

  1. Was ist ein Minimum Spanning Tree (MST)?

MSTs sind in gewichteten Graphen Bäume, die ein minimales Gewicht haben, sich aber über alle Scheitelpunkte erstrecken.

  1. Was ist eine rekursive Funktion?

Per Definition ruft sich eine rekursive Funktion selbst zurück oder ruft direkt eine Funktion auf, die sie aufruft. Jede rekursive Funktion hat einige Basiskriterien, nach denen die Funktion aufhört, sich selbst aufzurufen.

  1. Was ist die Interpolationssuchtechnik?

Das Interpolationssuchverfahren ist eine Modifikation des binären Suchverfahrens. Der Interpolationssuchalgorithmus arbeitet an der Sondierungsposition der gewünschten Werte.

  1. Was ist Hashing?

Hashing ist eine sehr nützliche Technik, die verwendet wird, um eine Reihe von Schlüssel-Wert-Paaren in Indizes eines Arrays umzuwandeln. Hash-Tabellen sind praktisch, wenn Sie einen assoziativen Datenspeicher erstellen, in dem der Datenindex leicht gefunden werden kann, indem Sie einfach sein Schlüssel-Wert-Paar angeben!

Abschließend

Datenstrukturen sind wirklich die Grundlage für alles andere, was in der Informatik passiert. Selbst die komplexeren Anwendungen der Informatik, dh Data Science, maschinelles Lernen, künstliche Intelligenz, IoT, bauen alle auf Datenstrukturen und Algorithmen auf.

Wenn Sie also ein Anfänger sind, der Karriere in einem der New-Age-Bereiche machen möchte, sollten Sie zunächst Datenstrukturen und Algorithmen beherrschen. Oder Sie können sich auch unseren Kurs zum Executive PG Program in Data Science ansehen , der für Anfänger konzipiert ist. Lernen Sie von Grund auf und werden Sie zum Data-Science-Experten. Melden Sie sich noch heute an!

In Vorstellungsgesprächen für welche Jobrolle werden im Allgemeinen Fragen zur Datenstruktur und zum Algorithmus gestellt?

Wenn Sie für eine Softwareentwicklungs- oder Ingenieurrolle sitzen, werden Sie definitiv auf Ihre DSA-Fähigkeiten überprüft. Abgesehen davon wird von Ihnen erwartet, dass Sie sich mit DSA auskennen, wenn Sie sich für Data Science-Jobs bewerben oder in das maschinelle Lernen einsteigen möchten.

Muss ich Programmierkenntnisse haben, um Datenstrukturen und Algorithmen zu verstehen?

Nein, nicht unbedingt. DSA ist größtenteils abstrakt, und es dreht sich alles um die Mathematik und die Darstellungen und den Ablauf dessen, was hinter den Kulissen einer Anwendung oder eines Programms vor sich geht. Während Programmiererfahrung bei der Implementierung von Algorithmen von Vorteil sein wird, ist dies keineswegs eine Voraussetzung für das Studium von DSA.

Sind Datenstrukturen immer statisch?

Nein, Datenstrukturen können sowohl dynamisch als auch statisch sein, je nachdem, wie die Speicherzuweisung für sie funktioniert. Beispielsweise sind Arrays statische Datenstrukturen, da ihnen bei ihrer Definition eine ganze Menge zusammenhängender Speicher zugewiesen wird. Andererseits sind verkettete Listen dynamische Datenstrukturen, da sie keine feste Größe haben und die Anzahl der Knoten je nach den Anforderungen des Programmierers steigen kann.