50 Fragen und Antworten zum Software-Engineering-Interview

Hier finden Sie Fragen und Antworten zu Vorstellungsgesprächen im Bereich Software Engineering für neue und erfahrene Kandidaten, die ihren Traumjob bekommen möchten.

 

Fragen und Antworten im Vorstellungsgespräch für Softwareentwickler für Erstsemester

1) Was sind die wichtigen Kategorien von Software?

  • System-Software
  • Anwendungssoftware
  • Eingebettete Software
  • Web Applikationen
  • Software für künstliche Intelligenz
  • Wissenschaftliche Software.

👉Kostenloser PDF-Download: Fragen und Antworten zum Software-Engineering-Interview


2) Was ist der Hauptunterschied zwischen einem Computerprogramm und einer Computersoftware?

Ein Computerprogramm ist ein Stück Programmiercode. Es erfüllt eine genau definierte Aufgabe. Andererseits umfasst die Software Programmiercode, Dokumentation und Benutzerhandbuch.


3) Was ist Software-Reengineering?

Es handelt sich um einen Prozess der Softwareentwicklung, der durchgeführt wird, um die Wartbarkeit eines Softwaresystems zu verbessern.

Fragen zur Softwareentwicklung


4) Beschreiben Sie kurz den Softwareentwicklungsprozess:

Die Softwareentwicklung ist ein Lebenszyklus, der aus den folgenden Phasen besteht:

  • Anforderungsanalyse
  • Normen
  • Softwarearchitektur
  • Umsetzung
  • Testen
  • Dokumentation
  • Schulung und Unterstützung
  • Wartung

5) Welche SDLC-Modelle sind verfügbar?

Zu den bekanntesten zählen das Wasserfallmodell, das Spiralmodell, das Big-Bag-Modell, das iterative Modell und das V-Modell SDLC-Modelle.


6) Was ist Verifizierung und Validierung?

Überprüfung:

Unter Verifizierung versteht man eine Reihe von Aktivitäten, die sicherstellen, dass Software eine bestimmte Funktion implementiert.

Validierung:

Es bezieht sich auf die Reihe von Aktivitäten, die sicherstellen, dass Software entsprechend den Bedürfnissen der Kunden erstellt wird.


7) Was bedeutet Debuggen im Softwareentwicklungsprozess?

Debuggen ist der Prozess, der zur Beseitigung von Fehlern führt. Es ist ein sehr wichtiger Teil des erfolgreichen Tests.


8) Wie können Sie sicherstellen, dass Ihr Code sowohl sicher als auch schnell ist?

Bei der Softwareentwicklung steht die Sicherheit immer an erster Stelle. Wenn die Ausführung des Programms also langsam ist, werde ich versuchen, die Ursache für die Zeitkomplexität zu ermitteln.


9) Nennen Sie zwei Tools, die zur Verfolgung der Softwareanforderungen verwendet werden?

Es gibt viele Möglichkeiten, den Überblick über die Anforderungen zu behalten.

Zwei häufig verwendete sind:

  • Erstellen Sie ein Anforderungsspezifikationsdokument, in dem alle Anforderungen aufgeführt sind.
  • Erstellen Sie eine Excel-Tabelle, in der Sie Anforderungen, Typ, Abhängigkeit, Priorität usw. auflisten.

10) Was ist der Hauptunterschied zwischen einem Stub und einem Mock?

Ein Stub ist eine minimale Implementierung einer Schnittstelle, die im Allgemeinen fest codierte Daten zurückgibt, während ein Mock normalerweise die Ausgaben anhand der Erwartungen überprüft. Diese Erwartungen werden im Test festgelegt.


11) In welcher Sprache schreiben Sie am liebsten Programmieralgorithmen?

Jeder Entwickler hat seine eigene Meinung, wenn es um die Wahl der Programmiersprache geht. Allerdings sollte man Hochsprachen bevorzugen, da diese dynamisch sind. Wie C und C++ Sprachen.


12) Was ist Computersoftware?

