50 Întrebări și răspunsuri la interviu de inginerie software

Iată întrebările și răspunsurile la interviu pentru Inginerie software pentru candidații mai proaspeți, precum și cu experiență, pentru a obține jobul visat.

 

Întrebări și răspunsuri la interviu pentru dezvoltatori de software pentru Freshers

1) Care sunt categoriile importante de software?

  • Programul sistemului
  • Software de aplicație
  • Software încorporat
  • Aplicații Web
  • Software de inteligență artificială
  • Software științific.

👉 Descărcare PDF gratuită: Întrebări și răspunsuri la interviu de inginerie software


2) Care este principala diferență dintre un program de calculator și un software de calculator?

Un program de calculator este o bucată de cod de programare. Îndeplinește o sarcină bine definită. Pe de altă parte, software-ul include cod de programare, documentație și ghid de utilizare.


3) Ce este reingineria software-ului?

Este un proces de dezvoltare software care se realizează pentru a îmbunătăți mentenabilitatea unui sistem software.

Întrebări de inginerie software


4) Descrieți pe scurt procesul de dezvoltare a software-ului:

Dezvoltarea software-ului este un ciclu de viață compus din următoarele etape:

  • Analiza cerințelor
  • Specificație
  • Arhitectura software
  • Punerea în aplicare
  • Testarea
  • Documentație
  • Instruire și sprijin
  • Mentenanță

5) Care sunt modelele SDLC disponibile?

Modelul cascadă, modelul în spirală, modelul Big-bag, modelul iterativ și modelul V sunt unele dintre cele mai faimoase Modele SDLC.


6) Ce este verificarea și validarea?

Verificare:

Verificarea este un termen care se referă la ansamblul de activități care asigură că software-ul implementează o anumită funcție.

Validare:

Se referă la ansamblul de activități care asigură acel software care a fost construit în funcție de nevoile clienților.


7) În procesul de dezvoltare software, care este sensul depanării?

Depanarea este procesul care are ca rezultat eliminarea erorilor. Este o parte foarte importantă a testării de succes.


8) Cum vă puteți asigura că codul dvs. este atât sigur, cât și rapid?

În software, securitatea dezvoltării este întotdeauna pe primul loc. Deci, dacă execuția programului este lentă, voi încerca să identific motivul pentru a ajunge la complexitatea timpului său.


9) Numiți două instrumente care sunt utilizate pentru a ține evidența cerințelor software?

Există multe modalități de a ține evidența cerințelor.

Două utilizate în mod obișnuit sunt:

  • Realizați un document cu specificațiile cerințelor pentru a enumera toate cerințele.
  • Creați o foaie Excel cu lista de cerințe, tip, dependență, prioritate etc.

10) Care este principala diferență dintre un stubs, un mock?

Un stub este o implementare minimă a unei interfețe care, în general, returnează date hardcoded, în timp ce mock verifică de obicei ieșirile față de așteptări. Aceste așteptări sunt stabilite în test.


11) În ce limbă vă place să scrieți algoritmi de programare?

Fiecare dezvoltator are opiniile sale când vine vorba de alegerile limbajului de programare. Cu toate acestea, ar trebui să preferați limbile de nivel înalt, deoarece sunt dinamice. Ca C și C++ limbi.


12) Ce este software-ul de calculator?

Software-ul de calculator este un pachet care include un program software, documentația acestuia și ghidul utilizatorului despre modul de utilizare a software-ului.


13) După dumneavoastră, care model SDLC este cel mai bun?

Nu există o astfel de clasare, deoarece modelele SDLC sunt adoptate în funcție de necesitatea procesului de dezvoltare. Poate diferi de la software la software.


14) Cine este managerul de proiect software? Care este rolul lui?

Un manager de proiect software este o persoană responsabilă cu gestionarea proiectului de dezvoltare software.

Managerul de proiect face planificarea proiectului, monitorizează progresul, comunică. El sau ea gestionează, de asemenea, riscurile și resursele pentru a livra proiectul în limitele de timp, cost și calitate.


15) Ce se înțelege prin domeniul de aplicare al software-ului?

Domeniul de aplicare al software-ului este o graniță bine definită. Include tot felul de activități care sunt realizate pentru a dezvolta și livra produsul software.

Domeniul de aplicare al software-ului definește toate funcționalitățile și artefactele care urmează să fie livrate ca parte a software-ului. Domeniul de aplicare identifică, de asemenea, ce va face produsul? Care nu este partea proiectului? Ce este estimarea proiectului?

Acest proces este util pentru estimarea diferitelor aspecte ale produsului software. Această estimare poate fi decisă fie consultând experți, fie utilizând formule predefinite.


16) Cum să găsiți dimensiunea unui produs software?

Dimensiunea produsului software poate fi calculată utilizând următoarele două metode

  • Numărarea liniilor de cod livrat
  • Numărarea punctelor funcționale livrate

17) Ce sunt punctele funcționale?

Punctele de funcționare sunt caracteristicile furnizate de produsul software. Este considerată cea mai importantă măsurătoare pentru dimensiunea software-ului.


