sdet interview questions
Lees deze complete gids voor Software Development Engineer in Test Interviews om het formaat te kennen en hoe u de SDET Interview Vragen die in de verschillende rondes gesteld worden, moet beantwoorden:
In deze tutorial leren we enkele veelgestelde interviewvragen voor de SDET-rollen. We zullen ook in het algemeen het gemeenschappelijke patroon van de interviews zien en enkele tips delen om uit te blinken in de interviews.
We zullen Java-taal gebruiken voor de coderingsproblemen voor deze tutorial, maar de meeste SDET-tutorials zijn taalonafhankelijk en interviewers zijn over het algemeen flexibel in de taal die de kandidaat wil gebruiken.
Wat je leert:
SDET Interview Voorbereidingsgids
SDET-interviews, in de meeste van de beste productbedrijven, lijken veel op de manier waarop interviews worden gehouden voor ontwikkelingsrollen. Dit komt omdat van SDET's ook wordt verwacht dat ze bijna alles wat de ontwikkelaar weet, in grote lijnen kennen en begrijpen.
Wat verschilt, zijn de criteria waarop de SDET-geïnterviewde wordt beoordeeld. Interviewers voor deze rol zijn op zoek naar kritisch denkvermogen, evenals of de geïnterviewde praktische ervaring heeft met coderen en oog heeft voor kwaliteit en detail.
Hier zijn enkele punten waarop iemand die zich voorbereidt op een SDET-interview grotendeels zou moeten focussen:
youtube naar mp3 converter die werkt
- Omdat deze interviews meestal technologie- / taalonafhankelijk zijn, moeten kandidaten bereid zijn om nieuwe technologie te leren (en bestaande vaardigheden te benutten) wanneer dat nodig is.
- Moet over goede communicatie- en teamvaardigheden beschikken, aangezien SDET-rollen tegenwoordig communicatie en samenwerking op verschillende niveaus met meerdere belanghebbenden vereisen.
- Moet een basiskennis hebben van verschillende systeemontwerpconcepten, schaalbaarheid, gelijktijdigheid, niet-functionele vereisten, enz.
In de onderstaande secties zullen we proberen het algemene formaat van het interview te begrijpen, samen met enkele voorbeeldvragen.
Formaat van softwareontwikkelingsingenieur in testgesprek
De meeste bedrijven hebben hun voorkeursformaat voor het interviewen van kandidaten voor een SDET-rol, omdat de rol soms superspecifiek is voor een team en van de persoon wordt verwacht dat deze wordt beoordeeld als een perfecte pasvorm voor het team waarvoor de persoon wordt aangenomen.
Maar het thema van de interviews is over het algemeen gebaseerd op de onderstaande punten:
- Telefonische discussie: Gesprek met de manager en / of teamleden, meestal een screeningronde.
- Geschreven ronde: Met test- / testomhulsel specifieke vragen.
- Codeervaardigheidsronde: Eenvoudige codeervragen (taalonafhankelijk) en de kandidaat wordt gevraagd code op productieniveau te schrijven.
- Inzicht in basisontwikkelingsconcepten: Zoals OOPS Concepts, SOLID Principles, etc.
- Test Automation Framework ontwerp en ontwikkeling
- Scripttalen: Selenium, Python, Javascript, enz
- Culture Fit / HR discussie en onderhandelingen
SDET interviewvragen en antwoorden
In deze sectie zullen we enkele voorbeeldvragen bespreken samen met gedetailleerde antwoorden, voor verschillende categorieën die worden gesteld door de meeste productbedrijven die inhuren voor SDET-functies.
Codeervaardigheid
In deze ronde worden eenvoudige codeerproblemen gegeven om in de taal van uw keuze te schrijven. Hier wil de interviewer de vaardigheid met codeerconstructies peilen en zaken als randscenario's en nulcontroles, enz.
Af en toe kunnen interviewers ook vragen om unit-tests op te schrijven voor het geschreven programma.
Laten we enkele voorbeeldproblemen bekijken.
V # 1) Een programma schrijven om 2 nummers te wisselen zonder de 3e (tijdelijke) variabele te gebruiken?
Antwoord
Programma om twee nummers te wisselen:
Hier is de uitvoer van het bovenstaande codefragment:
In het bovenstaande codefragment is het belangrijk op te merken dat de interviewer specifiek heeft gevraagd om 2 nummers te wisselen zonder een derde tijdelijke variabele te gebruiken. Het is ook belangrijk dat voordat u de oplossing indient, het altijd wordt aanbevolen om de code voor minimaal 2-3 invoer door te nemen (of uit te voeren). Laten we proberen voor positieve en negatieve waarden.
Positieve waarden: X = 2, Y = 3
Negatieve waarden: X = -3, Y = 5
Q # 2) Een programma schrijven om een nummer om te draaien?
Antwoord: Nu ziet de probleemstelling er in eerste instantie misschien intimiderend uit, maar het is altijd verstandig om vragen te stellen aan de interviewer (maar niet veel details). Interviewers kunnen ervoor kiezen om hints te geven over het probleem, maar als de kandidaat veel vragen stelt, wijst dit er ook op dat de kandidaat niet genoeg tijd geeft om het probleem goed te begrijpen.
Hier verwacht het probleem dat een kandidaat ook enkele aannames doet - bijvoorbeeld, het nummer kan een geheel getal zijn. Als de invoer 345 is, moet de uitvoer 543 zijn (wat omgekeerd is van 345)
Laten we het codefragment voor deze oplossing bekijken:
Uitvoer voor dit programma tegen invoer : 10025 - Verwacht zou zijn : 52001
V # 3) Een programma schrijven om de faculteit van een getal te berekenen?
Antwoord: Factorial is een van de meest gestelde vragen in bijna alle interviews (inclusief de ontwikkelaarsinterviews)
Voor interviews met ontwikkelaars ligt de nadruk meer op programmeerconcepten zoals dynamisch programmeren, recursie, enz., Terwijl het vanuit de Software Development Engineer in Test-perspectief belangrijk is om de edge-scenario's zoals max-waarden, min-waarden, negatieve waarden, enz. En aanpak / efficiëntie te behandelen. zijn belangrijk maar worden secundair.
Laten we eens kijken naar een programma voor faculteit dat recursie en for-loop gebruikt met het verwerken van negatieve getallen en het retourneren van een vaste waarde van bijvoorbeeld -9999 voor negatieve getallen die moeten worden afgehandeld in het programma dat de faculteitfunctie aanroept.
Raadpleeg het onderstaande codefragment:
Laten we de uitvoer bekijken voor - faculteit met behulp van de lus, faculteit met recursie en faculteit met een negatief getal (wat een standaard ingestelde waarde van -9999 zou retourneren)
V # 4) Schrijf een programma om te controleren of een bepaalde string gebalanceerde haakjes heeft?
Antwoord:
Nadering - Dit is een enigszins complex probleem, waarbij de interviewer iets meer kijkt dan alleen kennis van codeerconstructies. Hier is de verwachting om de geschikte datastructuur voor het probleem te bedenken en te gebruiken.
Velen van jullie voelen zich misschien geïntimideerd door dit soort problemen, omdat sommigen van jullie deze misschien niet hebben gehoord, en daarom, zelfs als ze eenvoudig zijn, kunnen ze ingewikkeld klinken.
Maar over het algemeen voor dergelijke problemen / vragen: bijvoorbeeld Als u in de huidige vraag niet weet wat gebalanceerde haakjes zijn, kunt u het heel goed aan de interviewer vragen en vervolgens naar de oplossing werken in plaats van een blinde vlek te raken.
Laten we eens kijken hoe we een oplossing kunnen benaderen: Nadat u begrijpt wat gebalanceerde haakjes zijn, kunt u nadenken over het gebruik van de juiste datastructuur en vervolgens algoritmen (stappen) schrijven voordat u begint met het coderen van de oplossing. Vaak lossen de algoritmen zelf veel edge-scenario's op en geven ze veel duidelijkheid over hoe de oplossing eruit zal zien.
Laten we eens kijken naar de oplossing:
Gebalanceerde haakjes zijn bedoeld om te controleren op een gegeven string die haakjes (of haakjes) bevat, evenveel openen en sluiten moet hebben en positioneel goed gestructureerd moeten zijn. Voor de context van dit probleem zullen we gebalanceerde haakjes gebruiken als - ‘()’, ‘()’, ‘{}’ - dat wil zeggen dat een bepaalde string elke combinatie van deze haakjes kan hebben.
Houd er rekening mee dat voordat u het probleem probeert, het goed is om te verduidelijken of de tekenreeks alleen de haakjes of cijfers, enz. Bevat (aangezien dit de logica een beetje kan veranderen)
Voorbeeld: Een bepaalde string - '{() {} ()} - is een gebalanceerde string omdat hij gestructureerd is en het aantal haakjes sluiten en openen gelijk is, maar string -' {(}) {} () '- deze string - ook al heeft een gelijk aantal haakjes openen en sluiten, dit is nog steeds niet in evenwicht omdat je kunt zien dat zonder een '(' we hebben gesloten '}' te sluiten (dwz alle binnenste haakjes moeten worden gesloten voordat een buitenste haakje wordt gesloten)
We zullen een stack-datastructuur gebruiken om dit probleem op te lossen. Als u meer wilt weten over de basisprincipes van stack, raadpleeg dan hier
Een stapel is een LIFO (Last In First Out-type datastructuur), beschouw het als een stapel / stapel borden op een bruiloft - je pakt het bovenste bord wanneer je het gebruikt.
Algoritme:
# 1) Declareer een tekenstapel (die de tekens in de tekenreeks zou bevatten en, afhankelijk van enige logica, de tekens duwt en eruit springt).
# 2) Doorloop de invoertekenreeks en wanneer
- Er is een openingshaakje - d.w.z. ‘(‘, {‘of‘ (‘- druk het karakter op stapel.
- Er is een afsluitend karakter - dwz ')', '}', ')' - pop een element uit Stack en controleer of het overeenkomt met het tegenovergestelde van het afsluitende karakter - dwz als het karakter '}' is, dan mag je bij Stack pop verwachten ' {'
- Als het gepofte element niet tegengesteld overeenkomt met de haakjes sluiten, is de tekenreeks niet in evenwicht en kunt u resultaten retourneren.
- Ga anders verder met de stack push en pop-benadering (ga naar stap 2).
- Als de string volledig wordt doorlopen en de Stack-grootte ook nul is, kunnen we zeggen / concluderen dat de gegeven string een gebalanceerde string is tussen haakjes.
Op dit punt wilt u misschien ook de oplossingsbenadering bespreken die u als algoritme heeft en ervoor zorgen dat de interviewer akkoord gaat met de aanpak.
Code:
De uitvoer van het bovenstaande codefragment:
Net als bij onze eerdere coderingsproblemen, is het altijd goed om de code uit te testen met minimaal 1-2 geldige en 1-2 ongeldige invoer en ervoor te zorgen dat alle gevallen op de juiste manier worden afgehandeld.
NOTITIE: Het is altijd goed om de oplossing hardop te bedenken (en niet alleen in de geest) - en verrassend genoeg is dit een belangrijke eigenschap waar interviewers naar op zoek zijn. Veel interviewers zouden het algoritme gewoon kunnen afschaffen en naar de volgende probleemstelling kunnen gaan.
In de bovenstaande coderingsoplossing, voor het ontwikkelaarsinterview, kan de interviewer vragen om het op te lossen met behulp van arrays in plaats van direct te stapelen (dwz door een array als een stapel te gebruiken), maar in het algemeen gaat het erom dat het conceptueel duidelijk is en in staat is om alle geldige en ongeldige invoer.
Test Automation Framework-gerelateerd
Dit gedeelte van het interview gaat specifieker over testen en SDET-verantwoordelijkheden. Verwacht het ontwerp van het automatiseringsraamwerk en ontwikkelingsgerelateerde vragen, voor- en nadelen van het gebruik van verschillende benaderingen, enz.
Laten we enkele voorbeeldvragen en oplossingen voor hetzelfde bekijken.
V # 5) Componenten van het automatiseringsraamwerk voor een webapplicatie uitleggen en ontwerpen?
Antwoord: Deze vraag is een beetje subjectief en de interviewer wil peilen hoeveel de kandidaat weet over het ontwerp en de ontwikkeling van het framework. Het antwoord op deze vraag helpt de interviewer te begrijpen of de kandidaat vanaf het begin aangepaste frameworks kan bouwen of creëren.
Laten we een paar punten bekijken die u kunnen helpen bij het structureren van de oplossing voor deze vraag:
- U kunt praten over verschillende soorten frameworks, zoals: datagestuurd, trefwoordgestuurd, hybride framework.
- Page Object Model voor het opslaan van details van verschillende elementen op verschillende pagina's / modules van de webapplicatie.
- Gemeenschappelijke modules zoals helperfuncties, hulpprogramma's, loggers, etc.
- Rapportagemodules zoals het genereren van testrapporten, het integreren van rapporten met e-mail en het plannen van testuitvoering, enz.
Aanbevolen literatuur => Meest populaire testautomatiseringsframeworks
V # 6) Leg teststrategieën uit voor een mobiele applicatie?
Antwoord: Deze vragen worden doorgaans gesteld, afhankelijk van de rol. Als de rol voornamelijk is om aan mobiele apps te werken, is de vraag relevanter. U kunt vanuit uw ervaring praten als u mobiele tests heeft gepland als onderdeel van uw huidige of vorige functies.
Enkele tips om het antwoord op deze vraag te structureren zijn:
- Testen op apparaten versus emulators.
- Objecten / elementen op verschillende schermen identificeren en opslaan - Voorbeeld: Pagina-objectmodel.
- Laad het testen van een mobiele applicatie.
- U kunt praten over verschillende soorten mobiele applicaties, zoals native apps, hybride apps, en strategieën / benaderingen bespreken die u zou gebruiken om ze te testen.
Aanbevolen literatuur => Tutorials voor het testen van mobiele apps
V # 7) Ontwerp een automatiseringsraamwerk voor het testen van REST API's?
Antwoord: Dit is weer een subjectieve vraag en je kunt verhelderende vragen stellen of de interviewer wil dat je een raamwerk ontwikkelt voor het testen van functioneel gedrag van API of niet-functionele eisen zoals Load / Performance testen.
U kunt uw antwoord beginnen met betrekking tot de onderstaande punten:
- API-automatiseringsframeworkcomponenten zoals lokale installatie, mock-configuratie van API of gehoste API-tests.
- Tools die worden gebruikt voor API-automatisering. Er zijn verschillende tools beschikbaar om de functionele aspecten van een op REST gebaseerde API te valideren. Sommige van dergelijke tools zijn Postman, Rest Assured, enz. Voor diepgaande details van verschillende tools kunt u ons artikel raadplegen hier
- Niet-functionele automatisering van de API's.
- Geplande uitvoering van automatiseringstests.
- Automatiseringstests voor API's integreren.
V # 8) Kaderspecifieke vragen.
Antwoord: Afhankelijk van het profiel dat wordt geïnterviewd, kan het soms nodig zijn dat een kandidaat bekwaam is in een bepaald kader - bijv. Selenium, JMeter, enz.
Aanbevolen literatuur => Postbode Mockito Specflow Selenium JMeter
Testen gerelateerd
Hoewel zelden, maar afhankelijk van het profiel, kunnen er vragen zijn over algemene testpraktijken, termen en technologieën - zoals de ernst van bugs, prioriteit, testplanning, testomhulsel, enz. Van een SDET wordt verwacht dat hij alle handmatige testconcepten kent en bekend moet zijn met de belangrijke terminologieën.
In dit gedeelte kunt u de volgende vragen verwachten:
V # 9) Wat zijn de verschillende componenten van een testplan?
Antwoord: Deze worden doorgaans gevraagd om de basistestconcepten en -mentaliteit te valideren. Deze termen en documenten zijn iets dat elke handmatige QA en automatiserings-SDET's moeten kennen.
U kunt hier verschillende componenten van het testplan bespreken, zoals,
- Criteria voor binnenkomst en vertrek
- Toepassingsgebied: Bespreek de testfuncties die binnen het bereik vallen en wat allemaal geautomatiseerd zou worden - Zullen het alleen functionele kenmerken zijn of niet-functionele vereisten zoals schaalbaarheid, prestaties, enz.
- Tijdlijnen
- Te gebruiken hulpmiddelen
- Toewijzing van middelen, enz
Aanbevolen literatuur => Hoe je een goed testplan schrijft
V # 10) Wat definieert en bepaalt de prioriteit en ernst van een bug?
Antwoord: Prioriteit en ernst van defecten kunnen eenvoudig worden verklaard aan de hand van voorbeelden. Stel dat een functie zoals aanmelden is verbroken en gebruikers geen toegang tot de applicatie geeft, dan is dit een probleem met hoge prioriteit en hoge ernst. Evenzo kunnen er voorbeelden zijn van defecten met lage ernst / hoge prioriteit en diverse andere combinaties.
In het algemeen,
- Prioriteit geeft het belang van de kwestie aan.
- Ernst geeft de impact aan die het probleem heeft voor de klant of gebruiker van de applicatie.
Aanbevolen literatuur => Prioriteit en ernst van defecten
V # 11) Wat is equivalentiepartitionering? Illustreer met een voorbeeld.
Antwoord: Equivalentiepartitionering is een techniek die meestal wordt gebruikt voor Black box-testen, om verschillende combinaties van inputs te testen tegen een bepaald veld.
Bijvoorbeeld, als u een handelsapplicatie test, en u wilt alle testscenario's schrijven voor het veld 'Hoeveelheid', wat zijn dan de verschillende inputs die u voor dit veld zou testen?
Gezien de functionele vereiste is dat de hoeveelheid een positief geheel getal tussen 1 en 100000 moet zijn. Dus om verschillende invoer (zowel geldig als ongeldig) te testen, kunt u tests hebben voor 1 invoer uit elke dergelijke categorie.
- Geldige waarden: Tussen 1 en 100000 -> test voor elke geldige waarde x zodat x> 1 en x<100000.
- Grenswaarden: Test voor de toegestane grenswaarden, d.w.z. 1 & 100000.
- Ongeldige waarden: Waarden die buiten het toegestane bereik liggen - d.w.z. test voor een dergelijke waarde voor x, zodat x 100000.
Aanbevolen literatuur => Equivalentie Partitioneringsstrategie
Systeemontwerp gerelateerd
Systeemontwerpvragen zijn doorgaans geschikter voor interviews met ontwikkelaars, waarbij een ontwikkelaar wordt beoordeeld op een breed begrip van verschillende algemene concepten, zoals schaalbaarheid, beschikbaarheid, fouttolerantie, databaseselectie, threading, enz. Kortom, u zult uw volledige ervaring en systeemkennis om dergelijke vragen te beantwoorden.
Maar misschien heb je het gevoel dat een systeem dat jarenlange ervaring en honderden ontwikkelaars vereist om te coderen, hoe iemand de vraag in ongeveer 45 minuten kan beantwoorden?
Het antwoord is: Hier is de verwachting om het begrip van de kandidaat en het brede spectrum aan kennis dat hij of zij kan toepassen bij het oplossen van complexe problemen, te beoordelen.
Tegenwoordig beginnen deze vragen ook in SDET-interviews te worden geworpen. Hier blijft de verwachting hetzelfde als die van het ontwikkelaarsinterview, maar met ontspannen beoordelingscriteria en het is meestal een drempelverhogende ronde waarbij, afhankelijk van het antwoord van de kandidaat, een kandidaat kan worden overwogen voor het volgende niveau of naar een lager niveau kan worden verplaatst.
Over het algemeen moet de kandidaat bij interviewvragen over systeemontwerp bekend zijn met onderstaande concepten
- Basisprincipes van besturingssystemen: Paging, bestandssystemen, virtueel geheugen en fysiek geheugen, enz.
- Netwerkconcepten: HTTP-communicatie, TCP / IP-stack, netwerktopologieën.
- Schaalbaarheidsconcepten: Horizontaal en verticaal schalen.
- Concurrency / Threading-concepten
- Databasetypen: SQL / Geen SQL-databases, wanneer welk type database moet worden gebruikt, voor- en nadelen van verschillende soorten databases.
- Hashing-technieken
- Basiskennis van CAP stelling, sharding, partitionering, etc.
Laten we enkele voorbeeldvragen bekijken
Vraag 12) Ontwerp een URL-verkortingssysteem zoals een kleine URL
Antwoord: Veel kandidaten zijn misschien niet eens op de hoogte van URL-verkortingssystemen in het algemeen. In dat geval is het oké om de interviewer naar de probleemstelling te vragen in plaats van naar beneden te duiken zonder het te begrijpen.
Alvorens zelfs maar dergelijke vragen te beantwoorden, moeten kandidaten de oplossing structureren en opsommingstekens schrijven en vervolgens de oplossing met de interviewer bespreken.
Laten we de oplossing kort bespreken
a) Verduidelijk functionele en niet-functionele vereisten
Functionele vereisten: Functionele vereiste is simpelweg vanuit het perspectief van de klant, het is een systeem dat een grote (lange) URL krijgt en de uitvoer moet een verkorte URL zijn.
Wanneer de verkorte URL wordt geopend, moet deze de gebruiker omleiden naar de oorspronkelijke URL. Bijvoorbeeld - probeer een echte URL in te korten op https://tinyurl.com/ webpagina, voer een invoer-URL in zoals www.softwaretestinghelp.com en je zou een kleine URL moeten krijgen zoals https://tinyurl.com/shclcqa
Niet-functionele vereisten: Het systeem zou performant moeten zijn in termen van omleidingen met een latentie van milliseconden (als een extra hop voor een gebruiker die toegang heeft tot de originele URL).
- Verkorte URL's moeten een configureerbare vervaltijd hebben.
- Verkorte URL's zouden niet voorspelbaar moeten zijn.
b) Capaciteit / verkeersschatting
Dit is erg belangrijk vanuit het perspectief van alle systeemontwerpvragen. Capaciteitsschatting is in wezen het bepalen van de verwachte belasting die het systeem zal krijgen. Het is altijd goed om met een aanname te beginnen en dit met de interviewer te bespreken. Dit is ook belangrijk vanuit het perspectief van het plannen van de databasegrootte, of het systeem nu leeszwaar of schrijfzwaar is enz.
Laten we wat capaciteitscijfers doen voor het voorbeeld van de URL-verkorter.
Stel dat er 100.000 nieuwe URL-verkortingsverzoeken per dag zullen zijn (met 100: 1 lees-schrijfverhouding - d.w.z. voor elke verkorte URL hebben we 100 leesverzoeken voor de verkorte URL)
Dus we zullen hebben,
c) Overwegingen bij opslag en geheugen
Na de capaciteitsgetallen kunnen we deze getallen extrapoleren om,
- De opslagcapaciteit die nodig zou zijn om de verwachte belasting op te vangen, Bijvoorbeeld, we kunnen plannen om een opslagoplossing te ontwerpen om de verzoeken tot 1 jaar te ondersteunen.
Voorbeeld: Als elke verkorte URL 50 bytes zou verbruiken, zou de totale data / opslag die we meer dan een jaar nodig hebben, zijn:
- Overwegingen met betrekking tot het geheugen zijn belangrijk om het systeem vanuit het perspectief van de lezer te plannen. d.w.z. voor systemen die zwaar lezen - zoals degene die we proberen te bouwen (omdat de URL één keer zou worden gemaakt maar meerdere keren zou worden geopend).
Lees-zware systemen gebruiken over het algemeen caching om beter te presteren en vermijden lezen uit de permanente opslag om te besparen op lees-I / O.
Laten we aannemen dat we 60% van onze leesverzoeken in de cache willen opslaan, dus in de loop van het jaar zouden we 60% van het totale aantal leesbewerkingen gedurende het jaar x bytes nodig hebben voor elke invoer
Dus, volgens onze capaciteitscijfers, zou dit systeem ongeveer 1 GB fysiek geheugen nodig hebben
d) Ramingen van de bandbreedte
Er zijn bandbreedteschattingen nodig om de lees- en schrijfsnelheid in bytes te analyseren die nodig zijn om een systeem uit te voeren. Laten we schattingen maken op basis van de capaciteitscijfers die we hebben genomen.
Voorbeeld: Als elke verkorte URL 50 bytes verbruikt, zijn de totale lees- en schrijfsnelheden die we nodig hebben als volgt:
e) Systeemontwerp en algoritme
Dit is in wezen de belangrijkste bedrijfslogica of het belangrijkste algoritme dat zou worden gebruikt om aan de functionele vereisten te voldoen. In dit geval willen we unieke verkorte URL's genereren voor een bepaalde URL.
De verschillende benaderingen die kunnen worden gebruikt om verkorte URL's te genereren, zijn:
Hashing: We kunnen denken aan het genereren van verkorte URL's door een hash van de invoer-URL te maken en de hash-sleutel toe te wijzen als de verkorte URL.
Deze aanpak kan enkele problemen opleveren als er verschillende gebruikers van de service zijn, en als ze dezelfde URL invoeren, zouden ze dezelfde verkorte URL krijgen.
Vooraf gemaakte verkorte snarenen toegewezen aan URL's wanneer de service wordt aangeroepen Een andere benadering kan zijn om een vooraf gedefinieerde verkorte string te retourneren uit de pool van reeds gegenereerde strings.
Service-API's: We kunnen het URL-verkortersysteem zien als een set op REST gebaseerde API's met de volgende eindpunten:
- createUrl (String Url, DateTime expiryTime): Dit eindpunt maakt en retourneert een verkorte URL met een verloopduur die is ingesteld zoals gespecificeerd in de invoer.
- retrieveUrl (String shortenedUrl): Dit eindpunt haalt de URL op die moet worden omgeleid naar de opgegeven verkorte URL.
f) Schalen en gelijktijdigheid
Schalen is een belangrijke overweging vanuit het perspectief van niet-functionele vereisten.
Het behandelt, hoe kan systeem
- Weegschaal onder belasting: Het systeem moet gracieus kunnen schalen onder belasting en niet zomaar stoppen met werken na een onverwachte piek in de belasting.
Aanbevolen literatuur => Schaaltechnieken
- Hoe performant kan het systeem zijn, bijvoorbeeld: als het systeem lange tijd met aanhoudende capaciteit wordt gebruikt, zouden de systeemprestaties dan verslechteren of zou het stabiel blijven?
Er kunnen veel verschillende systeemontwerpvragen zijn, zoals hieronder, maar over het algemeen zouden deze allemaal het bredere begrip van de kandidaat van verschillende concepten testen die we hebben besproken in de oplossing van het URL-verkortingssysteem.
V # 13) Ontwerp een videoplatform zoals YouTube.
Antwoord: Deze vraag kan ook worden benaderd, op dezelfde manier als we de TinyUrl-vraag hierboven hebben besproken (en dit geldt voor bijna alle interviewvragen voor systeemontwerp). De enige onderscheidende factor zou zijn om rond het systeem te kijken / te detailleren dat u wilt ontwerpen.
Dus voor YouTube weten we allemaal dat het een videostreamingtoepassing is en veel mogelijkheden heeft, zoals een gebruiker toestaan om nieuwe video's te uploaden, live webcasts te streamen, enz. Dus tijdens het ontwerpen van het systeem moet je de vereiste systeemontwerpcomponenten toepassen. In dit geval moeten we mogelijk componenten toevoegen met betrekking tot videostreamingmogelijkheden.
U kunt punten bespreken zoals,
- Opslag: Wat voor soort database zou u kiezen om video-inhoud, gebruikersprofielen, afspeellijsten, enz. Op te slaan?
- Beveiliging en authenticatie / autorisatie
- Caching: Aangezien een streamingplatform zoals YouTube performant moet zijn, is caching een belangrijke factor bij het ontwerpen van een dergelijk systeem.
- Gelijktijdigheid: Hoeveel gebruikers kunnen video parallel streamen?
- Andere platformfuncties zoals video-aanbevelingsservice die gebruikers de volgende video's die ze kunnen bekijken, aanbeveelt / suggereert, enz.
V # 14) Ontwerp een efficiënt systeem voor het bedienen van 6 liften en zorg ervoor dat een persoon een paar minuten moet wachten tot de lift arriveert
Antwoord: Dit soort systeemontwerpvragen zijn laagdrempeliger en zouden van de kandidaat verwachten dat hij eerst het liftsysteem doordenkt en alle mogelijke functies opsomt die ondersteund moeten worden en dat hij klassen en DB-relaties / schema's ontwerpt / maakt als de oplossing.
Vanuit het SDET-perspectief zou de interviewer gewoon de hoofdklassen verwachten die u denkt dat uw toepassing of systeem zou hebben en de basisfunctionaliteiten zouden worden afgehandeld met de voorgestelde oplossing.
Laten we eens kijken naar verschillende functionaliteiten van het liftsysteem die kunnen worden verwacht
U kunt verhelderende vragen stellen zoals
- Hoeveel verdiepingen zijn er?
- Hoeveel liften zijn er?
- Zijn alle liften dienst- / personenliften?
- Zijn alle liften geconfigureerd om op elke verdieping te worden gestopt?
Hier zijn de verschillende gebruiksscenario's die van toepassing zijn op een eenvoudig liftsysteem:
In termen van kernklassen / objecten van dit systeem, kunt u overwegen om:
- Gebruiker: Behandelt alle eigenschappen van een gebruiker en acties die ze kunnen ondernemen op Elevator Object.
- Lift: Liftspecifieke eigenschappen zoals hoogte, breedte, liftserienummer.
- Elevator Door: Alles met betrekking tot de deur zoals geen deuren, type deur, automatisch of handmatig, etc.
- Elevator_Button_Control: Verschillende knoppen / bedieningselementen beschikbaar in de lift en verschillende toestanden waarin die bedieningselementen kunnen zijn.
Als u klaar bent met het ontwerpen van klassen en hun relaties, kunt u praten over het configureren van DB-schema's.
Een ander belangrijk onderdeel van het liftsysteem is het Eventing-systeem. U kunt praten over het implementeren van wachtrijen of in een meer complexe opstelling om gebeurtenisstromen te maken met behulp van Apache Kafka, waar de gebeurtenissen worden afgeleverd op de respectieve systemen om op te reageren.
Eventing-systeem is een belangrijk aspect omdat er meerdere gebruikers (op verschillende verdiepingen) tegelijkertijd de lift gebruiken. Daarom moeten de verzoeken van de gebruiker in de wachtrij worden geplaatst en worden bediend volgens de geconfigureerde logica in de liftcontrollers.
Q # 15) Ontwerp Instagram / Twitter / Facebook.
Antwoord: Al deze platforms zijn op een bepaalde manier met elkaar verbonden, omdat ze gebruikers in staat stellen op de een of andere manier verbinding te maken en dingen te delen via verschillende mediatypen, zoals berichten / video's en ook chats.
Dus voor dit soort sociale mediatoepassingen / -platforms moet u onderstaande punten opnemen wanneer u het ontwerpen van dergelijke systemen bespreekt (naast wat we hebben besproken voor het ontwerpen van URL-verkortersystemen):
- Capaciteitsschatting: De meeste van deze systemen zouden leeszwaar zijn, daarom is capaciteitsschatting vereist en kunnen we ervoor zorgen dat de juiste server- en databaseconfiguratie wordt gegarandeerd om de vereiste belasting te kunnen dragen.
- DB schema: De belangrijkste belangrijke DB-schema's die moeten worden besproken, zijn: gebruikersgegevens, gebruikersrelaties, berichtenschema's, inhoudsschema's.
- Hosting-servers voor video en afbeeldingen: De meeste van deze applicaties hebben video's en afbeeldingen die door gebruikers worden gedeeld. Daarom moeten de Video- en Image Hosting-servers worden geconfigureerd volgens de behoeften.
- Veiligheid: Al deze apps zouden een hoog beveiligingsniveau moeten garanderen dankzij de gebruikersinformatie / persoonlijk identificeerbare informatie van de gebruikers die ze opslaan. Elke poging tot hacking, SQL Injection zou niet succesvol moeten zijn op deze platforms, omdat het gegevensverlies van miljoenen klanten kan kosten.
Scenario-gebaseerde problemen
Scenario-gebaseerde problemen zijn over het algemeen voor mensen op hoger niveau, waar verschillende real-time scenario's worden gegeven en de kandidaat wordt gevraagd naar hun mening over hoe ze met een dergelijke situatie zullen omgaan.
V # 16) Gezien het feit dat een kritieke hotfix zo snel mogelijk moet worden vrijgegeven - Wat voor teststrategie zou u hebben?
Antwoord: Nu, hier wil de interviewer in wezen begrijpen
- Hoe en wat voor soort teststrategieën kunt u bedenken?
- Welke dekking zou u doen voor een hotfix?
- Hoe zou u de hotfix na implementatie valideren? enz.
Om dergelijke vragen te beantwoorden, je zou situaties uit het echte leven kunnen gebruiken als je je op het probleem zou kunnen verhouden. U moet ook vermelden dat u zonder de juiste tests niet bereid zou zijn om enige code vrij te geven voor productie.
Voor de kritieke fixes moet u altijd samenwerken met de ontwikkelaar en proberen te begrijpen op welke gebieden dit van invloed kan zijn en een niet-productieomgeving voorbereiden om het scenario te repliceren en de fix te testen.
Het is hier ook belangrijk om te vermelden dat u de fix zou blijven volgen (met behulp van monitoringtools, dashboards, logboeken, enz.) Na de implementatie om abnormaal gedrag in de productieomgeving te zien en ervoor te zorgen dat er geen negatieve impact is van de fix die gedaan.
Er kunnen ook andere vragen zijn die voornamelijk bedoeld zijn om het perspectief van de kandidaat op automatiseringstests, leveringstermijnen, enz. Te begrijpen (en deze vragen kunnen van bedrijf tot bedrijf verschillen, evenals de anciënniteit van de functie. Over het algemeen worden deze vragen gesteld voor senior / lead-niveau) rollen)
V # 17) Zou u volledige tests opofferen om een product snel op de markt te brengen?
Antwoord: Bij deze vragen is de interviewer meestal betrokken om uw gedachten te begrijpen vanuit een leiderschapsperspectief en wat zijn de dingen waarover u een compromis zou sluiten, en zou u bereid zijn een buggy-product uit te brengen in plaats van minder tijd.
Antwoorden op deze vragen dienen onderbouwd te worden met de feitelijke ervaringen van de kandidaat.
Bijvoorbeeld, je zou kunnen vermelden dat je in het verleden een oproep moest aannemen om een hotfix uit te brengen, maar dat deze niet kon worden getest vanwege de niet-beschikbaarheid van de integratieomgeving. Dus je hebt het op een gecontroleerde manier vrijgegeven - door het uit te rollen naar een kleiner percentage en vervolgens logboeken / gebeurtenissen bij te houden en vervolgens de volledige uitrol te starten, enz.
V # 18) Hoe zou u een automatiseringsstrategie creëren voor een product dat helemaal geen automatiseringstests heeft?
Antwoord: Dit soort vragen heeft een open einde en is over het algemeen een goede plek om de discussie op de gewenste manier te voeren. U kunt ook uw vaardigheden, kennis en technologiegebieden laten zien die uw sterke punten zijn.
Bijvoorbeeld, Om dit soort vragen te beantwoorden, kunt u voorbeelden noemen van de automatiseringsstrategie die u hebt aangenomen tijdens het bouwen van een product in uw vorige functie.
U kunt bijvoorbeeld punten noemen als,
- Omdat het product vanaf nul moest worden gestart met automatisering, kreeg u genoeg tijd om na te denken en te ontwerpen voor een geschikt automatiseringsraamwerk door een taal / technologie te kiezen waarvan de meeste mensen de kennis hadden om de introductie van een nieuwe tool te vermijden en bestaande kennis te benutten.
- Je begon met het automatiseren van de meest basale functionele scenario's die werden beschouwd als P1 (zonder welke geen release kon doorgaan).
- U hebt ook nagedacht over het testen van de prestaties en schaalbaarheid van het systeem door middel van geautomatiseerde testtools zoals JMETER, LoadRunner, enz.
- U dacht erover om de beveiligingsaspecten van de applicatie te automatiseren, zoals vermeld in het OWASP Beveiligingsnormen.
- Je hebt de geautomatiseerde tests geïntegreerd in de build-pijplijn voor vroege feedback enz.
Team Fit & Cultuur Fit
Deze ronde is doorgaans afhankelijk van bedrijf tot bedrijf. Maar de noodzaak / noodzaak voor deze ronde is om de kandidaat te begrijpen vanuit het perspectief van team- en organisatiecultuur. Het doel van deze vragen is ook om de persoonlijkheid van de kandidaat en hun benadering van werk / mensen enz. Te begrijpen.
Over het algemeen zijn HR- en wervingsmanagers degenen die deze ronde uitvoeren.
Vragen die doorgaans tijdens deze ronde naar voren komen, zijn als:
V # 19) Hoe los je conflicten op binnen je huidige functie?
Antwoord: Verdere uitleg is hier: stel dat je een conflict hebt met je baas of directe teamleden, wat zijn de stappen die je neemt om die conflicten op te lossen?
Onderbouw voor dit soort vragen zoveel mogelijk met echte voorbeelden die mogelijk zijn voorgevallen in je loopbaan bij huidige of eerdere organisaties.
U kunt dingen noemen als:
- U vindt het leuk om eventuele conflicten die ontstaan als gevolg van professionele redenen zo snel mogelijk op te lossen (en wilt uw persoonlijke relaties hierdoor niet beïnvloeden).
- U kunt vermelden dat u over het algemeen probeert effectief te communiceren en met de persoon individueel te praten / bespreken om eventuele verschillen / problemen op te lossen.
- U kunt vermelden dat als de zaken slechter worden, u de hulp van een senior persoon / uw manager inschakelt en zijn / haar input krijgt.
Andere voorbeelden van teamfit / culture fit-vragen staan hieronder (de meeste moeten worden beantwoord in een vergelijkbare benadering die we hebben besproken voor de bovenstaande vraag. Praten over real-life scenario's is hier een sleutel, aangezien de interviewer het op een betere manier kan relateren, aangezien goed.
V # 20) Welke balans tussen werk en privé verwacht u van de nieuwe functie waarvoor u wordt geacht te zijn aangenomen?
Antwoord: Aangezien de wervingsmanager iemand is die weet wat de functie vereist, hoeveel extra inspanning er soms nodig kan zijn, probeert de interviewer over het algemeen in te schatten of uw verwachtingen radicaal verschillen van wat de rol verwacht.
Stel dat je zegt dat u liever geen nachtvergaderingen bijwoont en de rol verwacht dat u een grote samenwerking heeft tussen een team dat in een andere tijdzone zit, dan kan de interviewer een discussie op gang brengen dat dit de verwachtingen van de rol zijn - Kunt u dat zich aanpassen? enz.
Dus nogmaals, dit is meer een informeel gesprek, maar vanuit het perspectief van de interviewer willen ze uw verwachtingen begrijpen om uw kandidatuur voor de functie waarvoor wordt geïnterviewd te evalueren.
V # 21) Wat zijn behalve werk je hobby's?
Antwoord: Deze vragen zijn puur subjectief en individueel, en deze vragen zijn over het algemeen nuttig om de kandidaat zich ontspannen en gemakkelijk te laten voelen en om losse discussies op gang te brengen.
Over het algemeen kunnen de antwoorden op deze vragen zijn als - je leest graag een bepaald genre, je houdt van muziek, je hebt een prijs ontvangen voor een of andere vrijwillige / filantropische activiteit, enz. Deze vragen worden ook meestal gesteld in de HR-ronde (en minder snel gevraagd door een technisch persoon).
V # 22) Hoeveel tijd bent u bereid om proactief nieuwe tools en technologieën te leren?
Antwoord: Hier peilt de interviewer naar uw bereidheid om nieuwe dingen te leren als u iets ongewoons of nieuws wordt voorgeschoteld. Het laat de interviewer ook weten dat u proactief bent? Ben je bereid om in jezelf en je carrière te investeren? enz.
Dus bij het beantwoorden van dergelijke vragen - wees eerlijk en onderbouw uw antwoorden met voorbeelden - Bijvoorbeeld, Je zou kunnen vermelden dat je vorig jaar verscheen voor een Java-certificering en jezelf voorbereidde buiten het werk door een paar uur per week te nemen.
Gevolgtrekking
In dit artikel hebben we het interviewproces Software Development Engineer in Test besproken en voorbeeldvragen die over het algemeen worden gesteld aan kandidaten in verschillende organisaties en profielen. Over het algemeen zijn SDET-interviews erg breed van aard en sterk afhankelijk van het bedrijf tot het bedrijf.
Maar de interviewprocessen zijn vergelijkbaar met wat er is voor een ontwikkelaarsprofiel, met een grotere nadruk op kwaliteit en automatiseringskaders.
Het is belangrijk om te begrijpen dat bedrijven tegenwoordig minder gefocust zijn op een specifieke taal of technologie, maar meer op een breed begrip van concepten en het vermogen om zich aan te passen aan de tools / technologieën die het bedrijf nodig heeft.
Beste wensen voor uw SDET-interview!
Aanbevolen literatuur
- Wat is SDET: ken het verschil tussen tester en SDET
- Interview vragen en antwoorden
- Vragen en antwoorden over ETL-tests
- Enkele lastige vragen en antwoorden voor handmatig testen
- Spock-interviewvragen met antwoorden (meest populair)
- 25 Beste Agile Testing Interview Vragen en Antwoorden
- Top 32 beste datastage interviewvragen en antwoorden
- Top 20+ .NET interviewvragen en antwoorden