Computersoftware ist ein Paket, das ein Softwareprogramm, seine Dokumentation und ein Benutzerhandbuch zur Verwendung der Software enthält.


13) Welches SDLC-Modell ist Ihrer Meinung nach das beste?

Eine solche Rangfolge gibt es nicht, da SDLC-Modelle entsprechend den Anforderungen des Entwicklungsprozesses übernommen werden. Es kann von Software zu Software unterschiedlich sein.


14) Wer ist Software-Projektmanager? Was ist seine Rolle?

Ein Softwareprojektmanager ist eine Person, die für die Leitung des Softwareentwicklungsprojekts verantwortlich ist.

Der Projektmanager übernimmt die Projektplanung, überwacht den Fortschritt und kommuniziert. Er oder sie verwaltet außerdem Risiken und Ressourcen, um das Projekt innerhalb der Zeit-, Kosten- und Qualitätsvorgaben abzuwickeln.


15) Was versteht man unter Softwareumfang?

Der Softwareumfang ist eine klar definierte Grenze. Es umfasst alle Arten von Aktivitäten, die zur Entwicklung und Bereitstellung des Softwareprodukts durchgeführt werden.

Der Softwareumfang definiert alle Funktionalitäten und Artefakte, die als Teil der Software bereitgestellt werden sollen. Der Umfang gibt auch an, was das Produkt tun wird. Was ist nicht Teil des Projekts? Was ist eine Projektschätzung?

Dieser Prozess ist hilfreich, um verschiedene Aspekte des Softwareprodukts abzuschätzen. Diese Schätzung kann entweder durch die Beratung von Experten oder durch die Verwendung vordefinierter Formeln erfolgen.


16) Wie finde ich die Größe eines Softwareprodukts?

Die Größe eines Softwareprodukts kann mit den folgenden zwei Methoden berechnet werden:

  • Zählen der Zeilen des gelieferten Codes
  • Zählen gelieferter Funktionspunkte

17) Was sind Funktionspunkte?

Funktionspunkte sind die Funktionen, die das Softwareprodukt bereitstellt. Es gilt als wichtigstes Maß für die Softwaregröße.


18) Welche Techniken zur Schätzung von Softwareprojekten stehen zur Verfügung?

Die am weitesten verbreiteten Schätztechniken sind:

  • Zersetzungstechnik
  • Empirische Technik

19) Was ist Softwarekonfigurationsmanagement?

Beim Softwarekonfigurationsmanagement handelt es sich um einen Prozess zur Verfolgung und Kontrolle von Änderungen, die in der Software auftreten.

Die Änderungskontrolle ist eine Funktion, die sicherstellt, dass alle am Softwaresystem vorgenommenen Änderungen konsistent sind und unter Einhaltung organisatorischer Regeln und Vorschriften erstellt werden.


20) Wie können Sie die Projektausführung messen?

Wir können die Projektausführung mithilfe von Aktivitätsüberwachung, Statusberichten und Meilenstein-Checklisten messen.


21) Erzählen Sie mir von einigen Projektmanagement-Tools.

Es gibt viele Arten von Verwaltungstools, die je nach Bedarf für ein Softwareprojekt verwendet werden. Einige davon sind Pert-Diagramme, Gantt-Diagramme, Ressourcenhistogramme, Statusberichte usw.


22) Was sind Softwareanforderungen?

Softwareanforderungen sind eine funktionale Beschreibung eines vorgeschlagenen Softwaresystems. Es wird davon ausgegangen, dass es sich um die Beschreibung des Zielsystems, seiner Funktionalitäten und Merkmale handelt.


23) Was ist eine Machbarkeitsstudie?

