sdet interview questions
Lesen Sie diesen vollständigen Leitfaden für Software Development Engineer in Testinterviews, um das Format und die Beantwortung der in den verschiedenen Runden gestellten SDET-Interviewfragen zu erfahren:
In diesem Tutorial lernen wir einige häufig gestellte Interviewfragen für die SDET-Rollen kennen. Wir werden auch im Allgemeinen das gemeinsame Muster der Interviews sehen und einige Tipps geben, um in den Interviews herausragende Leistungen zu erbringen.
Wir werden die Java-Sprache für die Codierungsprobleme in diesem Lernprogramm verwenden. Die meisten SDET-Lernprogramme sind jedoch sprachunabhängig und die Interviewer sind im Allgemeinen flexibel in Bezug auf die Sprache, die der Kandidat verwenden möchte.
Was du lernen wirst:
SDET Interview Preparation Guide
SDET-Interviews sind in den meisten Top-Produktunternehmen der Art und Weise, wie Interviews für Entwicklungsrollen durchgeführt werden, ziemlich ähnlich. Dies liegt daran, dass von SDETs erwartet wird, dass sie fast alles wissen und verstehen, was der Entwickler weiß.
Was sich unterscheidet, sind die Kriterien, nach denen der SDET-Befragte beurteilt wird. Interviewer für diese Rolle suchen nach Fähigkeiten zum kritischen Denken sowie danach, ob die interviewte Person praktische Erfahrung im Codieren hat und ein Auge für Qualität und Details hat.
Hier sind einige Punkte, auf die sich jemand, der sich auf ein SDET-Interview vorbereitet, weitgehend konzentrieren sollte:
Java 8 neue Funktionen Interview Fragen
- Da diese Interviews meistens technologie- / sprachunabhängig sind, müssen die Kandidaten bereit sein, bei Bedarf neue Technologien zu erlernen (und vorhandene Fähigkeiten zu nutzen).
- Sollte heutzutage über gute Kommunikations- und Teamfähigkeiten verfügen, da SDET-Rollen Kommunikation und Zusammenarbeit auf verschiedenen Ebenen mit mehreren Stakeholdern erfordern.
- Sollte ein grundlegendes Verständnis für verschiedene Systemdesignkonzepte, Skalierbarkeit, Parallelität, nicht funktionale Anforderungen usw. haben.
In den folgenden Abschnitten werden wir versuchen, das allgemeine Format des Interviews zusammen mit einigen Beispielfragen zu verstehen.
Format des Softwareentwicklungsingenieurs im Testinterview
Die meisten Unternehmen haben ihr bevorzugtes Format für die Befragung von Kandidaten für eine SDET-Rolle, da die Rolle manchmal sehr spezifisch für ein Team ist und von der Person erwartet wird, dass sie perfekt zu dem Team passt, für das die Person eingestellt wird.
Das Thema der Interviews basiert jedoch im Allgemeinen auf den folgenden Punkten:
- Telefonische Diskussion: Gespräch mit dem Manager und / oder den Teammitgliedern, in der Regel eine Screening-Runde.
- Geschriebene Runde: Mit Test / Testgehäuse spezifische Fragen.
- Codierungskompetenzrunde: Einfache Codierungsfragen (sprachunabhängig) und der Kandidat wird gebeten, Code auf Produktionsebene zu schreiben.
- Grundlegende Entwicklungskonzepte verstehen: Wie OOPS-Konzepte, feste Prinzipien usw.
- Design und Entwicklung des Test Automation Framework
- Skriptsprachen: Selen, Python, Javascript usw.
- Culture Fit / HR Diskussion und Verhandlungen
Fragen und Antworten zum SDET-Interview
In diesem Abschnitt werden einige Beispielfragen zusammen mit detaillierten Antworten für verschiedene Kategorien erörtert, die von den meisten Produktunternehmen gestellt werden, die SDET-Rollen einstellen.
Codierungskenntnisse
In dieser Runde werden einfache Codierungsprobleme angegeben, um in der Sprache der Wahl zu schreiben. Hier möchte der Interviewer die Kompetenz mit Codierungskonstrukten messen sowie Dinge wie Kantenszenarien und Nullprüfungen usw. behandeln.
Gelegentlich können Interviewer auch darum bitten, Unit-Tests für das geschriebene Programm aufzuschreiben.
Sehen wir uns einige Beispielprobleme an.
F # 1) Schreiben Sie ein Programm, um 2 Zahlen auszutauschen, ohne die 3. (temporäre) Variable zu verwenden?
Antworten ::
Programm zum Tauschen von zwei Zahlen:
public class SwapNos { public static void main(String() args) { System.out.println('Calling swap function with inputs 2 & 3'); swap(2,3); System.out.println('Calling swap function with inputs -3 & 5'); swap(-3,5); } private static void swap(int x, int y) { System.out.println('values before swap:' + x + ' and ' + y); // swap logic x = x + y; y = x - y; x = x - y; System.out.println('values after swap:' + x + ' and ' + y); } }
Hier ist die Ausgabe des obigen Code-Snippets:
Im obigen Code-Snippet ist zu beachten, dass der Interviewer ausdrücklich darum gebeten hat, 2 Nr. Zu tauschen, ohne eine dritte temporäre Variable zu verwenden. Außerdem ist es wichtig, dass vor dem Einreichen der Lösung immer empfohlen wird, den Code für mindestens 2-3 Eingaben durchzugehen (oder zu testen). Versuchen wir es mit positiven und negativen Werten.
Positive Werte: X = 2, Y = 3
// swap logic - x=2, y=3 x = x + y; => x=5 y = x - y; => y=2 x = x - y; => x=3 x & y swapped (x=3, y=2)
Negative Werte: X = -3, Y = 5
// swap logic - x=-3, y=5 x = x + y; => x=2 y = x - y; => y=-3 x = x - y; => x=5 x & y swapped (x=5 & y=-3)
F # 2) Schreiben Sie ein Programm, um eine Zahl umzukehren?
Antworten: Jetzt mag die Problemstellung zunächst einschüchternd aussehen, aber es ist immer ratsam, dem Interviewer Fragen zu stellen (aber nicht viele Details). Interviewer können wählen, ob sie Hinweise auf das Problem geben möchten. Wenn der Kandidat jedoch viele Fragen stellt, weist dies auch darauf hin, dass der Kandidat nicht genügend Zeit gibt, um das Problem gut zu verstehen.
Hier erwartet das Problem, dass ein Kandidat auch einige Annahmen trifft - zum Beispiel, Die Zahl könnte eine ganze Zahl sein. Wenn der Eingang 345 ist, sollte der Ausgang 543 sein (was umgekehrt zu 345 ist).
Sehen wir uns das Code-Snippet für diese Lösung an:
public class ReverseNumber { public static void main(String() args) { int num = 10025; System.out.println('Input - ' + num + ' Output:' + reverseNo(num)); } public static int reverseNo(int number) { int reversed = 0; while(number != 0) { int digit = number % 10; reversed = reversed * 10 + digit; number /= 10; } return reversed; } }
Ausgabe für dieses Programm gegen Eingabe : 10025 - Erwartet wäre : 52001
F # 3) Schreiben Sie ein Programm, um die Fakultät einer Zahl zu berechnen?
Antworten: Factorial ist eine der am häufigsten gestellten Fragen in fast allen Interviews (einschließlich der Entwicklerinterviews).
Bei Entwicklerinterviews liegt der Schwerpunkt mehr auf Programmierkonzepten wie dynamischer Programmierung, Rekursion usw., während es aus Sicht des Software Development Engineer in Test wichtig ist, die Kanten-Szenarien wie Max-Werte, Min-Werte, negative Werte usw. und Ansatz / Effizienz zu behandeln sind wichtig, werden aber zweitrangig.
Sehen wir uns ein Programm für Fakultät mit Rekursion und for-Schleife an, das negative Zahlen behandelt und einen festen Wert von beispielsweise -9999 für negative Zahlen zurückgibt, der in dem Programm behandelt werden soll, das die Fakultätsfunktion aufruft.
Bitte beziehen Sie sich auf das Code-Snippet unten:
public class Factorial { public static void main(String() args) { System.out.println('Factorial of 5 using loop is:' + factorialWithLoop(5)); System.out.println('Factorial of 10 using recursion is:' + factorialWithRecursion(10)); System.out.println('Factorial of negative number -100 is:' + factorialWithLoop(-100)); } public static long factorialWithLoop(int n) { if(n <0) { System.out.println('Negative nos can't have factorial'); return -9999; } long fact = 1; for (int i = 2; i <= n; i++) { fact = fact * i; } return fact; } public static long factorialWithRecursion(int n) { if(n < 0) { System.out.println('Negative nos can't have factorial'); return -9999; } if (n <= 2) { return n; } return n * factorialWithRecursion(n - 1); } }
Sehen wir uns die Ausgabe für - Fakultät unter Verwendung der Schleife, Fakultät unter Verwendung der Rekursion und Fakultät einer negativen Zahl an (die einen voreingestellten Standardwert von -9999 zurückgeben würde).
F # 4) Schreiben Sie ein Programm, um zu überprüfen, ob eine bestimmte Zeichenfolge ausgeglichene Klammern hat?
Antworten:
Ansatz - Dies ist ein etwas komplexes Problem, bei dem der Interviewer etwas mehr als nur das Wissen über das Codieren von Konstrukten betrachtet. Hier besteht die Erwartung darin, die passende Datenstruktur für das vorliegende Problem zu denken und zu verwenden.
Viele von Ihnen fühlen sich möglicherweise von solchen Problemen eingeschüchtert, da einige von Ihnen diese möglicherweise nicht gehört haben. Selbst wenn sie einfach sind, klingen sie daher möglicherweise komplex.
Aber generell für solche Probleme / Fragen: Zum Beispiel Wenn Sie in der aktuellen Frage nicht wissen, was ausgewogene Klammern sind, können Sie den Interviewer sehr gut fragen und dann auf die Lösung hinarbeiten, anstatt einen blinden Fleck zu treffen.
Mal sehen, wie man sich einer Lösung nähert: Nachdem Sie verstanden haben, was ausgewogene Klammern sind, können Sie über die Verwendung der richtigen Datenstruktur nachdenken und dann Algorithmen (Schritte) schreiben, bevor Sie mit dem Codieren der Lösung beginnen. Oft lösen die Algorithmen selbst viele Rand-Szenarien und geben viel Klarheit darüber, wie die Lösung aussehen wird.
Schauen wir uns die Lösung an:
Ausgewogene Klammern sollen nach einer bestimmten Zeichenfolge suchen, die Klammern (oder Klammern) enthält, die gleiche Öffnungs- und Schließzahl sowie eine gut strukturierte Position aufweist. Für den Kontext dieses Problems verwenden wir ausgeglichene Klammern wie - '()', '()', '{}' - d. H. Die angegebene Zeichenfolge kann eine beliebige Kombination dieser Klammern enthalten.
Bitte beachten Sie, dass Sie vor dem Versuch des Problems klären sollten, ob die Zeichenfolge nur die Klammerzeichen oder Zahlen usw. enthält (da dies die Logik etwas ändern kann).
Beispiel: Eine gegebene Zeichenfolge - '{() {} ()} - ist eine ausgeglichene Zeichenfolge, da sie strukturiert ist und keine schließenden und öffnenden Klammern enthält, sondern eine Zeichenfolge -' {(}) {} () '- diese Zeichenfolge - obwohl hat gleich viele öffnende und schließende Klammern, dies ist immer noch nicht ausgeglichen, da Sie sehen können, dass ohne ein schließendes '(' wir haben geschlossen '}' (dh alle inneren Klammern sollten geschlossen sein, bevor eine äußere Klammer geschlossen wird)
Wir werden eine Stapeldatenstruktur verwenden, um dieses Problem zu lösen. Wenn Sie mehr über die Grundlagen des Stapels erfahren möchten, lesen Sie bitte Hier
Ein Stapel ist eine LIFO-Datenstruktur (Last In First Out). Stellen Sie sich ihn als Stapel / Stapel von Tellern bei einer Hochzeit vor. Sie nehmen den obersten Teller auf, wenn Sie ihn verwenden.
Algorithmus:
# 1) Deklarieren Sie einen Zeichenstapel (der die Zeichen in der Zeichenfolge enthält und je nach Logik die Zeichen herausdrückt und herausspringt).
# 2) Durchlaufen Sie die Eingabezeichenfolge und wann immer
- Es gibt ein Zeichen in einer öffnenden Klammer - d. H. '(', {'Oder' (') - drücken Sie das Zeichen auf den Stapel.
- Es gibt ein schließendes Zeichen - dh ')', '}', ')' - Pop ein Element aus Stack und prüfen Sie, ob es mit dem Gegenteil des schließenden Zeichens übereinstimmt - dh wenn das Zeichen '}' ist, sollten Sie bei Stack Pop erwarten ' {'
- Wenn das geknallte Element nicht mit den schließenden Klammern übereinstimmt, ist die Zeichenfolge nicht ausgeglichen und Sie können Ergebnisse zurückgeben.
- Andernfalls fahren Sie mit dem Stack-Push- und Pop-Ansatz fort (fahren Sie mit Schritt 2 fort).
- Wenn die Zeichenfolge vollständig durchlaufen wird und die Stapelgröße ebenfalls Null ist, können wir sagen / schließen, dass die angegebene Zeichenfolge eine Zeichenfolge in ausgeglichenen Klammern ist.
An dieser Stelle möchten Sie möglicherweise auch den Lösungsansatz diskutieren, den Sie als Algorithmus haben, und sicherstellen, dass der Interviewer mit dem Ansatz einverstanden ist.
Code:
import java.util.Stack; public class BalancedParanthesis { public static void main(String() args) { final String input1 = '{()}'; System.out.println('Checking balanced paranthesis for input:' + input1); if (isBalanced(input1)) { System.out.println('Given String is balanced'); } else { System.out.println('Given String is not balanced'); } } /** * function to check if a string has balanced parentheses or not * @param input_string the input string * @return if the string has balanced parentheses or not */ private static boolean isBalanced(String input_string) { Stack stack = new Stack(); for (int i = 0; i Die Ausgabe des obigen Code-Snippets:

Wie bei unseren vorherigen Codierungsproblemen ist es immer gut, den Code mit mindestens 1-2 gültigen sowie 1-2 ungültigen Eingaben trocken auszuführen und sicherzustellen, dass alle Fälle angemessen behandelt werden.
HINWEIS: Es ist immer gut, die Lösung laut (und nicht nur im Kopf) zu überlegen - und überraschenderweise ist dies eine wichtige Eigenschaft, nach der Interviewer suchen. Viele Interviewer könnten einfach den Algorithmus abschaffen und zur nächsten Problemstellung übergehen.
In der obigen Codierungslösung könnte der Interviewer für das Entwicklerinterview darum bitten, es mithilfe von Arrays zu lösen, anstatt direkt zu stapeln (dh Array als Stapel zu verwenden). Im Allgemeinen geht es jedoch eher darum, konzeptionell klar zu sein und alle gültigen und zu verarbeiten ungültige Eingaben.
Test Automation Framework im Zusammenhang
Dieser Abschnitt des Interviews befasst sich genauer mit Test- und SDET-Verantwortlichkeiten. Erwarten Sie Fragen zum Design und zur Entwicklung von Automatisierungsframeworks, Vor- und Nachteile der Verwendung unterschiedlicher Ansätze usw.
Sehen wir uns einige Beispielfragen und Lösungen dafür an.
F # 5) Erklären und entwerfen Sie Komponenten des Automatisierungsframeworks für eine Webanwendung?
Antworten: Diese Frage ist ein wenig subjektiv, und der Interviewer möchte beurteilen, wie viel der Kandidat über das Framework-Design und die Entwicklung weiß. Die Antwort auf diese Frage hilft dem Interviewer zu verstehen, ob der Kandidat benutzerdefinierte Frameworks von Grund auf neu erstellen oder erstellen kann.
Sehen wir uns einige Punkte an, die Ihnen helfen würden, die Lösung für diese Frage zu strukturieren:
- Sie können über verschiedene Arten von Frameworks sprechen, z. B. Datengesteuertes, schlüsselwortgesteuertes Hybrid-Framework.
- Seitenobjektmodell zum Speichern von Details verschiedener Elemente auf verschiedenen Seiten / Modulen der Webanwendung.
- Allgemeine Module wie Hilfsfunktionen, Dienstprogramme, Logger usw.
- Berichtsmodule wie das Generieren von Berichten über die Testausführung, das Integrieren von Berichten in E-Mails und das Planen der Testausführung usw.
Empfohlene Lektüre => Die beliebtesten Testautomatisierungs-Frameworks
F # 6) Erklären Sie Teststrategien für eine mobile Anwendung?
Antworten: Diese Fragen werden normalerweise je nach Rolle gestellt. Wenn die Rolle hauptsächlich darin besteht, an mobilen Apps zu arbeiten, ist die Frage relevanter. Sie können aus Ihrer Erfahrung sprechen, wenn Sie mobile Tests als Teil Ihrer aktuellen oder vorherigen Rollen geplant haben.
Einige Hinweise zur Strukturierung der Antwort auf diese Frage könnten sein:
- Testen auf Geräten gegen Emulatoren.
- Objekte / Elemente auf verschiedenen Bildschirmen identifizieren und speichern - Beispiel: Seitenobjektmodell.
- Lasttest einer mobilen Anwendung.
- Sie können über verschiedene Arten von mobilen Anwendungen wie native Apps und Hybrid-Apps sprechen und Strategien / Ansätze diskutieren, mit denen Sie sie testen würden.
Empfohlene Lektüre => Tutorials zum Testen mobiler Apps
F # 7) Entwerfen Sie ein Automatisierungsframework zum Testen von REST-APIs?
Antworten: Dies ist wiederum eine subjektive Frage, und Sie können klärende Fragen stellen, ob der Interviewer möchte, dass Sie ein Framework zum Testen des Funktionsverhaltens von API oder nicht-funktionale Anforderungen wie Last- / Leistungstests entwickeln.
Sie können Ihre Antwort mit den folgenden Punkten beginnen:
- API-Automatisierungs-Framework-Komponenten wie lokales Setup, Mock-Setup der API oder Hosted API Testing.
- Für die API-Automatisierung verwendete Tools. Es stehen sofort verschiedene Tools zur Verfügung, um die funktionalen Aspekte einer REST-basierten API zu validieren. Einige dieser Tools sind Postman, Rest Assured usw. Ausführliche Informationen zu verschiedenen Tools finden Sie in unserem Artikel Hier .
- Nicht funktionale Automatisierung der APIs.
- Geplante Durchführung von Automatisierungstests.
- Integration von Automatisierungstests für APIs.
F # 8) Framework-spezifische Fragen.
Antworten: Abhängig vom befragten Profil kann es manchmal erforderlich sein, dass ein Kandidat mit einem bestimmten Rahmen vertraut ist - z. Selen, JMeter usw.
Empfohlene Lektüre => Postbote , Mockito , Specflow , Selen , JMeter
Testen im Zusammenhang
Obwohl selten, aber abhängig vom Profil, kann es Fragen zu allgemeinen Testpraktiken, Begriffen und Technologien geben - wie Schweregrad des Fehlers, Priorität, Testplanung, Testgehäuse usw. Von einem SDET wird erwartet, dass es alle manuellen Testkonzepte kennt und vertraut sein sollte mit den wichtigen Terminologien.
In diesem Abschnitt können Sie Fragen wie diese erwarten:
F # 9) Was sind die verschiedenen Komponenten eines Testplans?
Antworten: Diese werden im Allgemeinen gebeten, die grundlegenden Testkonzepte und die Denkweise zu validieren. Diese Begriffe und Dokumente sollten jeder manuellen Qualitätssicherung sowie Automatisierungs-SDETs bekannt sein.
Sie können hier verschiedene Komponenten des Testplans diskutieren, wie z.
- Ein- und Ausstiegskriterien
- Umfang: Besprechen Sie die Testfunktionen, die im Umfang enthalten sind, und was alles automatisiert werden würde. Werden es nur funktionale Funktionen oder nicht funktionale Anforderungen wie Skalierbarkeit, Leistung usw. sein?
- Zeitleisten
- Zu verwendende Werkzeuge
- Ressourcenzuweisung usw.
Empfohlene Lektüre => Wie schreibe ich einen guten Testplan?
F # 10) Was definiert und entscheidet über die Priorität und den Schweregrad eines Fehlers?
Antworten: Fehlerpriorität und -schweregrad können anhand von Beispielen leicht erklärt werden. Angenommen, eine Funktion wie die Anmeldung ist fehlerhaft und verhindert, dass Benutzer auf die Anwendung zugreifen. Dann handelt es sich um ein Problem mit hoher Priorität und hohem Schweregrad. In ähnlicher Weise kann es Beispiele für Defekte mit niedrigem Schweregrad / hoher Priorität und verschiedene andere Kombinationen geben.
Im Allgemeinen,
- Priorität bezeichnet die Bedeutung des Themas.
- Schwere bezeichnet die Auswirkungen, die das Problem auf den Kunden oder Benutzer der Anwendung hat.
Empfohlene Lektüre => Fehlerpriorität und Schweregrad
F # 11) Was ist Äquivalenzpartitionierung? Illustrieren Sie mit einem Beispiel.
Antworten: Die Äquivalenzpartitionierung ist eine Technik, die hauptsächlich für Black-Box-Tests verwendet wird, um verschiedene Kombinationen von Eingaben für ein bestimmtes Feld zu testen.
Beispielsweise, Wenn Sie eine Handelsanwendung testen und alle Testszenarien für das Feld „Menge“ schreiben möchten - welche unterschiedlichen Eingaben würden Sie für dieses Feld testen?
Angesichts der funktionalen Anforderung, dass die Menge ein positiver ganzzahliger Wert zwischen 1 und 100000 sein sollte. Um verschiedene Eingaben (sowohl gültig als auch ungültig) zu testen, können Sie Tests für 1 Eingabe aus jeder dieser Kategorien durchführen.
- Gültige Werte: Zwischen 1 und 100000 -> auf einen gültigen Wert x prüfen, so dass x> 1 und x<100000.
- Grenzwerte: Test auf die zulässigen Grenzwerte, d. H. 1 & 100000.
- Ungültige Werte: Werte, die außerhalb des zulässigen Bereichs liegen - d. H. Auf einen solchen Wert für x testen, so dass x 100000.
Empfohlene Lektüre => Äquivalenz-Partitionierungsstrategie
Systemdesign im Zusammenhang
Fragen zum Systemdesign eignen sich in der Regel besser für Entwicklerinterviews, bei denen ein Entwickler anhand eines umfassenden Verständnisses verschiedener allgemeiner Konzepte beurteilt wird - wie Skalierbarkeit, Verfügbarkeit, Fehlertoleranz, Datenbankauswahl, Threading usw. Kurz gesagt, müssen Sie Ihr gesamtes verwenden Erfahrung und Systemkenntnisse zur Beantwortung solcher Fragen.
Aber Sie haben vielleicht das Gefühl, dass ein System, das jahrelange Erfahrung und Hunderte von Entwicklern zum Codieren benötigt, wie könnte eine Person die Frage in etwa 45 Minuten beantworten?
Die Antwort ist: Hier besteht die Erwartung darin, das Verständnis des Kandidaten und das breite Wissensspektrum zu beurteilen, das er oder sie bei der Lösung komplexer Probleme anwenden kann.
Heutzutage werden diese Fragen auch in SDET-Interviews aufgeworfen. Hier bleibt die Erwartung dieselbe wie die des Entwicklerinterviews, jedoch mit lockeren Beurteilungskriterien und meistens einer Bar-Raiser-Runde, bei der abhängig von der Antwort des Kandidaten ein Kandidat für die nächste Stufe in Betracht gezogen oder auf eine niedrigere Stufe verschoben werden kann.
Im Allgemeinen sollte der Kandidat bei Fragen zum Systemdesign-Interview mit den folgenden Konzepten vertraut sein
- Grundlagen von Betriebssystemen: Paging, Dateisysteme, virtueller Speicher und physischer Speicher usw.
- Netzwerkkonzepte: HTTP-Kommunikation, TCP / IP-Stack, Netzwerktopologien.
- Skalierbarkeitskonzepte: Horizontale und vertikale Skalierung.
- Parallelitäts- / Threading-Konzepte
- Datenbanktypen: SQL / No SQL-Datenbanken, wann welcher Datenbanktyp verwendet werden soll, Vor- und Nachteile verschiedener Datenbanktypen.
- Hashing-Techniken
- Grundlegendes Verständnis von DECKEL Satz, Scherben, Partitionieren usw.
Sehen wir uns einige Beispielfragen an
F # 12) Entwerfen Sie ein URL-Verkürzungssystem wie a winzige URL ?
Antworten: Viele Kandidaten kennen möglicherweise nicht einmal URL-Verkürzungssysteme im Allgemeinen. In diesem Fall ist es in Ordnung, den Interviewer nach der Problemstellung zu fragen, anstatt ohne Verständnis abzutauchen.
Bevor die Kandidaten solche Fragen beantworten, sollten sie die Lösung strukturieren, Aufzählungspunkte schreiben und dann mit dem Interviewer über die Lösung sprechen.
Lassen Sie uns die Lösung kurz diskutieren
a) Klären Sie funktionale und nicht funktionale Anforderungen
Funktionale Anforderungen: Die funktionale Anforderung besteht nur aus Kundensicht. Es handelt sich um ein System, dem eine große (lange) URL zugeführt wird, und die Ausgabe sollte eine verkürzte URL sein.
Wenn auf die verkürzte URL zugegriffen wird, sollte der Benutzer zur ursprünglichen URL umgeleitet werden. Zum Beispiel - Versuchen Sie, eine tatsächliche URL auf der Webseite https://tinyurl.com/ zu kürzen, geben Sie eine Eingabe-URL wie www.softwaretestinghelp.com ein und Sie sollten eine winzige URL wie https://tinyurl.com/shclcqa erhalten
Nicht-funktionale Anforderungen: Das System sollte hinsichtlich der Umleitung mit Millisekundenlatenz performant sein (als zusätzlicher Sprung für einen Benutzer, der auf die ursprüngliche URL zugreift).
- Verkürzte URLs sollten eine konfigurierbare Ablaufzeit haben.
- Verkürzte URLs sollten nicht vorhersehbar sein.
b) Kapazitäts- / Verkehrsschätzung
Dies ist aus Sicht aller Fragen zum Systemdesign sehr wichtig. Die Kapazitätsschätzung bestimmt im Wesentlichen die erwartete Last, die das System erhalten wird. Es ist immer gut, mit einer Annahme zu beginnen und mit dem Interviewer zu diskutieren. Dies ist auch im Hinblick auf die Planung der Datenbankgröße wichtig, unabhängig davon, ob das System leselastig oder schreiblastig ist usw.
Lassen Sie uns einige Kapazitätsnummern für das URL-Shortener-Beispiel erstellen.
Angenommen, es gibt 100.000 neue URL-Verkürzungsanforderungen pro Tag (mit einem Lese- / Schreibverhältnis von 100: 1 - d. H. Für jede 1 verkürzte URL haben wir 100 Leseanforderungen für die verkürzte URL).
Also werden wir haben,
100k write requests/day => 100000/(24x60x60) => 1.15 request/second 10000k read requests/day => 10000000/(24x60x60) => 1157 requests/second
c) Überlegungen zu Speicher und Speicher
Nach den Kapazitätsnummern können wir diese Zahlen extrapolieren, um Folgendes zu erhalten:
- Die Speicherkapazität, die erforderlich wäre, um die erwartete Last aufzunehmen, Beispielsweise, Wir können planen, eine Speicherlösung zu entwickeln, die die Anforderungen für bis zu 1 Jahr unterstützt.
Beispiel: Wenn jede verkürzte URL 50 Bytes verbraucht, wären die gesamten Daten / Speicher, die wir über ein Jahr benötigen würden:
=> total write requests/day x 365 x 50 / (1024x1024) => 1740 MB
- Speicherüberlegungen sind wichtig, um das System aus der Sicht des Lesers zu planen. d.h. für Systeme, die leselastig sind - wie das, das wir erstellen möchten (weil die URL einmal erstellt würde, aber mehrmals zugegriffen würde).
Schwerlastige Systeme verwenden im Allgemeinen das Caching, um eine höhere Leistung zu erzielen, und vermeiden das Lesen aus dem permanenten Speicher, um Lese-E / A zu sparen.
Nehmen wir an, wir möchten 60% unserer Leseanforderungen im Cache speichern, sodass wir im Laufe des Jahres 60% aller Lesevorgänge über das Jahr x Bytes benötigen würden, die für jeden Eintrag erforderlich sind
=> (60/100) x 100000 x 365 x (50/1024x1024) => 1045 MB ~ 1GB
Gemäß unseren Kapazitätsnummern würde dieses System also ungefähr 1 GB physischen Speicher benötigen
d) Bandbreitenschätzungen
Bandbreitenschätzungen sind erforderlich, um die Lese- und Schreibgeschwindigkeit in Bytes zu analysieren, die für die Ausführung eines Systems erforderlich wären. Lassen Sie uns Schätzungen anhand der von uns vorgenommenen Kapazitätszahlen vornehmen.
Beispiel: Wenn jede verkürzte URL 50 Bytes verbraucht, wäre die gesamte Lese- und Schreibgeschwindigkeit, die wir benötigen würden, wie folgt:
WRITE - 1.15 x 50bytes = 57.5 bytes/s READS - 1157 x 50bytes = 57500 bytes/s => 57500 / 1024 => 56.15 Kb/s
e) Systemdesign und Algorithmus
Dies ist im Wesentlichen die Hauptgeschäftslogik oder der Hauptalgorithmus, der zur Erfüllung der funktionalen Anforderungen verwendet wird. In diesem Fall möchten wir eindeutige verkürzte URLs für eine bestimmte URL generieren.
Die verschiedenen Ansätze, die zum Generieren verkürzter URLs verwendet werden könnten, sind:
Hashing: Wir können uns vorstellen, verkürzte URLs zu generieren, indem wir einen Hash der Eingabe-URL erstellen und den Hash-Schlüssel als verkürzte URL zuweisen.

Dieser Ansatz kann einige Probleme haben, wenn verschiedene Benutzer des Dienstes vorhanden sind. Wenn sie dieselbe URL eingeben, erhalten sie dieselbe verkürzte URL.
Vorgefertigte verkürzte Zeichenfolgenund URLs zugewiesen, wenn der Dienst aufgerufen wird:: Ein anderer Ansatz kann darin bestehen, eine vordefinierte verkürzte Zeichenfolge aus dem Pool bereits generierter Zeichenfolgen zurückzugeben.

Service-APIs: Wir können uns das URL-Shortener-System als eine Reihe von REST-basierten APIs vorstellen, die die folgenden Endpunkte haben:
- createUrl (String Url, DateTime expiryTime): Dieser Endpunkt erstellt eine verkürzte URL und gibt diese zurück, wobei die Ablaufdauer wie in der Eingabe angegeben festgelegt ist.
- retrieveUrl (String shortenedUrl): Dieser Endpunkt ruft die URL ab, die gegen die angegebene verkürzte URL umgeleitet werden soll.
f) Skalierung und Parallelität
Die Skalierung ist eine wichtige Überlegung aus Sicht der nicht funktionalen Anforderungen.
Es geht darum, wie kann System
- Waage unter Last: Das System sollte in der Lage sein, unter Last ordnungsgemäß zu skalieren und nicht einfach nach einem unerwarteten Lastanstieg nicht mehr zu arbeiten.
Empfohlene Lektüre => Skalierungstechniken
- Wie performant kann das System sein, zum Beispiel: Wenn das System über einen längeren Zeitraum mit anhaltender Kapazität verwendet wird, würde sich die Systemleistung verschlechtern oder bleibt es stabil?
Es kann viele verschiedene Fragen zum Systemdesign geben, wie im Folgenden, aber im Allgemeinen würden alle diese Fragen das breitere Verständnis des Kandidaten für verschiedene Konzepte testen, die wir bei der Lösung des URL-Verkürzungssystems erörtert haben.
F # 13) Entwerfe eine Videoplattform wie Youtube.
Antworten: Diese Frage kann auch auf ähnliche Weise behandelt werden, wie wir oben die TinyUrl-Frage erörtert haben (und dies gilt für fast alle Fragen zum Systemdesign-Interview). Der einzige Unterscheidungsfaktor wäre, sich um das System zu kümmern, das Sie entwerfen möchten.
Wir alle wissen, dass Youtube eine Video-Streaming-Anwendung ist und viele Funktionen bietet, z. B. das Hochladen neuer Videos, das Streamen von Live-Webcasts usw. durch einen Benutzer. Beim Entwerfen des Systems sollten Sie also die erforderlichen Systemdesign-Komponenten anwenden. In diesem Fall müssen wir möglicherweise Komponenten hinzufügen, die sich auf Video-Streaming-Funktionen beziehen.
Sie können Punkte wie diskutieren
- Lager: Welche Art von Datenbank würden Sie zum Speichern von Videoinhalten, Benutzerprofilen, Wiedergabelisten usw. auswählen?
- Sicherheit & Authentifizierung / Autorisierung
- Caching: Da eine Streaming-Plattform wie YouTube leistungsfähig sein sollte, ist das Caching ein wichtiger Faktor für das Design eines solchen Systems.
- Parallelität: Wie viele Benutzer können Videos parallel streamen?
- Andere Plattformfunktionen wie der Videoempfehlungsdienst, der Benutzern die nächsten Videos empfiehlt / vorschlägt, die sie ansehen können usw.
F # 14) Entwerfen Sie ein effizientes System für den Betrieb von 6 Aufzügen und stellen Sie sicher, dass eine Person mindestens eine Weile warten muss, bis der Aufzug eintrifft ?
Antworten: Diese Arten von Fragen zum Systemdesign sind niedriger und würden erwarten, dass der Kandidat zuerst das Aufzugssystem durchdenkt und alle möglichen Funktionen auflistet, die unterstützt werden müssen, und Klassen und DB-Beziehungen / Schemata als Lösung entwirft / erstellt.
Aus SDET-Sicht würde der Interviewer nur die Hauptklassen erwarten, die Ihrer Meinung nach Ihre Anwendung oder Ihr System haben würde, und die grundlegenden Funktionen würden mit der vorgeschlagenen Lösung behandelt.
Sehen wir uns verschiedene Funktionen des Aufzugssystems an, die zu erwarten wären
Sie können klärende Fragen stellen wie
- Wie viele Stöcke sind es hier?
- Wie viele Aufzüge gibt es?
- Sind alle Aufzüge Service- / Personenaufzüge?
- Sind alle Aufzüge so konfiguriert, dass sie auf jeder Etage angehalten werden können?
Hier sind die verschiedenen Anwendungsfälle, die für ein einfaches Aufzugssystem gelten:

In Bezug auf Kernklassen / Objekte dieses Systems können Sie Folgendes in Betracht ziehen:
- Nutzer: Behandelt alle Eigenschaften eines Benutzers und Aktionen, die er für Elevator Object ausführen kann.
- Aufzug: Aufzug Spezifische Eigenschaften wie Höhe, Breite, Aufzugsseriennummer.
- Aufzugstür: Alle Dinge, die mit der Tür zu tun haben, wie keine Türen, Türtyp, automatisch oder manuell usw.
- Elevator_Button_Control: Verschiedene Tasten / Bedienelemente im Aufzug und unterschiedliche Zustände, in denen sich diese Bedienelemente befinden können.
Wenn Sie mit dem Entwerfen von Klassen und ihren Beziehungen fertig sind, können Sie über das Konfigurieren von DB-Schemas sprechen.
Eine weitere wichtige Komponente des Elevator-Systems ist das Eventing-System. Sie können über das Implementieren von Warteschlangen oder in einem komplexeren Setup über das Erstellen von Ereignisströmen mit Apache Kafka sprechen, wobei die Ereignisse an die jeweiligen Systeme übermittelt werden, auf die reagiert werden soll.
Das Vielseitigkeitssystem ist ein wichtiger Aspekt, da mehrere Benutzer (auf verschiedenen Etagen) gleichzeitig den Aufzug benutzen. Daher sollten die Anforderungen des Benutzers in die Warteschlange gestellt und gemäß der konfigurierten Logik in den Elevator-Controllern bedient werden.
F # 15) Gestalte Instagram / Twitter / Facebook.
Antworten: Alle diese Plattformen sind in gewisser Weise miteinander verbunden, da sie es Benutzern ermöglichen, auf die eine oder andere Weise verbunden zu werden und Dinge über verschiedene Medientypen zu teilen - wie Nachrichten / Videos und Chats.
Für diese Arten von Social-Media-Anwendungen / -Plattformen sollten Sie bei der Erörterung des Entwurfs solcher Systeme (zusätzlich zu dem, was wir für den Entwurf des URL-Shortener-Systems erörtert haben) die folgenden Punkte angeben:
- Kapazitätsschätzung: Die meisten dieser Systeme wären leselastig, daher ist eine Kapazitätsschätzung erforderlich, und wir könnten sicherstellen, dass die entsprechende Server- und Datenbankkonfiguration für die erforderliche Last sichergestellt ist.
- DB-Schema: Die wichtigsten DB-Schemata, die besprochen werden sollten, sind: Benutzerdetails, Benutzerbeziehungen, Nachrichtenschemata, Inhaltsschemata.
- Video- und Image-Hosting-Server: Die meisten dieser Anwendungen verfügen über Videos und Bilder, die von Benutzern gemeinsam genutzt werden. Daher sollten die Video- und Image-Hosting-Server gemäß den Anforderungen konfiguriert werden.
- Sicherheit: Alle diese Apps sollten aufgrund der Benutzerinformationen / personenbezogenen Daten der von ihnen gespeicherten Benutzer ein hohes Maß an Sicherheit gewährleisten. Alle Hacking-Versuche, SQL Injection, sollten auf diesen Plattformen nicht erfolgreich sein, da dies den Verlust von Daten von Millionen von Kunden kosten kann.
Szenariobasierte Probleme
Szenariobasierte Probleme treten im Allgemeinen bei Senioren auf, bei denen verschiedene Echtzeitszenarien angegeben werden und der Kandidat nach seinen Gedanken gefragt wird, wie er mit einer solchen Situation umgehen wird.
F # 16) Angesichts der Tatsache, dass ein kritischer Hotfix so schnell wie möglich veröffentlicht werden muss - Welche Teststrategie hätten Sie?
Antworten: Hier will der Interviewer nun im Wesentlichen verstehen
- Wie und welche Teststrategien können Sie sich vorstellen?
- Welche Abdeckung würden Sie für einen Hotfix tun?
- Wie würden Sie den Hotfix nach der Bereitstellung validieren? usw.
Um solche Fragen zu beantworten, Sie könnten reale Situationen verwenden, wenn Sie sich auf das Problem beziehen könnten. Sie sollten auch erwähnen, dass Sie ohne entsprechende Tests nicht bereit wären, Code für die Produktion freizugeben.
Bei den kritischen Fixes sollten Sie immer mit dem Entwickler zusammenarbeiten und versuchen, zu verstehen, welche Bereiche davon betroffen sein könnten, und eine Nichtproduktionsumgebung vorbereiten, um das Szenario zu replizieren und den Fix zu testen.
Es ist hier auch wichtig zu erwähnen, dass Sie den Fix nach der Bereitstellung weiterhin überwachen (mithilfe von Überwachungstools, Dashboards, Protokollen usw.), um abnormales Verhalten in der Produktionsumgebung festzustellen und sicherzustellen, dass der Fix keine negativen Auswirkungen hat getan.
Möglicherweise gibt es auch andere Fragen, die hauptsächlich dazu dienen, die Perspektive des Bewerbers auf Automatisierungstests, Lieferfristen usw. zu verstehen (und diese Fragen können von Unternehmen zu Unternehmen sowie das Dienstalter der Rolle variieren. Im Allgemeinen werden diese Fragen für die Senior- / Lead-Ebene gestellt Rollen)
F # 17) Würden Sie vollständige Tests opfern, um ein Produkt schnell freizugeben?
Antworten: Bei diesen Fragen muss der Interviewer in der Regel Ihre Gedanken aus einer Führungsperspektive verstehen und wissen, bei welchen Dingen Sie Kompromisse eingehen würden und ob Sie bereit wären, ein fehlerhaftes Produkt anstelle von weniger Zeit herauszubringen.
Antworten auf diese Fragen sollten anhand der tatsächlichen Erfahrungen des Bewerbers begründet werden.
Beispielsweise, Sie könnten erwähnen, dass Sie in der Vergangenheit einen Anruf entgegennehmen mussten, um einen Hotfix freizugeben, der jedoch aufgrund der Nichtverfügbarkeit der Integrationsumgebung nicht getestet werden konnte. Sie haben es also auf kontrollierte Weise freigegeben - indem Sie es auf einen kleineren Prozentsatz ausrollten und dann Protokolle / Ereignisse überwachten und dann den vollständigen Rollout usw. initiierten.
F # 18) Wie würden Sie eine Automatisierungsstrategie für ein Produkt erstellen, für das es überhaupt keine Automatisierungstests gibt?
Antworten: Diese Art von Fragen ist offen und im Allgemeinen ein guter Ort, um die Diskussion so zu führen, wie Sie es möchten. Sie können auch Ihre Fähigkeiten, Kenntnisse und Technologiebereiche präsentieren, die Ihre Stärke sind.
Beispielsweise, Um diese Art von Fragen zu beantworten, können Sie Beispiele für die Automatisierungsstrategie anführen, die Sie beim Erstellen eines Produkts in Ihrer früheren Rolle übernommen haben.
Zum Beispiel könnten Sie Punkte wie erwähnen
- Da für das Produkt ein Neustart der Automatisierung erforderlich war, hatten Sie genügend Zeit, um über ein geeignetes Automatisierungsframework nachzudenken und es zu entwerfen. Wählen Sie eine Sprache / Technologie aus, über die die meisten Menschen verfügen, um die Einführung eines neuen Tools zu vermeiden und vorhandenes Wissen zu nutzen.
- Sie haben mit der Automatisierung der grundlegendsten Funktionsszenarien begonnen, die als P1 angesehen wurden (ohne die kein Release durchlaufen werden könnte).
- Sie haben auch darüber nachgedacht, die Leistung und Skalierbarkeit des Systems mithilfe automatisierter Testtools wie JMETER, LoadRunner usw. zu testen.
- Sie haben darüber nachgedacht, die Sicherheitsaspekte der Anwendung zu automatisieren, wie in der Liste aufgeführt OWASP Sicherheitsstandards.
- Sie haben die automatisierten Tests in die Build-Pipeline integriert, um frühzeitig Feedback usw. zu erhalten.
Team Fit & Culture Fit
Diese Runde hängt im Allgemeinen von Unternehmen zu Unternehmen ab. Die Notwendigkeit / Notwendigkeit für diese Runde besteht jedoch darin, den Kandidaten aus der Perspektive der Team- und Organisationskultur zu verstehen. Der Zweck dieser Fragen ist auch, die Persönlichkeit des Bewerbers und seine Herangehensweise an Arbeit / Menschen usw. zu verstehen.
Im Allgemeinen sind es Personal- und Einstellungsmanager, die diese Runde durchführen.
Fragen, die normalerweise während dieser Runde auftauchen, sind:
F # 19) Wie lösen Sie Konflikte in Ihrer aktuellen Rolle?
Antworten: Weitere Erklärungen hier sind: Angenommen, Sie haben einen Konflikt mit Ihrem Chef oder unmittelbaren Teammitgliedern. Welche Schritte unternehmen Sie, um diese Konflikte zu lösen?
Für diese Art von Fragen begründen Sie so viel wie möglich mit realen Beispielen, die möglicherweise in Ihrer Karriere bei aktuellen oder früheren Organisationen aufgetreten sind.
Sie können Dinge erwähnen wie:
- Sie möchten Konflikte, die aus beruflichen Gründen entstehen, so schnell wie möglich lösen (und möchten Ihre persönlichen Beziehungen aufgrund dieser Gründe nicht beeinträchtigen).
- Sie können erwähnen, dass Sie im Allgemeinen versuchen, effektiv zu kommunizieren und mit der Person individuell zu sprechen / zu diskutieren, um etwaige Unterschiede / Probleme zu lösen.
- Sie können erwähnen, dass Sie, wenn sich die Lage verschlechtert, die Hilfe einer älteren Person / Ihres Managers in Anspruch nehmen und deren Input erhalten würden.
Weitere Beispiele für Team-Fit- / Kultur-Fit-Fragen sind unten aufgeführt (die meisten sollten in einem ähnlichen Ansatz beantwortet werden, den wir für die obige Frage erörtert haben. Das Sprechen über reale Szenarien ist hier ein Schlüssel, da der Interviewer sie besser in Beziehung setzen kann als Gut.
F # 20) Welche Art von Work-Life-Balance erwarten Sie von der neuen Rolle, für die Sie als angestellt gelten?
Antworten: Da der Einstellungsmanager jemand ist, der weiß, was die Rolle erfordert, wie viel zusätzlicher Aufwand manchmal erforderlich sein kann, versucht der Interviewer im Allgemeinen zu beurteilen, ob Ihre Erwartungen radikal von den Erwartungen der Rolle abweichen.
Angenommen, Sie sagen Wenn Sie nicht lieber an Nachtmeetings teilnehmen und die Rolle eine umfassende Zusammenarbeit zwischen einem Team in einer anderen Zeitzone erwartet, kann der Interviewer eine Diskussion einleiten, dass dies die Erwartungen an die Rolle sind anpassen? usw.
Auch dies ist eher ein gelegentliches Gespräch, aber aus der Sicht des Interviewers möchten sie Ihre Erwartungen verstehen, um Ihre Kandidatur für die Position zu bewerten, für die das Interview geführt wird.
F # 21) Was sind neben der Arbeit Ihre Hobbys?
Antworten: Diese Fragen sind rein subjektiv und individuell, und diese Fragen sind im Allgemeinen nützlich, damit sich der Kandidat entspannt und einfach fühlt und gelegentliche Diskussionen initiiert.
Im Allgemeinen könnten die Antworten auf diese Fragen wie folgt lauten: Sie lesen gerne ein bestimmtes Genre, Sie mögen Musik, Sie haben eine Auszeichnung für eine freiwillige / philanthropische Aktivität erhalten usw. Außerdem werden diese Fragen im Allgemeinen in der HR-Runde gestellt (und weniger wahrscheinlich von einer technischen Person gefragt werden).
F # 22) Wie viel Zeit sind Sie bereit, proaktiv neue Tools und Technologien zu lernen?
Antworten: Hier misst der Interviewer Ihre Bereitschaft, neue Dinge zu lernen, wenn etwas Ungewöhnliches oder Neues auf Sie geworfen wird. Es lässt den Interviewer auch wissen, dass Sie proaktiv sind? Sind Sie bereit, in sich und Ihre Karriere zu investieren? usw.
Seien Sie also bei der Beantwortung solcher Fragen ehrlich und begründen Sie Ihre Antworten mit Beispielen. Beispielsweise, Sie könnten erwähnen, dass Sie letztes Jahr für eine Java-Zertifizierung erschienen sind und sich außerhalb der Arbeit vorbereitet haben, indem Sie sich jede Woche ein paar Stunden Zeit genommen haben.
Fazit
In diesem Artikel haben wir den Software Development Engineer im Testinterviewprozess besprochen und Beispielfragen gestellt, die den Kandidaten in verschiedenen Organisationen und Profilen im Allgemeinen gestellt werden. Im Allgemeinen sind SDET-Interviews sehr breit angelegt und hängen stark von Unternehmen zu Unternehmen ab.
Die Interviewprozesse ähneln jedoch denen eines Entwicklerprofils, wobei der Schwerpunkt auf Qualitäts- und Automatisierungs-Frameworks liegt.
Es ist wichtig zu verstehen, dass sich Unternehmen heutzutage weniger auf eine bestimmte Sprache oder Technologie konzentrieren, sondern vielmehr auf ein umfassendes Verständnis der Konzepte und die Fähigkeit, sich an die vom Unternehmen benötigten Tools / Technologien anzupassen.
Beste Wünsche für Ihr SDET-Interview!
Literatur-Empfehlungen
- Was ist SDET? Kennen Sie den Unterschied zwischen Tester und SDET
- Interview Fragen und Antworten
- Fragen und Antworten zum ETL-Testinterview
- Einige knifflige manuelle Testfragen und -antworten
- Spock Interview Fragen mit Antworten (am beliebtesten)
- 25 Fragen und Antworten zu den besten Agile Testing-Interviews
- Top 32 der besten Fragen und Antworten zum Datastage-Interview
- Top 20+ .NET Interview Fragen und Antworten