sdet interview questions
Pročitajte ovaj cjeloviti vodič za inženjera za razvoj softvera u ispitnim intervjuima kako biste znali format i kako odgovoriti na pitanja iz SDET intervjua postavljena u raznim rundama:
U ovom uputstvu naučit ćemo o nekim često postavljanim pitanjima iz razgovora za uloge SDET-a. Također ćemo vidjeti, općenito, uobičajeni obrazac intervjua i podijeliti nekoliko savjeta kako se istaknuti u intervjuima.
Koristit ćemo jezik Java za probleme kodiranja u ovom tutorijalu, međutim, većina SDET tutorijala je jezički agnostik, a anketari su uglavnom fleksibilni oko jezika koji kandidat odluči koristiti.
Što ćete naučiti:
SDET Vodič za pripremu intervjua
SDET intervjui u većini vodećih tvrtki za proizvodnju proizvoda prilično su slični načinu na koji se vode intervjui za razvojne uloge. To je zato što se od SDET-a također očekuje da znaju i razumiju gotovo sve što programer zna.
Ono što se razlikuje jesu kriteriji na temelju kojih se ocjenjuje sugovornik SDET-a. Anketari za ovu ulogu traže vještine kritičkog mišljenja, kao i ima li osoba s kojom se razgovara ima lično iskustvo u kodiranju i ima li oko za kvalitetu i detalje.
Evo nekoliko točaka na koje bi se netko koji se priprema za intervju za SDET uglavnom trebao usredotočiti:
kako otvoriti mkv datoteke na Windowsima -
- Budući da su ti intervjui većinu vremena agnostički na tehnologiji / jeziku, kandidati stoga moraju biti spremni naučiti novu tehnologiju (i iskoristiti postojeće vještine) prema potrebi.
- Trebali bi imati dobre komunikacijske i timske vještine jer uloge SDET-a danas zahtijevaju komunikaciju i suradnju na različitim razinama s više dionika.
- Treba imati osnovno razumijevanje različitih koncepata dizajna sustava, skalabilnosti, istodobnosti, nefunkcionalnih zahtjeva itd.
U odjeljcima u nastavku pokušat ćemo razumjeti opći format intervjua zajedno s nekoliko primjera pitanja.
Format inženjera za razvoj softvera u testnom intervjuu
Većina tvrtki preferira format intervjuiranja kandidata za ulogu SDET-a, kao što je to ponekad slučaj, uloga je super specifična za tim i očekuje se da će osoba biti ocijenjena kao savršena za tim za koji je osoba angažirana.
Ali, tema intervjua uglavnom se temelji na sljedećim točkama:
- Telefonska rasprava: Razgovor s upraviteljem i / ili članovima tima koji je obično krug provjere.
- Pismeni krug: Uz specifična pitanja za testiranje / testiranje kućišta.
- Krug poznavanja kodiranja: Jednostavna pitanja o kodiranju (jezično agnostička) i od kandidata se traži da napiše kôd na razini proizvodnje.
- Razumijevanje osnovnih razvojnih koncepata: Poput OOPS koncepata, ČVRSTIH principa itd.
- Dizajn i razvoj okvira za automatizaciju ispitivanja
- Jezici za skriptiranje: Selen, Python, Javascript itd
- Culture Fit / HR rasprava i pregovori
Pitanja i odgovori za SDET intervju
U ovom ćemo odjeljku razmotriti nekoliko primjera pitanja zajedno s detaljnim odgovorima za različite kategorije koje postavlja većina tvrtki koje proizvode proizvode za SDET uloge.
Vještina kodiranja
U ovom krugu daju se jednostavni problemi s kodiranjem za pisanje na jeziku koji odaberete. Ovdje anketar želi izmjeriti stručnost kodnim konstrukcijama, kao i rukovati stvarima poput rubnih scenarija i null provjera itd.
Povremeno bi anketari mogli zatražiti da zapišu jedinstvene testove za napisani program.
Pogledajmo neke primjere problema.
P # 1) Napišite program za zamjenu 2 broja bez upotrebe treće (privremene) varijable?
Odgovor :
Program za zamjenu dva broja:
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); } }
Evo rezultata gornjeg isječka koda:
U gornjem isječku koda važno je napomenuti da je ispitivač posebno zatražio zamjenu 2 broja bez upotrebe treće privremene varijable. Također je važno da se prije slanja rješenja uvijek preporuči proći (ili proći kroz) kôd za najmanje 2-3 unosa. Pokušajmo s pozitivnim i negativnim vrijednostima.
Pozitivne vrijednosti: 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)
Negativne vrijednosti: 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)
P # 2) Napisati program za preokretanje broja?
Odgovor: Sada bi izjava o problemu u početku mogla izgledati zastrašujuće, ali uvijek je pametno zatražiti da razjasnite pitanja anketeru (ali ne puno detalja). Anketari mogu dati savjete o problemu, ali ako kandidat postavlja puno pitanja, to također ukazuje na to da kandidat nema dovoljno vremena da dobro razumije problem.
Ovdje problem očekuje da i kandidat iznese neke pretpostavke - na primjer, broj bi mogao biti cijeli broj. Ako je ulaz 345, onda bi izlaz trebao biti 543 (što je obrnuto od 345)
Pogledajmo isječak koda za ovo rješenje:
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; } }
Izlaz za ovaj program u odnosu na ulaz : 10025 - Očekivano bi bilo : 52001
P # 3) Napisati program za izračunavanje faktorijela broja?
Odgovor: Factorial je jedno od najčešće postavljanih pitanja u gotovo svim intervjuima (uključujući intervjue za programere)
Za razgovore s programerima veći je fokus na programskim konceptima poput dinamičkog programiranja, rekurzije itd., Dok je iz inženjera softverskog razvoja u perspektivi testa važno rukovati rubnim scenarijima kao što su maksimalne vrijednosti, minimalne vrijednosti, negativne vrijednosti itd. I pristup / učinkovitost su važni, ali postaju sporedni.
Pogledajmo program za faktorijel koji koristi rekurziju i for-loop s rukovanjem negativnim brojevima i vraćanjem fiksne vrijednosti recimo -9999 za negativne brojeve koji bi se trebali rukovati u programu koji poziva faktorsku funkciju.
Pogledajte isječak koda u nastavku:
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); } }
Pogledajmo izlaz za - faktorijel pomoću petlje, faktorijel koristeći rekurziju i faktorijel negativnog broja (koji bi vratio zadanu postavljenu vrijednost od -9999)
P # 4) Napišite program za provjeru ima li zadani niz uravnotežene zagrade?
Odgovor:
Pristup - Ovo je pomalo složen problem, gdje anketar traži nešto više od znanja samo konstrukcije kodiranja. Ovdje se očekuje razmišljanje i korištenje odgovarajuće strukture podataka za predmetni problem.
Mnogi od vas mogu se osjećati zastrašeno zbog ove vrste problema, jer neki od vas ih možda nisu čuli, pa stoga, iako su jednostavni, mogu zvučati složeno.
Ali općenito za takve probleme / pitanja: Na primjer, u trenutnom pitanju, ako ne znate što su uravnotežene zagrade, vrlo dobro možete pitati ispitivača i zatim raditi na rješenju, umjesto da udarite u slijepu točku.
Pogledajmo kako pristupiti rješenju: Nakon što shvatite što su uravnotežene zagrade, možete razmisliti o korištenju ispravne strukture podataka, a zatim početi pisati algoritme (korake) prije nego što započnete s kodiranjem rješenja. Puno puta sami algoritmi rješavaju puno rubnih scenarija i daju puno jasnoće kako će rješenje izgledati.
Pogledajmo rješenje:
Uravnotežene zagrade trebaju provjeriti postoji li niz koji sadrži zagrade (ili zagrade), treba imati jednak broj otvaranja i zatvaranja, kao i pozicijski dobro strukturiran. Za kontekst ovog problema koristit ćemo uravnotežene zagrade kao - ‘()’, ‘()’, ‘{}’ - tj. Zadani niz može imati bilo koju kombinaciju ovih zagrada.
Napominjemo da je prije pokušaja problema dobro pojasniti hoće li niz sadržavati samo zagradne znakove ili bilo koje brojeve itd. (Jer bi to moglo malo promijeniti logiku)
Primjer: Dat je niz - '{() {} ()} - uravnotežen je niz jer je strukturiran i nema jednak broj zatvarajućih i otvarajućih zagrada, već niz -' {(}) {} () '- ovaj niz - iako ima jednak broj otvaranja i zatvaranja zagrada, ovo još uvijek nije uravnoteženo jer možete vidjeti da bez zatvaranja '(' mi smo zatvorili '}' (tj. sve unutarnje zagrade trebaju biti zatvorene prije zatvaranja vanjske zagrade)
Za rješavanje ovog problema koristit ćemo strukturu podataka steka. Ako želite znati više o osnovama stoga, pogledajte ovdje
Stog je LIFO (vrsta strukture podataka 'Posljednji u prvom izlazu'), zamislite ga kao stog / hrpu tanjura na vjenčanju - najvišu ćete ploču podići kad god je budete koristili.
Algoritam:
# 1) Deklarirajte skup znakova (koji će sadržavati znakove u nizu i, ovisno o nekoj logici, gurati i iskakati znakove).
# 2) Prelazak kroz ulazni niz i kad god
- Postoji početni znak zagrade - tj. „(‘, {‘Ili‘ (‘- pritisnite znak na Stacku.
- Postoji znak za zatvaranje - tj. ')', '}', ')' - iskočite element iz Stacka i provjerite podudara li se suprotno sa znakom zatvaranja - tj. Ako je znak '}', a zatim na Stack popu treba očekivati ' {'
- Ako se iskočeni element ne podudara s zatvarajućim zagradama, tada niz nije uravnotežen i možete vratiti rezultate.
- Inače nastavite s prislanjanjem i slaganjem stoga (idite na korak 2).
- Ako se niz pređe u potpunosti, a veličina sloga također je nula, tada možemo reći / zaključiti da je zadani niz uravnoteženi niz zagrada.
U ovom trenutku, možda ćete htjeti razgovarati i o pristupu rješenju koji imate kao algoritam i osigurati da je ispitivač u redu s pristupom.
Kodirati:
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 Izlaz gornjeg isječka koda:

Kao i za prethodne probleme s kodiranjem, uvijek je dobro pokrenuti kod s najmanje 1-2 valjana i 1-2 nevaljana unosa i osigurati da se svi slučajevi pravilno rješavaju.
BILJEŠKA: Uvijek je dobro dobro razmisliti o rješenju (i ne samo u mislima) - i iznenađujuće je da je ovo važna osobina koju anketari traže. Mnogi anketari mogli bi jednostavno ukloniti algoritam i prijeći na sljedeću tvrdnju o problemu.
U gore navedenom rješenju kodiranja, za intervju za programera, anketar može zatražiti da ga riješi pomoću nizova umjesto izravno slaganja (tj. Pomoću niza kao stog), ali općenito, više je riječ o konceptualno jasnom i sposobnom rukovanju svim valjanim i nevaljani ulazi.
U vezi s okvirom za automatizaciju ispitivanja
Ovaj je dio intervjua specifičniji oko testiranja i odgovornosti za SDET. Očekujte pitanja dizajna okvira automatizacije i pitanja vezana uz razvoj, prednosti i nedostatke korištenja različitih pristupa itd.
Pogledajmo nekoliko primjera pitanja i rješenja za isto.
P # 5) Objasniti i dizajnirati komponente okvira za automatizaciju za web aplikaciju?
Odgovor: Ovo je pitanje malo subjektivno i anketar namjerava procijeniti koliko kandidat zna o dizajnu i razvoju okvira. Odgovor na ovo pitanje pomaže anketeru da shvati može li kandidat graditi ili stvarati prilagođene okvire od nule.
Pogledajmo nekoliko točaka koje bi vam pomogle da strukturirate rješenje za ovo pitanje:
- Možete razgovarati o različitim vrstama okvira kao što su - Podaci vođeni, Ključne riječi, Hibridni okvir.
- Model objekta za pohranu detalja različitih elemenata na različitim stranicama / modulima web aplikacije.
- Uobičajeni moduli kao što su pomoćne funkcije, uslužni programi, zapisnici itd.
- Moduli za izvještavanje poput generiranja izvješća o izvršenju testa, integriranje izvješća s e-poštom i zakazivanje izvođenja testa, itd.
Preporučena literatura => Najpopularniji okviri za automatizaciju ispitivanja
6. pitanje) Objasnite strategije testiranja mobilne aplikacije?
Odgovor: Ta se pitanja obično postavljaju ovisno o ulozi. Ako je uloga uglavnom rad na mobilnim aplikacijama, pitanje ima veću važnost. Iz svog iskustva možete razgovarati ako ste planirali mobilno testiranje kao dio svoje trenutne ili prethodne uloge.
Neki putokazi za strukturiranje odgovora na ovo pitanje mogu biti,
- Testiranje na uređajima vs emulatorima.
- Identificiranje i spremanje predmeta / elemenata na različite zaslone - Primjer: Model objekta stranice.
- Učitavanje testiranje mobilne aplikacije.
- Možete razgovarati o različitim vrstama mobilnih aplikacija kao što su - Izvorne aplikacije, Hibridne aplikacije i razgovarati o strategijama / pristupima koje biste koristili za njihovo testiranje.
Preporučena literatura => Vodiči za testiranje mobilnih aplikacija
P # 7) Dizajnirati okvir za automatizaciju za testiranje REST API-ja?
Odgovor: Ovo je opet subjektivno pitanje i možete postaviti razjašnjena pitanja želi li anketar da razvijete okvir za testiranje funkcionalnog ponašanja API-ja ili nefunkcionalne zahtjeve poput testiranja opterećenja / performansi.
Odgovor možete započeti pokrivajući sljedeće točke:
- Komponente okvira za automatizaciju API-ja poput Lokalnog postavljanja, Lažnog postavljanja API-ja ili Hosting API testiranja.
- Alati koji se koriste za API automatizaciju. Postoje različiti alati dostupni odmah za potvrdu funkcionalnih aspekata API-ja temeljenog na REST-u. Neki od takvih alata su Poštar, Budite sigurni, itd. Za detaljne detalje različitih alata možete se obratiti našem članku ovdje .
- Nefunkcionalna automatizacija API-ja.
- Planirano izvršavanje testova automatizacije.
- Integriranje testova automatizacije za API-je.
P # 8) Okvirna pitanja.
Odgovor: Ponekad, ovisno o profilu s kojim se razgovara, može postojati zahtjev da kandidat bude vješt u određenom okviru - npr. Selen, JMeter itd.
Preporučena literatura => Poštar , Mockito , Spektok , Selen , JMeter
U vezi s ispitivanjem
Iako rijetko, ali ovisno o profilu, mogu postojati pitanja oko općih praksi testiranja, pojmova i tehnologija - poput ozbiljnosti programskih pogrešaka, prioriteta, planiranja ispitivanja, kućišta testa itd. Očekuje se da SDET poznaje sve koncepte ručnog testiranja i trebao bi biti upoznat s važnim terminologijama.
U ovom odjeljku možete očekivati ovakva pitanja:
P # 9) Koje su različite komponente testa?
Odgovor: Od njih se obično traži da potvrde osnovne koncepte testiranja i način razmišljanja. Ovi su pojmovi i dokumenti nešto što bi svaki ručni QA, kao i SDET-ovi za automatizaciju trebali znati.
Ovdje možete razgovarati o raznim komponentama plana ispitivanja poput,
- Kriteriji ulaska i izlaska
- Opseg: Razgovarajte o testnim značajkama koje su u opsegu i što bi sve bilo automatizirano - Hoće li to biti samo funkcionalne značajke ili nefunkcionalni zahtjevi poput skalabilnosti, performansi itd.
- Vremenske crte
- Alati koji se koriste
- Raspodjela resursa, itd
Preporučena literatura => Kako napisati dobar plan ispitivanja
P # 10) Što definira i odlučuje o prioritetu i ozbiljnosti greške?
Odgovor: Prioritet i ozbiljnost nedostataka lako se mogu objasniti pomoću primjera. Pretpostavimo da je značajka poput prijave slomljena i sprečava korisnike da pristupe aplikaciji - onda je to problem visokog prioriteta i ozbiljnosti. Slično tome, mogu biti primjeri nedostataka niske težine / visokog prioriteta i razne druge kombinacije.
Općenito,
- Prioritet označava važnost problema.
- Ozbiljnost označava utjecaj koji problem ima na kupca ili korisnika aplikacije.
Preporučena literatura => Prioritet i ozbiljnost nedostataka
P # 11) Što je podjela ekvivalentnosti? Ilustrirajte na primjeru.
Odgovor: Ekvivalencijsko particioniranje je tehnika koja se uglavnom koristi za testiranje crne kutije, za testiranje različitih kombinacija ulaza prema danom polju.
Na primjer, ako testirate trgovinsku aplikaciju i želite napisati sve scenarije ispitivanja za polje 'Količina' - koji bi bili različiti ulazi koje biste testirali za ovo polje?
S obzirom na funkcionalni zahtjev da količina treba biti pozitivna cijela vrijednost između 1 i 100000. Dakle, da biste testirali različite ulaze (i važeće i nevaljane), možete imati testove za 1 unos iz svake takve kategorije.
- Važeće vrijednosti: Između 1 i 100000 -> testirajte bilo koju valjanu vrijednost x takvu da je x> 1 i x<100000.
- Granične vrijednosti: Ispitajte dopuštene granične vrijednosti, tj. 1 & 100000.
- Nevažeće vrijednosti: Vrijednosti koje se nalaze izvan dopuštenog raspona - tj. Testirajte jednu takvu vrijednost za x, takvu da je x 100000.
Preporučena literatura => Strategija podjele ekvivalentnosti
U vezi s dizajnom sustava
Pitanja o dizajnu sustava obično su prikladnija za razgovore s programerima gdje se programer procjenjuje na temelju širokog razumijevanja različitih općih koncepata - poput skalabilnosti, dostupnosti, tolerancije kvarova, odabira baze podataka, navoja itd. Ukratko, morat ćete upotrijebiti cijeli iskustvo i znanje o sustavu za odgovor na takva pitanja.
Ali možda osjećate da sustav za koji su potrebne godine iskustva i stotine programera za kodiranje, kako bi netko mogao odgovoriti na pitanje za oko 45 minuta?
Odgovor je: Ovdje se očekuje da se prosudi razumijevanje kandidata i širok spektar znanja koje on ili ona može primijeniti tijekom rješavanja složenih problema.
U današnje vrijeme ta se pitanja počinju bacati i u SDET-ovim intervjuima. Ovdje očekivanja ostaju ista kao i za intervju za programera, ali s opuštenim kriterijima prosudbe i uglavnom krugom podizanja ljestvice, gdje se, ovisno o odgovoru kandidata, kandidat može smatrati sljedećom razinom ili premjestiti na nižu razinu.
Općenito, za pitanja intervjua za dizajn sustava, kandidat bi trebao biti upoznat s donjim konceptima
- Osnove operativnih sustava: Paging, datotečni sustavi, virtualna memorija i fizička memorija itd.
- Koncepti umrežavanja: HTTP komunikacija, TCP / IP stog, mrežne topologije.
- Pojmovi skalabilnosti: Horizontalno i vertikalno skaliranje.
- Koncept podudarnosti / navoja
- Vrste baza podataka: SQL / Nema SQL baza podataka, kada koristiti koju vrstu baze podataka, prednosti i nedostaci različitih vrsta baza podataka.
- Tehnike raspršivanja
- Osnovno razumijevanje KAPA teorem, oštrina, particioniranje itd.
Pogledajmo nekoliko primjera pitanja
P # 12) Dizajnirajte sustav skraćivanja URL-ova poput maleni URL ?
Odgovor: Mnogi kandidati možda uopće ne znaju o sustavima skraćivanja URL-a. U tom slučaju, u redu je pitati anketara o izjavi problema, umjesto da zaronite bez razumijevanja.
Prije nego što uopće odgovore na takva pitanja, kandidati bi trebali strukturirati rješenje i napisati točke, a zatim započeti raspravu o rješenju s anketerom.
Razgovarajmo ukratko o rješenju
a) Pojasniti funkcionalne i nefunkcionalne zahtjeve
Funkcionalni zahtjevi: Funkcionalni zahtjev jednostavno je iz perspektive kupca, to je sustav koji se hrani velikim (dugačkim) URL-om, a izlaz bi trebao biti skraćeni URL.
Kada se pristupi skraćenom URL-u, trebao bi preusmjeriti korisnika na izvorni URL. Na primjer - pokušajte skratiti stvarni URL na https://tinyurl.com/ web stranici, unesite ulazni URL poput www.softwaretestinghelp.com i trebali biste dobiti mali URL poput https://tinyurl.com/shclcqa
Nefunkcionalni zahtjevi: Sustav bi trebao biti učinkovit u smislu preusmjeravanja s milisekundnim kašnjenjem (kao dodatni skok za korisnika koji pristupa izvornom URL-u).
- Skraćeni URL-ovi trebali bi imati podesivo vrijeme isteka.
- Skraćeni URL-ovi ne bi trebali biti predvidljivi.
b) Procjena kapaciteta / prometa
To je vrlo važno iz perspektive svih pitanja o dizajnu sustava. Procjena kapaciteta u osnovi određuje očekivano opterećenje koje će sustav dobiti. Uvijek je dobro započeti s pretpostavkom i razgovarati s anketerom. To je također važno iz perspektive planiranja veličine baze podataka, bilo da je sustav teški za čitanje ili za pisanje itd.
Napravimo neke brojeve kapaciteta za primjer skraćivača URL-a.
Pretpostavimo da će dnevno biti 100.000 novih zahtjeva za skraćivanje URL-a (s omjerom 100: 1 za čitanje i pisanje - tj. Za svaki 1 skraćeni URL imat ćemo 100 zahtjeva za čitanje za skraćeni URL)
Pa ćemo imati,
100k write requests/day => 100000/(24x60x60) => 1.15 request/second 10000k read requests/day => 10000000/(24x60x60) => 1157 requests/second
c) Razmatranje pohrane i memorije
Nakon brojeva kapaciteta, možemo ekstrapolirati te brojeve da dobijemo,
- Kapacitet skladišta koji bi bio potreban za prihvat očekivanog tereta, Na primjer, možemo planirati dizajnirati rješenje za pohranu kao podršku zahtjevima do 1 godine.
Primjer: Ako svaki skraćeni URL troši 50 bajtova, ukupni podaci / pohrana koji bismo trebali tijekom jedne godine bili bi:
=> total write requests/day x 365 x 50 / (1024x1024) => 1740 MB
- Razmatranje memorije važno je za planiranje sustava iz perspektive čitatelja. tj. za sustave koji su teški za čitanje - poput onog koji pokušavamo izgraditi (jer bi se URL stvorio jednom, ali bi mu se pristupilo više puta).
Teški sustavi za čitanje obično koriste predmemoriranje kako bi postali učinkovitiji i izbjegavali čitanje iz trajne pohrane radi uštede na I / O čitanju.
Pretpostavimo, želimo pohraniti 60% zahtjeva za čitanje u predmemoriju, tako da bi tijekom godine bilo potrebno 60% ukupnih čitanja tijekom godine x bajtova potrebnih za svaki unos
=> (60/100) x 100000 x 365 x (50/1024x1024) => 1045 MB ~ 1GB
Dakle, prema našim brojevima kapaciteta, ovaj bi sustav trebao oko 1 GB fizičke memorije
d) Procjene propusnosti
Procjene propusnosti potrebne su za analizu brzine čitanja i pisanja u bajtovima koje bi bile potrebne da bi se sustav izvodio. Izvršimo procjene prema brojevima kapaciteta koje smo uzeli.
Primjer: Ako svaki skraćeni URL troši 50 bajtova, ukupne brzine čitanja i pisanja koje bi nam trebale bile bi kao u nastavku:
WRITE - 1.15 x 50bytes = 57.5 bytes/s READS - 1157 x 50bytes = 57500 bytes/s => 57500 / 1024 => 56.15 Kb/s
e) Dizajn sustava i algoritam
Ovo je u osnovi glavna poslovna logika ili algoritam koji bi se koristio za ispunjavanje funkcionalnih zahtjeva. U ovom slučaju želimo generirati jedinstvene skraćene URL-ove za zadani URL.
Različiti pristupi koji se mogu koristiti za generiranje skraćenih URL-ova su:
Raspršivanje: Možemo smisliti generiranje skraćenih URL-ova tako što ćemo stvoriti raspršivanje ulaznog URL-a i dodijeliti hash ključ kao skraćeni URL.

Ovaj pristup može imati nekih problema kada postoje različiti korisnici usluge, a ako uđu isti URL, rezultirat će dobivanjem istog skraćenog URL-a.
Unaprijed stvorene skraćene žicei dodjeljuju se URL-ovima kada se zove usluga: Drugi pristup može biti vraćanje unaprijed definiranog skraćenog niza iz spremišta već generiranih nizova.

API-ji usluge: Sustav skraćivača URL-a možemo smatrati skupom API-ja temeljenih na REST-u koji imaju sljedeće krajnje točke:
- createUrl (URL niza, datum isteka vremena): Ova krajnja točka stvara i vraća skraćeni URL s trajanjem isteka postavljenim kako je navedeno u ulazu.
- retrieveUrl (Niz skraćeniUrl): Ova krajnja točka dohvaća URL koji će se preusmjeriti prema danom skraćenom URL-u.
f) skaliranje i istodobnost
Skaliranje je važno razmatranje iz perspektive nefunkcionalnih zahtjeva.
Bavi se kako sustav može
- Vaga pod opterećenjem: Sustav bi trebao moći graciozno skalirati pod opterećenjem, a ne samo prestati raditi nakon što se dogodi neočekivani skok opterećenja.
Preporučena literatura => Tehnike skaliranja
- Koliko sustav može biti učinkovit, na primjer: ako se sustav koristi dugotrajnog kapaciteta dulje vrijeme, hoće li se performanse sustava pogoršati ili će ostati stabilno?
Može biti puno različitih pitanja o dizajnu sustava kao u nastavku, ali općenito govoreći, sve bi to testiralo šire razumijevanje kandidata o različitim konceptima o kojima smo raspravljali u rješenju sustava skraćivanja URL-a.
P # 13) Dizajnirajte video platformu poput Youtubea.
Odgovor: Ovom se pitanju također može pristupiti, na sličan način kao što smo gore raspravljali o TinyUrl pitanju (a to se odnosi na gotovo sva pitanja o intervjuu za dizajn sustava). Jedan od faktora koji bi razlikovao bio bi razgledavanje / detaljno prikazivanje sustava koji želite dizajnirati.
Dakle, za Youtube svi znamo njegovu aplikaciju za video streaming i ima puno mogućnosti poput dopuštanja korisniku da učitava nove videozapise, emitira web emisije uživo itd. Dakle, tijekom dizajniranja sustava trebali biste primijeniti potrebne komponente dizajna sustava. U tom ćemo slučaju možda trebati dodati komponente povezane s mogućnostima strujanja video zapisa.
Možete razgovarati o točkama poput,
- Pohrana: Kakvu biste bazu podataka odabrali za pohranu video sadržaja, korisničkih profila, popisa za reprodukciju itd.?
- Sigurnost i autentifikacija / autorizacija
- Predmemoriranje: Budući da bi streaming platforma poput youtube trebala biti učinkovita, predmemoriranje je važan čimbenik za dizajniranje bilo kojeg takvog sustava.
- Konkurencija: Koliko korisnika može paralelno strujati videozapise?
- Ostale funkcionalnosti platforme poput usluge preporuke videozapisa koja preporučuje / predlaže korisnicima sljedeće videozapise koje mogu pogledati itd.
P # 14) Dizajnirajte učinkovit sustav za upravljanje 6 dizala i osigurajte da osoba mora pričekati minimalno vrijeme dok čeka dolazak lifta ?
Odgovor: Ove su vrste pitanja o dizajnu sustava niže razine i očekivalo bi da kandidat prvo razmisli o sustavu dizala i navede sve moguće funkcije koje treba podržati te kao rješenje dizajnira / kreira klase i DB odnose / sheme.
Iz perspektive SDET-a, anketar bi samo očekivao glavne klase za koje mislite da bi ih imala vaša aplikacija ili sustav, a osnovne funkcije bi se obrađivale s predloženim rješenjem.
Pogledajmo razne funkcionalnosti sustava dizala koje bi se očekivale
Možete postaviti pojašnjenja poput
- Koliko ima katova?
- Koliko ima dizala?
- Jesu li sva dizala servisna / putnička dizala?
- Jesu li sva dizala konfigurirana za zaustavljanje na svakom katu?
Evo različitih slučajeva korištenja koji su primjenjivi za jednostavan sustav dizala:

Što se tiče osnovnih klasa / objekata ovog sustava, možete razmotriti sljedeće:
- Korisnik: Bavi se svim svojstvima korisnika i radnjama koje može poduzeti na objektu dizala.
- Lift: Lift Specifična svojstva poput visine, širine, serijskog_broja elevatora.
- Vrata dizala: Sve stvari povezane s vratima kao što su vrata, vrsta vrata, automatska ili ručna itd.
- Elevator_Button_Control: Različiti gumbi / komande dostupni u dizalu i različita stanja u kojima te kontrole mogu biti.
Kada završite s dizajniranjem klasa i njihovih odnosa, možete razgovarati o konfiguriranju DB shema.
Druga važna komponenta sustava dizala je Eventing System. Možete razgovarati o primjeni redova čekanja ili u složenijoj postavci stvaranjem tokova događaja pomoću Apache Kafke, gdje se događaji dostavljaju odgovarajućim sustavima na koje se treba postupati.
Eventing sustav važan je aspekt jer više korisnika (na različitim podovima) istodobno koristi lift. Stoga bi se zahtjevi korisnika trebali staviti u red čekanja i poslužiti prema konfiguriranoj logici u kontrolerima dizala.
P # 15) Dizajnirajte Instagram / Twitter / Facebook.
Odgovor: Sve su ove platforme na neki način povezane jer omogućavaju korisnicima da se na neki način povežu i dijele stvari putem različitih vrsta medija - poput poruka / videozapisa i chatova.
Dakle, za ove vrste aplikacija / platformi društvenih medija, trebali biste uključiti dolje navedene točke dok raspravljate o dizajniranju takvih sustava (uz ono što smo razgovarali o dizajniranju sustava za skraćivanje URL-a):
- Procjena kapaciteta: Većina tih sustava bila bi teška za čitanje, stoga je potrebna procjena kapaciteta i omogućila bi nam da osiguramo odgovarajuću konfiguraciju poslužitelja i baze podataka da služi potrebnom opterećenju.
- DB shema: Glavne važne DB sheme o kojima bi trebalo raspravljati su - Korisnički detalji, Korisnički odnosi, Sheme poruka, Sheme sadržaja.
- Poslužitelji za hosting video i slika: Većina tih aplikacija ima videozapise i slike koje korisnici dijele. Stoga poslužitelji za hosting video i slika trebaju biti konfigurirani prema potrebama.
- Sigurnost: Sve ove aplikacije trebale bi osigurati visoku razinu sigurnosti zahvaljujući podacima o korisniku / podacima o osobnom identitetu korisnika koje pohranjuju. Bilo kakav pokušaj hakiranja, SQL Injection ne bi trebao biti uspješan na ovim platformama, jer bi mogao koštati gubitka podataka milijuna kupaca.
Problemi temeljeni na scenariju
Problemi temeljeni na scenariju uglavnom su za ljude na starijoj razini, gdje se daju različiti scenariji u stvarnom vremenu, a kandidata pitaju njihova razmišljanja o tome kako će se nositi s takvom situacijom.
P # 16) S obzirom na to da kritični hitni popravak mora biti objavljen što je prije moguće - kakvu biste strategiju testiranja imali?
Odgovor: Eto, ovdje ispitivač u osnovi želi razumjeti
- Kako i kakve strategije testiranja možete smisliti?
- Koju biste pokrivenost učinili za hitni popravak?
- Kako biste provjerili valjanost hitnog popravka nakon implementacije? itd.
Da biste odgovorili na takva pitanja, mogli biste koristiti situacije iz stvarnog života ako biste se mogli povezati s problemom. Također biste trebali napomenuti da bez odgovarajućeg testiranja ne biste bili spremni pustiti bilo koji kôd u produkciju.
Za kritične popravke uvijek biste trebali raditi zajedno s razvojnim programerom i pokušati shvatiti na koja bi područja to moglo utjecati te pripremiti neproizvodno okruženje za kopiranje scenarija i testiranje ispravka.
Ovdje je također važno spomenuti da biste nastavili nadzirati popravak (pomoću alata za nadzor, nadzorne ploče, zapisnike itd.) Nakon postavljanja kako biste vidjeli bilo kakvo abnormalno ponašanje u proizvodnom okruženju i osigurali da nema negativnog utjecaja popravka koji je gotovo.
Mogla bi postojati i druga pitanja koja su uglavnom za razumijevanje perspektive kandidata na ispitivanje automatizacije, rokove isporuke itd. (A ta se pitanja mogu razlikovati od tvrtke do tvrtke, kao i staž uloge. Općenito se ta pitanja postavljaju na višu / vodeću razinu uloge)
P # 17) Biste li žrtvovali potpuno testiranje da biste brzo objavili proizvod?
Odgovor: Ta pitanja obično uključuju ispitivača da razumije vaše misli iz perspektive vodstva i koje su stvari oko kojih biste napravili kompromis i biste li bili spremni izdati proizvod s greškom umjesto kraćeg vremena.
Odgovori na ova pitanja trebaju se potkrijepiti stvarnim iskustvima kandidata.
Na primjer, mogli biste spomenuti da ste u prošlosti morali nazvati da biste objavili neki hitni popravak, ali ga nije bilo moguće testirati zbog nedostupnosti integracijskog okruženja. Dakle, izdali ste ga kontrolirano - izbacivanjem na manji postotak, a zatim praćenjem dnevnika / događaja, a zatim pokretanjem punog uvođenja itd.
P # 18) Kako biste kreirali strategiju automatizacije za proizvod koji uopće nema testove automatizacije?
Odgovor: Ovakve vrste pitanja su otvorenog tipa i općenito su dobro mjesto za vođenje rasprave onako kako vi želite. Također možete predstaviti svoje vještine, znanje i tehnološka područja koja su vaša snaga.
Na primjer, da biste odgovorili na ove vrste pitanja, možete navesti primjere Strategije automatizacije koju ste usvojili tijekom gradnje proizvoda u prošloj ulozi.
Na primjer, mogli biste spomenuti točke poput,
- Budući da je proizvod zahtijevao pokretanje automatizacije od nule, dobili ste dovoljno vremena za razmišljanje i dizajn odgovarajućeg okvira automatizacije odabirom jezika / tehnologije za koju je većina ljudi imala znanje kako bi izbjegla uvođenje novog alata i iskoristila postojeće znanje.
- Počeli ste s automatizacijom najosnovnijih funkcionalnih scenarija za koje se smatralo da su P1 (bez kojih nijedno izdanje ne može proći).
- Također ste razmišljali o testiranju performansi i skalabilnosti sustava putem automatiziranih alata za testiranje poput JMETER, LoadRunner itd.
- Razmišljali ste o automatizaciji sigurnosnih aspekata aplikacije kako su navedeni u OWASP Sigurnosni standardi.
- Integrirali ste automatizirane testove u cjevovod za izradu radi ranih povratnih informacija itd.
Team Fit & Culture Fit
Ovaj krug općenito ovisi o tvrtki. No, potreba / potreba ovog kruga je razumijevanje kandidata iz perspektive timske i organizacijske kulture. Svrha ovih pitanja je također razumjeti osobnost kandidata i njihov pristup radu / ljudima itd.
Generalno, HR i zapošljavanje menadžeri su ti koji provode ovu rundu.
Pitanja koja se obično pojavljuju tijekom ovog kruga su sljedeća:
P # 19) Kako rješavate sukobe unutar svoje trenutne uloge?
Odgovor: Daljnje objašnjenje ovdje je: pretpostavimo da imate sukob sa šefom ili neposrednim članovima tima, koje korake poduzimate za rješavanje tih sukoba?
Za ovu vrstu pitanja potkrijepite što više možete stvarnim primjerima koji su se mogli dogoditi u vašoj karijeri u trenutnoj ili prethodnoj organizaciji.
Možete spomenuti stvari poput:
- Volite što prije riješiti sve sukobe koji nastanu kao rezultat profesionalnih razloga (i zbog njih ne biste željeli utjecati na vaše osobne odnose).
- Možete spomenuti da uglavnom pokušavate učinkovito komunicirati i razgovarati / razgovarati s osobom pojedinačno kako biste riješili sve razlike / probleme.
- Možete spomenuti da biste, ako se stvari pogoršaju, zatražili pomoć starije osobe / vašeg menadžera i dobili njegove uloge.
Ostali primjeri pitanja o prilagođenosti tima / kulturi nalaze se u nastavku (na većinu njih treba odgovoriti na sličan pristup o kojem smo raspravljali za prethodno pitanje. Razgovor o stvarnim scenarijima ovdje je ključ jer ga anketar može povezati na bolji način kao dobro.
P # 20) Kakvu ravnotežu između poslovnog i privatnog života očekujete od nove uloge za koju smatrate da ste angažirani?
Odgovor: Budući da je Hiring Manager netko tko zna što ta uloga zahtijeva, koliko dodatnih napora ponekad može biti potrebno, tako da općenito anketar pokušava procijeniti jesu li vaša očekivanja radikalno različita od onoga što uloga očekuje.
Pretpostavimo da kažete da ne želite više prisustvovati noćnim sastancima, a uloga očekuje da imate veliku suradnju između tima koji sjedi u drugoj vremenskoj zoni, tada bi ispitivač mogao pokrenuti raspravu da su to očekivanja od uloge - hoćete li moći prilagoditi? itd.
Dakle, ovo je više ležeran razgovor, ali iz perspektive anketara, oni žele razumjeti vaša očekivanja kako bi ocijenili vašu kandidaturu za poziciju na kojoj se intervjuira.
P # 21) Osim posla, koji su vaši hobiji?
Odgovor: Ta su pitanja isključivo subjektivna i specifična za pojedinca, a općenito su korisna kako bi se kandidat osjećao opušteno i lako te pokrenuli neobavezne rasprave.
Općenito, odgovori na ova pitanja mogli bi biti poput - volite čitati određeni žanr, volite glazbu, dobili ste nagradu za neku dobrovoljnu / filantropsku aktivnost itd. Također, ta se pitanja uglavnom postavljaju u krugu ljudskih resursa (i rjeđe će biti zatražena od tehničke osobe).
P # 22) Koliko ste vremena spremni proaktivno posvetiti učenju novih alata i tehnologija?
Odgovor: Ovdje anketar procjenjuje vašu spremnost da naučite nove stvari ako vam se dobaci nešto neobično ili novo. Također anketaru daje do znanja da ste proaktivni? Jeste li spremni ulagati u sebe i svoju karijeru? itd.
Dakle, dok odgovarate na takva pitanja - budite iskreni i svoje odgovore potkrijepite primjerima - Na primjer, Mogli biste spomenuti da ste se prošle godine pojavili za Java certifikat i pripremili se izvan posla oduzimajući nekoliko sati svaki tjedan.
Zaključak
U ovom smo članku raspravljali o inženjeru softverskog razvoja u procesu ispitivanja i uzorcima pitanja koja se obično postavljaju od kandidata u različitim organizacijama i profilima. Općenito, SDET-ovi intervjui vrlo su široke naravi i uvelike ovise o tvrtki.
Ali postupci razgovora slični su onome što postoji za profil programera s većim naglaskom na okvire kvalitete i automatizacije.
Važno je shvatiti da su danas tvrtke manje usredotočene na bilo koji određeni jezik ili tehnologiju, već više na široko razumijevanje koncepata i sposobnost prilagodbe alatima / tehnologijama koje tvrtka traži.
Najljepše želje za vaš SDET intervju!
Preporučena literatura
- Što je SDET: znajte razliku između testera i SDET-a
- Intervjuirajte pitanja i odgovore
- Pitanja i odgovori za ispitivanje ETL-a
- Neka nezgodna ručna ispitivanja Pitanja i odgovori
- Spock intervju pitanja s odgovorima (najpopularnije)
- 25 najboljih agilnih testova za pitanja i odgovore na intervjue
- Top 32 najbolja pitanja i odgovori za intervju za datastage
- Top 20+ .NET intervjua s pitanjima i odgovorima