Es ist eine Maßnahme, um herauszufinden, wie praktisch und vorteilhaft sich die Entwicklung eines Softwareprojekts für die Organisation erweisen wird. Der Softwareanalysator führt eine Studie durch, um die wirtschaftliche, technische und betriebliche Durchführbarkeit des Projekts zu ermitteln.

  1. Wirtschaftlich: Dazu gehören die Schulungskosten, die Kosten für Zusatzgeräte und Werkzeuge sowie eine Gesamtschätzung der Kosten und Vorteile des Projekts.
  2. Technik: Es bewertet den technischen Aspekt. Ist es möglich, dieses System zu entwickeln? Beurteilung der Eignung der Maschine(n) und des Betriebssystems, auf denen die Software ausgeführt werden soll, sowie Kenntnisse über die Softwareentwicklung und die für dieses Projekt verfügbaren Tools.
  3. OperaFunktional: Hier muss der Analyst beurteilen, ob die Organisation in der Lage ist, sich reibungslos an die Änderungen anzupassen, die gemäß den Anforderungen des Projekts vorgenommen wurden. Lohnt es sich, das Problem bei den geschätzten Kosten zu lösen?

Nach der Untersuchung all dessen wird der endgültige Machbarkeitsbericht erstellt.


24) Was sind funktionale und nichtfunktionale Anforderungen?

Funktionale Anforderungen sind funktionale Merkmale, die Benutzer von dem vorgeschlagenen Softwareprodukt erwarten.

Nicht funktionale Anforderungen beziehen sich auf Sicherheit, Leistung, Aussehen und Verhalten der Benutzeroberfläche.


25) Was ist eine Softwaremetrik?

Software Metrics bietet Messungen für verschiedene Aspekte des Softwareprozesses, die unterteilt sind in:

  1. Anforderungsmetriken: Längenanforderungen, Vollständigkeit
  2. Produktmetriken: Anzahl der Codierungszeilen, objektorientierte Metriken, Design- und Testmetriken.

26) Was ist Modularisierung?

Modularisierung ist eine Technik, die zur Aufteilung eines Softwaresystems in verschiedene diskrete Module verwendet wird. Es wird erwartet, dass Sie die Aufgaben selbstständig erledigen.


27) Was ist Zusammenhalt?

Kohäsion ist ein Maß, das die Intra-Zuverlässigkeit zwischen den Elementen des Moduls definiert.


28) Erwähnt einige Softwareanalyse- und Designtools?

Zu den wichtigsten Softwareanalyse- und Designtools gehören:

  • Datenflussdiagramme
  • Strukturierte Diagramme
  • Strukturiertes Englisch
  • Datenwörterbuch
  • Hierarchische Eingabe-/Prozessausgabediagramme
  • Entity-Relationship-Diagramme und Entscheidungstabellen

29) Was versteht man unter einem Datenflussdiagramm der Ebene 0?

Die höchste Abstraktionsebene wird als Ebene 0 von DFD bezeichnet. Es wird auch als DFD auf Kontextebene bezeichnet. Es stellt das gesamte Informationssystem als ein Diagramm dar.


30) Was ist der Hauptunterschied zwischen strukturiertem Englisch und Pseudocode?

Strukturiertes Englisch ist die englische Muttersprache. Es wird verwendet, um die Struktur eines Programmmoduls zu schreiben. Es verwendet Schlüsselwörter der Programmiersprache. Andererseits ähnelt Pseudocode eher einer Programmiersprache ohne Syntax einer bestimmten Sprache.


Fragen und Antworten zum Software Engineering Viva für Erfahrene

31) Was ist strukturiertes Design?

Strukturiertes Design ist eine Konzeptualisierung eines Problems. Es wird auch als Lösungsdesign bezeichnet und basiert auf der Strategie „Teile und herrsche“.


32) Was ist funktionale Programmierung?

Es handelt sich um eine Programmiermethode, die die Konzepte einer mathematischen Funktion verwendet. Sie stellt Berechnungsmittel in Form mathematischer Funktionen bereit, die unabhängig vom Programmstatus auch Ergebnisse liefern.


33) Was ist Qualitätssicherung vs. Qualitätskontrolle?

Die Qualitätssicherung prüft, ob bei der Entwicklung der Software ein ordnungsgemäßer Prozess eingehalten wird, während sich die Qualitätskontrolle mit der Aufrechterhaltung der Qualität des Softwareprodukts befasst.