18) Care sunt tehnicile de estimare a proiectelor software disponibile?

Cele mai utilizate tehnici de estimare sunt:

  • Tehnica de descompunere
  • Tehnica empirică

19) Ce este managementul configurației software?

Managementul configurației software este un proces de urmărire și control al modificărilor care au loc în software.

Controlul modificărilor este o funcție care asigură că toate modificările aduse sistemului software sunt consecvente și create folosind reguli și reglementări organizaționale.


20) Cum puteți măsura execuția proiectului?

Putem măsura execuția proiectului utilizând Monitorizarea activității, Rapoartele de stare și Listele de verificare a reperelor.


21) Povestește-mi despre câteva instrumente de management de proiect.

Există multe tipuri de instrumente de management utilizate în funcție de necesitatea unui proiect software. Unele dintre ele sunt Diagrama Pert, Diagrama Gantt, Histograma resurselor, Rapoartele de stare etc.


22) Care sunt cerințele software?

Cerințele software sunt o descriere funcțională a unui sistem software propus. Se presupune că este descrierea sistemului țintă, funcționalitățile și caracteristicile acestuia.


23) Ce este studiul de fezabilitate?

Este o măsură pentru a afla cât de practică și de benefică se va dovedi organizației dezvoltarea proiectului software. Analizatorul de software realizează un studiu pentru a cunoaște fezabilitatea economică, tehnică și operațională a proiectului.

  1. Economie: Acesta include costul instruirii, costurile suplimentare și instrumentele și estimarea generală a costurilor și beneficiilor proiectului.
  2. Tehnic: Evaluează aspectul tehnic. Este posibil să se dezvolte acest sistem? Evaluarea adecvării mașinii (mașinilor) și a sistemului de operare pe care software-ul va executa, cunoașterea dezvoltării software și a instrumentelor disponibile pentru acest proiect.
  3. Operational: Aici analistul trebuie să evalueze că organizația se va putea adapta fără probleme la schimbările efectuate în funcție de cererea proiectului. Merită rezolvată problema la costul estimat?

După ce, studiind toate acestea, se creează raportul final de fezabilitate.


24) Care sunt cerințele funcționale și nefuncționale?

Cerințele funcționale sunt caracteristici funcționale așteptate de utilizatori de la produsul software propus.

Cerințele nefuncționale sunt legate de securitate, performanță, aspectul și senzația interfeței cu utilizatorul.


25) Ce este metrica software?

Software Metrics oferă măsuri pentru diferite aspecte ale procesului software, care sunt împărțite în:

  1. Măsuri de cerință: cerințe de lungime, completitudine
  2. Valori de produs: Număr de linii de codare, metrici orientate pe obiecte, metrici de proiectare și testare.

26) Ce este modularizarea?

Modularizarea este o tehnică care este utilizată pentru împărțirea unui sistem software în diverse module discrete. Este de așteptat să îndeplinească sarcinile în mod independent.


27) Ce este coeziunea?

Coeziunea este o măsură care definește intra-dependența dintre elementele modulului.


28) Menționează câteva instrumente de analiză și proiectare software?

Unele dintre cele mai importante instrumente de analiză și proiectare software sunt:

  • Diagrame de flux de date
  • Diagrame Structurate
  • Engleză structurată
  • Dicționar de date
  • Diagrame ierarhice de intrare a procesului de ieșire
  • Diagrame de relații cu entitate și tabele de decizie

29) Ce se înțelege prin diagrama fluxului de date de nivel-0?

Cel mai înalt nivel de abstractizare se numește Nivelul 0 al DFD. Se mai numește și DFD la nivel de context. Acesta prezintă întregul sistem informațional ca o singură diagramă.


30) Care este diferența majoră dintre engleza structurată și pseudocodul?

Engleza structurată este limba engleză maternă. Este folosit pentru a scrie structura unui modul de program. Folosește cuvinte cheie în limbajul de programare. Pe de altă parte, pseudocodul seamănă mai mult cu limbajul de programare fără sintaxă a unui limbaj specific.


Inginerie software viva Întrebări și răspunsuri pentru cei cu experiență

31) Ce este designul structurat?

Designul structurat este o conceptualizare a problemei. Se mai numește și proiectarea soluției și care se bazează pe strategia „împărțiți și cuceriți”.


32) Ce este programarea funcțională?

Este o metodă de programare, care utilizează conceptele unei funcții matematice. Oferă mijloace de calcul ca funcții matematice, care, de asemenea, produce rezultate, indiferent de starea programului.


33) Ce este asigurarea calității vs. controlul calității?

Asigurarea calității verifică dacă procesul adecvat este urmat în timpul dezvoltării software-ului, în timp ce Controlul calității se ocupă de menținerea calității produsului software.


34) Ce sunt instrumentele CASE?

CASE înseamnă asistat de computer Inginerie Software. Acestea sunt un set de programe de aplicații software automatizate, care sunt utilizate pentru a sprijini, îmbunătăți și consolida activitățile SDLC.


35) Ce model de proces elimină defectele înainte ca software-ul să intre în probleme?

