Top 50 Fragen und Antworten zum Interview mit Software Engineering

Anonim

PDF Herunterladen

1) Was sind die wichtigen Kategorien von Software?

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

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

Ein Computerprogramm ist ein Stück Programmcode. Es führt eine genau definierte Aufgabe aus. Andererseits enthält die Software Programmcode, Dokumentation und Benutzerhandbuch.

3) Was ist Software-Re-Engineering?

Es ist ein 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 sich aus folgenden Phasen zusammensetzt:

  • Anforderungsanalyse
  • Spezifikation
  • Softwarearchitektur
  • Implementierung
  • Testen
  • Dokumentation
  • Schulung und Unterstützung
  • Instandhaltung

5) Welche SDLC-Modelle sind verfügbar?

Wasserfallmodell, Spiralmodell, Big-Bag-Modell, iteratives Modell und V-Modell sind einige der berühmten SDLC-Modelle.

6) Was ist Verifikation und Validierung?

Überprüfung:

Verifikation ist ein Begriff, der sich auf eine Reihe von Aktivitäten bezieht, die sicherstellen, dass Software eine bestimmte Funktion implementiert.

Validierung:

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

7) Was bedeutet Debugging im Softwareentwicklungsprozess?

Das Debuggen ist der Prozess, der zur Beseitigung von Fehlern führt. Dies ist ein sehr wichtiger Teil des erfolgreichen Testens.

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

In der Software steht die Entwicklungssicherheit immer an erster Stelle. Wenn die Ausführung des Programms also langsam ist, werde ich versuchen, den Grund für seine zeitliche Komplexität herauszufinden.

9) Nennen Sie zwei Tools, mit denen Sie die Softwareanforderungen verfolgen können.

Es gibt viele Möglichkeiten, die Anforderungen im Auge zu behalten.

Zwei häufig verwendete sind:

  • Erstellen Sie ein Anforderungsspezifikationsdokument, um alle Anforderungen aufzulisten.
  • Erstellen Sie ein Excel-Blatt mit einer Liste der Anforderungen, des Typs, der Abhängigkeit, der Priorität usw.

10) Was ist der Hauptunterschied zwischen einem Stummel, einem Schein?

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

11) In welcher Sprache schreiben Sie gerne Programmieralgorithmen?

Jeder Entwickler hat seine Ansichten, wenn es um die Auswahl der Programmiersprache geht. Man sollte jedoch Hochsprachen bevorzugen, weil sie dynamisch sind. Wie C- und C ++ - Sprachen.

12) Was ist Computersoftware?

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

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

Es gibt kein solches Ranking, da SDLC-Modelle entsprechend der Notwendigkeit 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 Verwaltung des Softwareentwicklungsprojekts verantwortlich ist.

Der Projektmanager führt die Projektplanung durch, überwacht den Fortschritt und die Kommunikation. Er oder sie verwaltet auch Risiken und Ressourcen, um das Projekt innerhalb von Zeit-, Kosten- und Qualitätsbeschränkungen durchzuführen.

15) Was versteht man unter Softwareumfang?

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

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

Dieser Prozess ist hilfreich, um verschiedene Aspekte des Softwareprodukts abzuschätzen. Diese Schätzung kann entweder durch Beratungsexperten oder unter Verwendung vordefinierter Formeln festgelegt werden.

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

Die Größe des Softwareprodukts kann mit zwei Methoden berechnet werden

  • Zählen der Zeilen des gelieferten Codes
  • Ausgelieferte Funktionspunkte zählen

17) Was sind Funktionspunkte?

Funktionspunkte sind die Merkmale, die vom Softwareprodukt bereitgestellt werden. Es wird als wichtigstes Maß für die Softwaregröße angesehen.

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

Die am häufigsten verwendeten Schätztechniken sind:

  • Zersetzungstechnik
  • Empirische Technik

19) Was ist Softwarekonfigurationsmanagement?