34) Was sind CASE-Tools?

CASE bedeutet Computer Aided Software Engineering. Dabei handelt es sich um eine Reihe automatisierter Softwareanwendungsprogramme, die zur Unterstützung, Verbesserung und Stärkung der SDLC-Aktivitäten eingesetzt werden.


35) Welches Prozessmodell beseitigt Fehler, bevor Software in Schwierigkeiten gerät?

Die Reinraum-Software-Engineering-Methode beseitigt Fehler, bevor Software in Schwierigkeiten gerät.


36) Lösen Sie dieses Problem

In einer Schublade in einem dunklen Raum liegen zwanzig verschiedene Socken zweier Sorten. Wie viele Socken müssen Sie mindestens mitnehmen, um sicherzustellen, dass Sie ein passendes Paar haben?“

Wenn Sie drei Socken in die Hand nehmen, können diese vom gleichen Typ sein, selbst wenn die Wahrscheinlichkeit bei 50 % liegt. Chancen sind nie eine gleichwertige Realität. Daher besteht die einzige Möglichkeit, „sicherzustellen, dass Sie ein passendes Paar haben“, darin, mindestens 11 Schocks aufzunehmen.


37) Wie können Sie sicherstellen, dass Ihr geschriebener Code mit verschiedenen Arten von Fehlersituationen umgehen kann?

Ich kann Tests schreiben, die die erwarteten Fehlersituationen definieren.


38) Erklären Sie die Unterschiede zwischen einem Thread und einem Prozess?

Ein Prozess ist eine Instanz des Computerprogramms. In einem einzelnen Programm ist es möglich, einen oder mehrere Threads zu haben.


39) Erzählen Sie mir den Unterschied zwischen einer EXE-Datei und einer DLL-Datei?

Eine Exe-Datei ist ein ausführbares Programm, während eine DLL eine Datei ist, die von Programmen dynamisch geladen und ausgeführt werden kann. Es handelt sich um ein externes Code-Repository für Programme. Da es sich bei beiden um unterschiedliche Programme handelt, verwenden Sie dieselbe DLL wieder, anstatt diesen Code in ihrer Datei zu haben. Es reduziert auch den benötigten Lagerraum.


40) Was ist starke und schwache Typisierung? Was ist vorzuziehen? Warum?

Bei der starken Typisierung werden die Variablentypen zur Kompilierzeit überprüft. Bei der schwachen Typisierung werden die Typen des Systems zur Laufzeit überprüft. Die starke Typisierung wird dabei immer bevorzugt, da sie die Fehler minimiert.


41) Beschreiben Sie den Unterschied zwischen schnittstellenorientierter, objektorientierter und aspektorientierter Programmierung.

  • Die Schnittstellenprogrammierung erfolgt vertragsbasiert.
  • Objektorientiert ist eine Möglichkeit, granulare Objekte zu schreiben, die einen einzigen Zweck haben.
  • Bei der aspektorientierten Programmierung wird der Code so aufgeteilt, dass verschiedene Objekte die Hauptaufgaben übernehmen und die Nebenaufgaben von unabhängigen Objekten übernommen werden.

42) Warum ist die Verwendung von „catch“ (Ausnahme) immer eine schlechte Idee?

Es ist eine schlechte Idee, weil:

  • Da keine Variable definiert ist, ist es nicht möglich, die Ausnahme auszulesen
  • Es ist sinnvoll, eine Ausnahme zu verwenden, wenn Sie bekannte Ausnahmetypen haben.

43) Welche Art von Daten werden über HTTP-Header übergeben?

Über HTTP-Header übergebene Skript- und Metadaten.


44) Wie priorisieren Sie Anforderungen?

Zunächst müssen Sie ein System entwerfen, indem Sie die Datenstruktur bewerten. Dann sollten Sie mit der Codestruktur fortfahren, die zur Unterstützung erforderlich ist.


45) Nennen Sie mir die Unterschiede zwischen objektorientiertem und komponentenbasiertem Design?

Objektorientiertes Design kann bis zu einem gewissen Grad leicht in komponentenbasiertes Design gekapselt werden.


46) Wann verwendet man Polymorphismus?

Polymorphismus wird verwendet, wenn beim Erben einer Klasse eine Überschreibungsfunktionalität erforderlich ist. Es geht um gemeinsame Klassen und gemeinsame Verträge.


47) Was ist der Unterschied zwischen Stack und Queue?

  • Die Warteschlange lautet immer „First In, First Out“.
  • Beim Stapeln gilt immer „Last In, First Out“.

48) Was ist wichtig, um die Qualität des Codes zu testen?

Meiner Meinung nach ist das Unit-Testing-Framework unerlässlich, um die Qualität des Codes zu testen.


49) Halten Sie die Wartung von Software für teuer?

Meiner Meinung nach wird die Wartung von Software niemals teuer sein, wenn wir den richtigen Entwicklungsprozess verwenden.


50) Nennen Sie mir die Unterschiede zwischen Tags und Branches?

Tags dienen zur Versionierung von Releases, die temporäre Speicherorte für solche Aktionen darstellen. Allerdings werden Zweige gelöscht, wenn diese Änderungen im Stamm zusammengeführt werden.


51) Wo ist eine geschützte Variable auf Klassenebene verfügbar?

Geschützte Variablen auf Klassenebene stehen jeder von der Basisklasse abgeleiteten Unterklasse zur Verfügung.


52) Ist es möglich, mehrere Catch-Blöcke für eine einzelne Try-Anweisung auszuführen?

Ja. Für eine einzelne try-Anweisung können mehrere Catch-Blöcke ausgeführt werden.


53) Wann müssen Sie eine Klasse als abstrakt deklarieren?

In den folgenden Situationen sollten wir eine Klasse als abstrakt deklarieren:

  1. Wenn die Klasse von einer abstrakten Klasse geerbt wird, aber nicht alle abstrakten Methoden überschrieben wurden.
  2. Für den Fall, dass mindestens eine der Methoden in der Klasse als abstrakt deklariert ist.

54) Entwickeln Sie einen Algorithmus, der Ihren aktuellen Standort und eine Liste der Geldautomatenstandorte in diesem Bereich ausgibt. Finden Sie die nächstgelegenen K-Geldautomaten zu Ihrem Standort.

Erstellen Sie eine Methode getDistance(a, b), die den Abstand zwischen a und b berechnet.

Code:

import java.util.HashMap;

import java.util.Map;

import java.util.PriorityQueue;

public class PrioRQueueExample {

public static void main(String[] args){

PriorityQueue<Double> pq = new PriorityQueue<Double>((x,y)-> {Double z = y-x;return z.intValue(); });

PrioRQueueExample pqe = new PrioRQueueExample();

//Number of ATMs to return i.e. K

int num_ATMs = 3;

double curr_loc = 0.00;

Map<String,Double> nallATMLocs = new HashMap<String,Double>();

//Map of ATM names and their distance co-ordinates

nallATMLocs.put("atm1",45.0);

nallATMLocs.put("atm2",78.0);

nallATMLocs.put("atm3",54.0);

nallATMLocs.put("atm4",64.0);

nallATMLocs.put("atm5",35.0);

nallATMLocs.put("atm6",42.0);

nallATMLocs.put("atm7",57.0);

nallATMLocs.put("atm7",1.00);

nallATMLocs.forEach((atm,dist) ->{if(pq.size() < num_ATMs){

pq.add(pqe.getLocation(curr_loc,dist));}

else{

if(        pq.peek() > pqe.getLocation(curr_loc,dist)){

pq.poll();

pq.add(pqe.getLocation(curr_loc,dist));

}

}

});

pq.forEach(atmLoc -> System.out.println(atmLoc));

}

private double getLocation(double curr,double atm){

return atm - curr;

}

}

Diese Interviewfragen helfen auch bei Ihrer mündlichen Prüfung