Metoda de inginerie software pentru camera curată elimină defectele înainte ca software-ul să intre în probleme.


36) Rezolvați această problemă

Există douăzeci de șosete diferite de două tipuri într-un sertar într-o cameră întunecată. Care este numărul minim de șosete pe care trebuie să-l luați pentru a vă asigura că aveți o pereche potrivită?”

Dacă ridicați trei șosete, acestea pot fi de același tip, chiar dacă șansele sunt de 50%. Cotele nu sunt niciodată o realitate egală. Prin urmare, singura modalitate de a „asigura că aveți o pereche potrivită” este să ridicați cel puțin 11 șocuri.


37) Cum vă puteți asigura că codul dvs. scris poate gestiona diferite tipuri de situații de eroare?

Pot scrie teste care definesc situațiile de eroare așteptate.


38) Explicați diferențele dintre un fir și un proces?

Un proces este o instanță a programului de calculator. Într-un singur program este posibil să existe unul sau mai multe fire.


39) Spune-mi diferența dintre un EXE și un DLL?

Un exe este un program executabil, în timp ce un DLL este un fișier care poate fi încărcat și executat de programe în mod dinamic. Este un depozit extern de cod pentru programe. Deoarece ambele sunt programe diferite, reutilizați același DLL în loc să aveți acel cod în fișierul lor. De asemenea, reduce spațiul necesar de depozitare.


40) Ce este tiparea puternică și tiparea slabă? Care este de preferat? De ce?

Tastarea puternică verifică tipurile de variabile în timpul compilării. Pe de altă parte, tastarea slabă verifică tipurile de sistem în timpul execuției. Printre acestea, tastarea puternică este întotdeauna preferată, deoarece minimizează erorile.


41) Descrieți diferența dintre programarea orientată pe interfață, orientată pe obiecte și orientată pe aspecte.

  • Programarea interfeței se bazează pe contract.
  • Orientat pe obiecte este o modalitate de a scrie obiecte granulare care au un singur scop.
  • Programarea orientată pe aspecte este de a segrega codul în așa fel încât diverse obiecte să poarte sarcinile principale, iar sarcinile secundare să fie efectuate de obiecte independente.

42) De ce folosirea catch (excepție) este întotdeauna o idee proastă?

Este o idee proastă pentru că:

  • Deoarece nu există o variabilă definită, nu este posibil să citiți excepția
  • Este bine să folosiți o excepție atunci când aveți tipuri de excepții cunoscute.

43) Ce tip de date sunt transmise prin anteturi HTTP?

Scriptul și metadatele transmise prin anteturi HTTP.


44) Cum prioritizați cerințele?

În primul rând, trebuie să proiectați un sistem prin evaluarea structurii datelor. Apoi ar trebui să treceți la structura de cod necesară pentru a o susține.


45) Dă-mi diferențe între designul orientat pe obiecte și cel bazat pe componente?

Designul orientat pe obiecte poate fi ușor încapsulat într-o anumită măsură în designul bazat pe componente.


46) Când folosiți polimorfismul?

Polimorfismul este folosit atunci când este nevoie de o funcționalitate de suprascriere atunci când moșteniți clasa. Este vorba despre cursuri comune și contracte comune.


47) Care este diferența dintre stivă și coadă?

  • Coada este întotdeauna primul întrat, primul ieşit
  • Stack este întotdeauna Last In, First Out

48) Ce este esențial pentru testarea calității codului?

După mine, cadrul de testare unitară este esențial pentru testarea calității codului.


49) Crezi că întreținerea software-ului este costisitoare?

După mine, întreținerea software-ului nu va fi niciodată costisitoare dacă folosim un proces de dezvoltare adecvat.


50) Dă-mi diferențe între etichete și ramuri?

Etichetele sunt pentru versiuni de versiuni care sunt locuri de păstrare temporare pentru a face astfel de lucruri. Cu toate acestea, ramurile sunt șterse atunci când acele modificări sunt îmbinate în trunchi.


51) Unde este disponibilă o variabilă protejată la nivel de clasă?

Variabilele protejate la nivel de clasă sunt disponibile oricărei subclase derivate din clasa de bază.


52) Este posibil să executați mai multe blocuri catch pentru o singură instrucțiune try?

Da. Mai multe blocuri catch pot fi executate pentru o singură instrucțiune try.


53) Când trebuie să declarați o clasă ca abstractă?

Ar trebui să declarăm o clasă ca abstractă în următoarele situații:

  1. Când clasa este moștenită de la o clasă abstractă, dar nu toate metodele abstracte au fost suprascrise.
  2. În cazul în care minim una dintre metodele din clasă este declarată abstract.

54) Dezvoltați un algoritm care scoate locația dvs. curentă și o listă cu locațiile ATM-urilor din acea zonă. Obțineți cele mai apropiate ATM-uri K de locația dvs.

Creați o metodă getDistance(a, b) care calculează distanța dintre a și b.

Cod:

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;

}

}

Aceste întrebări de interviu vă vor ajuta, de asemenea, în viva (orale)

Rezumați această postare cu: