50 Pitanja i odgovori za intervju za softversko inženjerstvo

Ovdje su pitanja i odgovori na intervjuu za softversko inženjerstvo za svježije kao i iskusne kandidate koji će dobiti posao iz snova.

 

Pitanja i odgovori za intervju za programere softvera za brucoše

1) Koje su važne kategorije softvera?

  • softverski sustav
  • Aplikacijski softver
  • Ugrađeni softver
  • Web aplikacije
  • Softver za umjetnu inteligenciju
  • Znanstveni softver.

👉 Besplatno preuzimanje PDF-a: Pitanja i odgovori za intervju za softversko inženjerstvo


2) Koja je glavna razlika između računalnog programa i računalnog softvera?

Računalni program je dio programskog koda. Obavlja dobro definiran zadatak. S druge strane, softver uključuje programski kod, dokumentaciju i korisnički priručnik.


3) Što je reinženjering softvera?

To je proces razvoja softvera koji se radi kako bi se poboljšala mogućnost održavanja softverskog sustava.

Pitanja softverskog inženjerstva


4) Ukratko opišite proces razvoja softvera:

Životni ciklus razvoja softvera sastoji se od sljedećih faza:

  • Analiza zahtjeva
  • Specifikacija
  • Arhitektura softvera
  • Izvršenje
  • Ispitivanje
  • Dokumentacija
  • Obuka i podrška
  • održavanje

5) Koji su SDLC modeli dostupni?

Model vodopada, spiralni model, model velike vreće, iterativni model i V-model neki su od poznatih SDLC modeli.


6) Što je verifikacija i validacija?

Provjera:

Provjera je pojam koji se odnosi na skup aktivnosti koje osiguravaju da softver implementira određenu funkciju.

Provjera valjanosti:

Odnosi se na skup aktivnosti koje osiguravaju softver koji je izgrađen prema potrebama klijenata.


7) Koje je značenje otklanjanja pogrešaka u procesu razvoja softvera?

Otklanjanje pogrešaka je proces koji rezultira uklanjanjem pogreške. To je vrlo važan dio uspješnog testiranja.


8) Kako možete biti sigurni da je vaš kod siguran i brz?

U softveru je sigurnost razvoja uvijek na prvom mjestu. Dakle, ako je izvođenje programa tada sporo, pokušat ću identificirati razlog i pronaći načine njegove vremenske složenosti.


9) Navedite dva alata koji se koriste za praćenje softverskih zahtjeva?

Postoji mnogo načina za praćenje zahtjeva.

Dvije najčešće korištene su:

  • Napravite dokument sa specifikacijama zahtjeva za popis svih zahtjeva.
  • Napravite Excel tablicu s popisom zahtjeva, tipa, ovisnosti, prioriteta itd.

10) Koja je glavna razlika između zaglavlja i mocka?

Stup je minimalna implementacija sučelja koje općenito vraća hardcoded podatke dok mock obično provjerava rezultate u odnosu na očekivanja. Ta su očekivanja postavljena u testu.


11) Na kojem jeziku volite pisati programske algoritme?

Svaki programer ima svoje stavove kada je riječ o izboru programskog jezika. Ipak, treba dati prednost jezicima visoke razine jer su dinamični. Kao C i C++ jezici.


12) Što je računalni softver?

Računalni softver je paket koji uključuje softverski program, njegovu dokumentaciju i korisnički priručnik o korištenju softvera.


13) Prema vama, koji je SDLC model najbolji?

Ne postoji takvo rangiranje jer se SDLC modeli usvajaju prema potrebi za razvojnim procesom. Može se razlikovati od softvera do softvera.


14) Tko je voditelj softverskog projekta? Koja je njegova uloga?

Voditelj softverskog projekta je osoba odgovorna za upravljanje projektom razvoja softvera.

Voditelj projekta radi planiranje projekta, prati napredak, komunikaciju. On ili ona također upravlja rizicima i resursima kako bi isporučio projekt unutar ograničenja vremena, troškova i kvalitete.


15) Što se podrazumijeva pod opsegom softvera?

Opseg softvera je dobro definirana granica. Uključuje sve vrste aktivnosti koje se provode za razvoj i isporuku softverskog proizvoda.

Opseg softvera definira sve funkcionalnosti i artefakte koji se isporučuju kao dio softvera. Opseg također identificira što će proizvod učiniti? Što nije dio projekta? Što je procjena projekta?

Ovaj postupak je koristan za procjenu različitih aspekata softverskog proizvoda. O ovoj se procjeni može odlučiti ili konzultirajući stručnjake ili korištenjem unaprijed definiranih formula.


16) Kako pronaći veličinu softverskog proizvoda?

Veličina softverskog proizvoda može se izračunati pomoću sljedeće dvije metode

  • Brojanje redaka isporučenog koda
  • Brojanje isporučenih funkcijskih bodova

17) Što su funkcijske točke?

Funkcijske točke su značajke koje pruža softverski proizvod. Smatra se najvažnijom mjerom za veličinu softvera.


18) Koje su dostupne tehnike procjene softverskog projekta?

Najčešće korištene tehnike procjene su:

  • Tehnika razgradnje
  • Empirijska tehnika

19) Što je upravljanje konfiguracijom softvera?

Upravljanje konfiguracijom softvera proces je praćenja i kontrole promjena koje se događaju u softveru.

Kontrola promjena je funkcija koja osigurava da su sve promjene napravljene u softverskom sustavu dosljedne i kreirane korištenjem organizacijskih pravila i propisa.


20) Kako možete mjeriti izvršenje projekta?

Možemo mjeriti izvršenje projekta pomoću praćenja aktivnosti, izvješća o statusu i popisa za provjeru prekretnica.


21) Recite mi nešto o alatima za upravljanje projektima.

Postoje mnoge vrste alata za upravljanje koji se koriste prema potrebi softverskog projekta. Neki od njih su Pert grafikon, Gantogram, histogram resursa, izvješća o statusu itd.


22) Koji su softverski zahtjevi?

Softverski zahtjevi su funkcionalni opis predloženog softverskog sustava. Pretpostavlja se da je to opis ciljnog sustava, njegovih funkcionalnosti i značajki.


23) Što je studija izvodljivosti?

To je mjera kojom se utvrđuje koliko će se razvoj softverskog projekta pokazati praktičnim i korisnim za organizaciju. Softverski analizator provodi studiju kako bi saznao ekonomsku, tehničku i operativnu izvedivost projekta.

  1. Ekonomski: Uključuje troškove obuke, troškove dodatnih alata i ukupnu procjenu troškova i koristi projekta.
  2. Tehnički: Ocjenjuje tehnički aspekt. Je li moguće razviti ovaj sustav? Procjena prikladnosti stroja(ova) i OS-a na kojem će se softver izvršavati, poznavanje razvoja softvera i alata dostupnih za ovaj projekt.
  3. Operacionalno: Ovdje analitičar treba procijeniti hoće li se organizacija moći glatko prilagoditi promjenama koje su učinjene prema zahtjevima za projekt. Je li problem vrijedan rješavanja uz procijenjeni trošak?

Nakon proučavanja svega ovoga kreira se konačno izvješće o izvodljivosti.


24) Što su funkcionalni i nefunkcionalni zahtjevi?

Funkcionalni zahtjevi su funkcionalne značajke koje korisnici očekuju od predloženog softverskog proizvoda.

Nefunkcionalni zahtjevi povezani su sa sigurnošću, performansama, izgledom i dojmom korisničkog sučelja.


25) Što je softverska metrika?

Software Metrics nudi mjere za različite aspekte softverskog procesa koji se dijele na:

  1. Mjere zahtjeva: Zahtjevi za duljinu, cjelovitost
  2. Mjerila proizvoda: Broj linija kodiranja, Objektno orijentirana metrika, metrika dizajna i testiranja.

26) Što je modularizacija?

Modularizacija je tehnika koja se koristi za podjelu softverskog sustava na različite diskretne module. Od njega se očekuje da samostalno izvršava zadatke.


27) Što je kohezija?

Kohezija je mjera koja definira unutarnju ovisnost među elementima modula.


28) Spominje neke alate za analizu i dizajn softvera?

Neki od najvažnijih alata za analizu i dizajn softvera su:

  • Dijagrami protoka podataka
  • Strukturirani grafikoni
  • Strukturirani engleski
  • Rječnik podataka
  • Hijerarhijski dijagrami ulaznog procesa izlaza
  • Dijagrami odnosa entiteta i tablice odluka

29) Što znači dijagram toka podataka razine 0?

Najviša razina apstrakcije naziva se razina 0 DFD-a. Također se naziva DFD na razini konteksta. Prikazuje cijeli informacijski sustav kao jedan dijagram.


30) Koja je glavna razlika između strukturiranog engleskog i pseudo koda?

Strukturirani engleski je materinji engleski jezik. Koristi se za pisanje strukture programskog modula. Koristi ključne riječi programskog jezika. S druge strane, Pseudo Code je više nalik na programski jezik bez sintakse bilo kojeg specifičnog jezika.


Software Engineering viva Pitanja i odgovori za iskusne

31) Što je strukturirani dizajn?

Strukturirani dizajn je konceptualizacija problema. Također se zove dizajn rješenja i temelji se na strategiji 'podijeli pa vladaj'.


32) Što je funkcionalno programiranje?

To je metoda programiranja koja koristi koncepte matematičke funkcije. Omogućuje sredstva za računanje kao matematičke funkcije, koje također proizvode rezultate bez obzira na stanje programa.


33) Što je osiguranje kvalitete naspram kontrole kvalitete?

Osiguranje kvalitete provjerava slijedi li se odgovarajući proces tijekom razvoja softvera, dok se kontrola kvalitete bavi održavanjem kvalitete softverskog proizvoda.


34) Što su CASE alati?

CASE znači računalno podržano Programsko inženjerstvo. Oni su skup automatiziranih softverskih aplikacijskih programa koji se koriste za podršku, poboljšanje i jačanje SDLC aktivnosti.


35) Koji procesni model uklanja nedostatke prije nego softver upadne u probleme?

Metoda softverskog inženjeringa čiste sobe uklanja nedostatke prije nego što softver upadne u probleme.


36) Riješite ovaj problem

U ladici jedne mračne sobe nalazi se dvadeset različitih čarapa dvije vrste. Koji je minimalni broj čarapa koje trebate ponijeti da biste bili sigurni da imate odgovarajući par?"

Ako uzmete tri čarape, one mogu biti iste vrste čak i ako su izgledi 50%. Šanse nikad jednake realnosti. Stoga je jedini način da 'osigurate da imate odgovarajući par' uzeti najmanje 11 šokova.


37) Kako možete osigurati da vaš napisani kod može riješiti različite vrste grešaka?

Mogu napisati testove koji definiraju očekivane situacije pogreške.


38) Objasnite razlike između niti i procesa?

Proces je instanca računalnog programa. U jednom programu moguće je imati jednu ili više niti.


39) Recite mi razliku između EXE i DLL-a?

Exe je izvršni program dok je DLL datoteka koju programi mogu dinamički učitati i izvršavati. To je vanjsko spremište koda za programe. Budući da su oba različita programa, ponovno upotrijebite isti DLL umjesto da imate taj kod u njihovoj datoteci. Također smanjuje potreban prostor za pohranu.


40) Što je jako, a što slabo tipiziranje? Što je poželjno? Zašto?

Snažno tipkanje provjerava tipove varijabli tijekom kompajliranja. S druge strane, slabo tipkanje provjerava tipove sustava tijekom izvođenja. Među njima, Strong typing je uvijek poželjan jer minimizira bugove.


41) Opišite razliku između programiranja orijentiranog na sučelje, orijentiranog na objekte i orijentiranog na aspekt.

  • Programiranje sučelja temelji se na ugovoru.
  • Objektno orijentirano je način pisanja granularnih objekata koji imaju jednu svrhu.
  • Aspektno orijentirano programiranje je razdvajanje koda na takav način da različiti objekti nose glavne zadatke, a pomoćne zadatke nose nezavisni objekti.

42) Zašto je korištenje catch (exception) uvijek loša ideja?

To je loša ideja jer:

  • Budući da nema definirane varijable, nije moguće pročitati iznimku
  • Dobro je koristiti iznimku kada poznajete vrste iznimki.

43) Koja vrsta podataka se prosljeđuje putem HTTP zaglavlja?

Skripta i metapodaci proslijeđeni putem HTTP zaglavlja.


44) Kako određujete prioritete zahtjeva?

Prvo morate dizajnirati sustav procjenom strukture podataka. Zatim biste trebali prijeći na strukturu koda potrebnu za njegovu podršku.


45) Recite mi razlike između objektno orijentiranog dizajna i dizajna temeljenog na komponentama?

Objektno orijentirani dizajn može se lako do određenog stupnja enkapsulirati u dizajn temeljen na komponentama.


46) Kada koristite polimorfizam?

Polimorfizam se koristi kada postoji potreba za funkcionalnošću nadjačavanja pri nasljeđivanju klase. Radi se o zajedničkim klasama i zajedničkim ugovorima.


47) Koja je razlika između hrpa i reda?

  • Red čekanja je uvijek prvi ušao, prvi izašao
  • Stog je uvijek zadnji ušao, prvi izašao

48) Što je bitno za testiranje kvalitete koda?

Po meni, okvir za jedinično testiranje je bitan za testiranje kvalitete koda.


49) Mislite li da je održavanje softvera skupo?

Po meni, održavanje softvera nikada neće biti skupo ako koristimo pravilan proces razvoja.


50) Recite mi razlike između oznaka i grana?

Oznake su za izdanja verzija koja su privremena mjesta za zadržavanje za takve stvari. Međutim, grane se brišu kada se te promjene spoje u deblo.


51) Gdje je dostupna zaštićena varijabla na razini klase?

Zaštićene varijable na razini klase dostupne su svakoj potklasi izvedenoj iz osnovne klase.


52) Je li moguće izvršiti više catch blokova za jednu naredbu try?

Da. Za jednu naredbu pokušaja može se izvršiti više catch blokova.


53) Kada klasu trebate deklarirati kao apstraktnu?

Klasu bismo trebali proglasiti apstraktnom u sljedećim situacijama:

  1. Kada je klasa naslijeđena od apstraktne klase, ali nisu nadjačane sve apstraktne metode.
  2. U slučaju kada je minimalno jedna od metoda u klasi deklarirana kao apstraktna.

54) Razvijte algoritam koji ispisuje vašu trenutnu lokaciju i popis lokacija bankomata u tom području. Nabavite K bankomate najbliže svojoj lokaciji.

Napravite metodu getDistance(a, b) koja izračunava udaljenost između a i b.

Kodirati:

import java.util.HashMap;

import java.util.Map;

import java.util.PriorityQueue;

public class PrioRQueueExample {

public static void main(String[] args){

PriorityQueue<Double> pq = new PriorityQueue<Double>((x,y)-> {Double z = y-x;return z.intValue(); });

PrioRQueueExample pqe = new PrioRQueueExample();

//Number of ATMs to return i.e. K

int num_ATMs = 3;

double curr_loc = 0.00;

Map<String,Double> nallATMLocs = new HashMap<String,Double>();

//Map of ATM names and their distance co-ordinates

nallATMLocs.put("atm1",45.0);

nallATMLocs.put("atm2",78.0);

nallATMLocs.put("atm3",54.0);

nallATMLocs.put("atm4",64.0);

nallATMLocs.put("atm5",35.0);

nallATMLocs.put("atm6",42.0);

nallATMLocs.put("atm7",57.0);

nallATMLocs.put("atm7",1.00);

nallATMLocs.forEach((atm,dist) ->{if(pq.size() < num_ATMs){

pq.add(pqe.getLocation(curr_loc,dist));}

else{

if(        pq.peek() > pqe.getLocation(curr_loc,dist)){

pq.poll();

pq.add(pqe.getLocation(curr_loc,dist));

}

}

});

pq.forEach(atmLoc -> System.out.println(atmLoc));

}

private double getLocation(double curr,double atm){

return atm - curr;

}

}

Ova pitanja za intervju također će vam pomoći u vašem životu