Das Softwarekonfigurationsmanagement ist ein Prozess zum Verfolgen und Steuern von Änderungen, die in der Software auftreten.

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

20) Wie können Sie die Projektdurchfü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-Diagramm, Gantt-Diagramm, Ressourcenhistogramm, Statusberichte usw.

22) Was sind Softwareanforderungen?

Softwareanforderungen sind eine Funktionsbeschreibung eines vorgeschlagenen Softwaresystems. Es wird angenommen, dass es sich um die Beschreibung des Zielsystems, seiner Funktionen und Merkmale handelt.

23) Was ist eine Machbarkeitsstudie?

Es ist eine Maßnahme, um herauszufinden, wie praktisch und vorteilhaft sich die Entwicklung von Softwareprojekten für die Organisation erweisen wird. Der Software-Analysator führt eine Studie durch, um die wirtschaftliche, technische und betriebliche Machbarkeit des Projekts zu ermitteln.

  1. Wirtschaftlich: Es umfasst die Schulungskosten, die Kosten für zusätzliche und Werkzeuge sowie die Gesamtschätzung der Kosten und des Nutzens des Projekts.

  2. Technisch: Es bewertet den technischen Aspekt. Ist es möglich, dieses System zu entwickeln? Beurteilung der Eignung der Maschine (n) und des Betriebssystems, auf dem die Software ausgeführt wird, Kenntnis der Softwareentwicklung und der für dieses Projekt verfügbaren Tools.

  3. Operativ: Hier muss der Analyst beurteilen, ob sich die Organisation reibungslos an die Änderungen anpassen kann, die gemäß der Nachfrage für das Projekt vorgenommen wurden. Lohnt es sich, das Problem zu den geschätzten Kosten zu lösen?

Nach alledem wird der endgültige Machbarkeitsbericht erstellt.

24) Was sind funktionale und nicht funktionale 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 Software-Metrik?

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

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

26) Was ist Modularisierung?

Die Modularisierung ist eine Technik, mit der ein Softwaresystem in verschiedene diskrete Module unterteilt wird. Das soll die Aufgaben selbständig ausführen.

27) Was ist Zusammenhalt?

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

28) Erwähnen Sie einige Software-Analyse- und Design-Tools?

Einige der wichtigsten Tools zur Softwareanalyse und -entwicklung sind:

  • Datenflussdiagramme
  • Strukturierte Diagramme
  • Strukturiertes Englisch
  • Datenwörterbuch
  • Hierarchischer Eingabeprozess Ausgabediagramme
  • Entitätsbeziehungsdiagramme und Entscheidungstabellen

29) Was ist mit Level-0-Datenflussdiagramm gemeint?

Die höchste Abstraktionsebene heißt Ebene 0 von DFD. Es wird auch als DFD auf Kontextebene bezeichnet. Es zeigt das gesamte Informationssystem als ein Diagramm.

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 werden Schlüsselwörter für Programmiersprachen verwendet. Andererseits ähnelt Pseudocode eher der Programmiersprache ohne Syntax einer bestimmten Sprache.

31) Was ist strukturiertes Design?

Strukturiertes Design ist eine Konzeptualisierung von Problemen. Es wird auch als Lösungsdesign bezeichnet und basiert auf der Strategie „Teilen und Erobern“.

32) Was ist funktionale Programmierung?

Es ist eine Programmiermethode, die die Konzepte einer mathematischen Funktion verwendet. Es bietet Berechnungsmöglichkeiten als mathematische Funktionen, die auch unabhängig vom Programmstatus Ergebnisse liefern.

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

Die Qualitätssicherung prüft, ob bei der Entwicklung der Software der richtige 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. Sie bestehen aus automatisierten Softwareanwendungsprogrammen, mit denen die SDLC-Aktivitäten unterstützt, verbessert und gestärkt werden.

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

