50 Fragen und Antworten zum Software-Engineering-Interview
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.
4) Beschreiben Sie kurz den Softwareentwicklungsprozess:
Die Softwareentwicklung ist ein Lebenszyklus, der aus den folgenden Phasen besteht:
- Anforderungsanalyse
- Normen
- Softwarearchitektur
- Umsetzung
- Tests
- 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.
- Wirtschaftlich: Dazu gehรถren die Schulungskosten, die Kosten fรผr Zusatzgerรคte und Werkzeuge sowie eine Gesamtschรคtzung der Kosten und Vorteile des Projekts.
- 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.
- 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:
- Anforderungsmetriken: Lรคngenanforderungen, Vollstรคndigkeit
- 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:
- Wenn die Klasse von einer abstrakten Klasse geerbt wird, aber nicht alle abstrakten Methoden รผberschrieben wurden.
- 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