Die Software-Engineering-Methode für Reinräume beseitigt Fehler, bevor die Software in Schwierigkeiten gerät.

36) Lösen Sie dieses Problem

In einer Schublade in einem dunklen Raum befinden sich zwanzig verschiedene Socken zweier Typen. Was ist die Mindestanzahl an Socken, die Sie nehmen müssen, um sicherzustellen, dass Sie ein passendes Paar haben? "

Wenn Sie drei Socken aufheben, können diese vom gleichen Typ sein, auch wenn die Gewinnchancen 50% betragen. Chancen nie eine gleiche Realität. Daher besteht die einzige Möglichkeit, um sicherzustellen, dass Sie ein passendes Paar haben, darin, mindestens 11 Schocks aufzunehmen.

37) Wie können Sie sicherstellen, dass Ihr geschriebener Code verschiedene Arten von Fehlersituationen behandelt?

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 können ein oder mehrere Threads vorhanden sein.

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

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

40) Was ist starkes und schwaches Tippen? Welches ist bevorzugt? Warum?

Starke Typisierung überprüft die Variablentypen zur Kompilierungszeit. Andererseits überprüft eine schwache Typisierung die Systemtypen zur Laufzeit. Unter diesen wird starkes Tippen immer bevorzugt, da es die Fehler minimiert.

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

  • Die Schnittstellenprogrammierung basiert auf Verträgen.
  • Objektorientiert ist eine Möglichkeit, granulare Objekte zu schreiben, die einen einzigen Zweck haben.
  • Bei der aspektorientierten Programmierung wird der Code so getrennt, dass verschiedene Objekte die Hauptaufgaben und die Nebenaufgaben von unabhängigen Objekten ausgeführt werden.

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

Es ist eine schlechte Idee, weil:

  • Da keine Variable definiert ist, kann die Ausnahme nicht gelesen werden
  • Es ist gut, eine Ausnahme zu verwenden, wenn Sie Ausnahmetypen kennen.

43) Welche Art von Daten wird über HTTP-Header übertragen?

Über HTTP-Header übergebene Skripte und Metadaten.

44) Wie priorisieren Sie Anforderungen?

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

45) Geben Sie mir Unterschiede zwischen objektorientiertem und komponentenbasiertem Design?

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

46) Wann verwenden Sie Polymorphismus?

Polymorphismus wird verwendet, wenn beim Erben von Klassen Überschreibungsfunktionen erforderlich sind. Es geht um gemeinsame Klassen und gemeinsame Verträge.

47) Was ist der Unterschied zwischen Stapel und Warteschlange?

  • Die Warteschlange ist immer First In, First Out
  • Der Stapel ist 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 für das Testen der Qualität des Codes von wesentlicher Bedeutung.

49) Denken Sie, dass die Wartung von Software teuer ist?

Meiner Meinung nach wird die Wartung von Software niemals teuer, wenn wir einen ordnungsgemäßen Entwicklungsprozess verwenden.

50) Gib mir Unterschiede zwischen Tags und Zweigen?

Tags dienen zur Versionierung von Releases, die temporäre Aufbewahrungsorte für solche Aktionen sind. Zweige werden jedoch gelöscht, wenn diese Änderungen in den Trunk übernommen 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?

Wir sollten eine Klasse in den folgenden Situationen als abstrakt deklarieren:

  1. Wenn die Klasse von einer abstrakten Klasse geerbt wird, wurden jedoch nicht alle abstrakten Methoden überschrieben.
  2. In dem Fall, in dem 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. Holen Sie sich 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 pq = new PriorityQueue((x,y)-> {Double z = y-x;return z.intValue(); });PrioRQueueExample pqe = new PrioRQueueExample();//Number of ATMs to return i.e. Kint num_ATMs = 3;double curr_loc = 0.00;Map nallATMLocs = new HashMap();//Map of ATM names and their distance co-ordinatesnallATMLocs.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;}}