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

Anonim

Descărcați PDF

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.

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

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

3) Ce este reproiectarea software-ului?

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

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

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

  • Analiza cerințelor
  • Specificație
  • Arhitectura software
  • Implementare
  • Testarea
  • Documentație
  • Instruire și sprijin
  • întreținere

5) Care sunt modelele SDLC disponibile?

Modelul Cascadă, Modelul Spiral, Modelul Big-Bag, Modelul Iterativ și Modelul V sunt câteva dintre celebrele modele SDLC.

6) Ce este verificarea și validarea?

Verificare:

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

Validare:

Se referă la setul de activități care asigură faptul că software-ul a fost construit în funcție de nevoile clienților.

7) În procesul de dezvoltare software, care este semnificația depanării?

Depanarea este procesul care duce la eliminarea erorii. Este o parte foarte importantă a testării cu succes.

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

În software, securitatea dezvoltării este întotdeauna pe primul loc. Deci, dacă execuția programului este lentă, atunci voi încerca să identific motivul pentru căile complexității sale de timp.

9) Numiți două instrumente care sunt utilizate pentru a urmări cerințele software-ului?

Există multe modalități de a urmări cerințele.

Două frecvent utilizate sunt:

  • Realizați un document cu specificațiile cerințelor pentru a enumera toate cerințele.
  • Creați o foaie Excel cu lista cerințelor, tipului, dependenței, priorității etc.

10) Care este principala diferență între un butuc, o batjocură?

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

11) Ce limbaj îți place să scrii algoritmi de programare?

Fiecare dezvoltator își are punctul de vedere atunci când vine vorba de opțiunile de limbaj de programare. Totuși, ar trebui să preferăm limbajele de nivel înalt, deoarece sunt dinamice. La fel ca limbajele C și C ++.

12) Ce este software-ul pentru computer?

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

13) Potrivit dvs., care model SDLC este cel mai bun?

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

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

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

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

15) Ce se înțelege prin domeniul software?

Domeniul software este o graniță bine definită. Include tot felul de activități care se fac pentru a dezvolta și livra produsul software.

Domeniul software definește toate funcționalitățile și artefactele care urmează să fie livrate ca parte a software-ului. Scopul identifică și 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 se găsește dimensiunea unui produs software?

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

  • Numărarea liniilor codului livrat
  • Numărarea punctelor funcționale livrate

17) Care sunt punctele funcționale?

Punctele funcționale 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 descompunerii
  • Tehnica empirică

19) Ce este managementul configurației software?

Gestionarea 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 coerente și create folosind reguli și reglementări organizaționale.

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

Putem măsura execuția proiectului folosind Monitorizarea activității, rapoartele de stare și listele de verificare a etapelor de referință.

21) Povestește-mi despre unele instrumente de gestionare a proiectelor.

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ă, a funcționalităților și caracteristicilor sale.

23) Ce este studiul de fezabilitate?

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

  1. Economic: include costul instruirii, costul suplimentar și al instrumentelor și estimarea generală a costurilor și beneficiilor proiectului.

  2. Tehnic: Evaluează aspectul tehnic. Este posibil să dezvoltăm acest sistem? Evaluarea adecvării mașinii și sistemului de operare pe care va executa software-ul, cunoașterea dezvoltării software-ului și a instrumentelor disponibile pentru acest proiect.

  3. Operațional: Aici analistul trebuie să evalueze că organizația va putea să se adapteze fără probleme la modificările făcute conform cererii pentru proiect. 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 care sunt așteptate de utilizatori din produsul software propus.

Cerințele nefuncționale sunt legate de securitatea, performanța, aspectul și simțul 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. Valori de cerință: cerințe de lungime, completitudine
  2. Valori de produs: Număr de linii de codare, valori orientate pe obiecte, valori de proiectare și testare.

26) Ce este modularizarea?

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

27) Ce este coeziunea?

Coeziunea este o măsură care definește fiabilitatea intra dintre elementele modulului.

28) Menționează unele instrumente de analiză și proiectare software?

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

  • Diagramele fluxului de date
  • Diagramele structurate
  • Engleză structurată
  • Dicționar de date
  • Diagrama de ieșire a procesului de intrare ierarhică
  • Diagrame de relații cu entități și tabele de decizie

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

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

30) Care este diferența majoră între engleza structurată și codul Pseudo?

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

31) Ce este proiectarea structurată?

Proiectarea structurată este o conceptualizare a problemei. De asemenea, s-a numit proiectarea soluției și care se bazează pe strategia „împarte și cucerește”.

32) Ce este programarea funcțională?

Este o metodă de programare, care folosește conceptele unei funcții matematice. Oferă mijloace de calcul ca funcții matematice, care produc și rezultate, indiferent de starea programului.

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

Asigurarea calității verifică dacă este urmat un proces adecvat î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ă inginerie software asistată de computer. Acestea sunt set de programe de aplicații software automatizate, care sunt utilizate pentru a sprijini, îmbunătăți și întări activitățile SDLC.

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

Metoda de inginerie software a camerei curate elimină defectele înainte ca software-ul să aibă probleme.

36) Rezolvați această problemă

Există douăzeci de șosete diferite de două tipuri într-un sertar într-o singură cameră întunecată. Care este numărul minim de șosete pe care trebuie să le 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%. Șansele nu sunt niciodată o realitate egală. Prin urmare, singura modalitate de „a vă 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 care 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 computer. Într-un singur program este posibil să aveți 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 dinamic. Este un depozit de cod extern pentru programe. Deoarece ambele sunt programe diferite, refolosiți același DLL în loc să aveți acel cod în fișierul lor. De asemenea, reduce spațiul de stocare necesar.

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

Tastarea puternică verifică tipurile de variabile la momentul compilării. Pe de altă parte, tastarea slabă verifică tipurile de sistem în timpul rulării. Dintre acestea, tastarea puternică este întotdeauna preferată, deoarece reduce la minimum bug-urile.

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

  • Programarea interfeței este bazată pe contract.
  • Orientat pe obiecte este un mod de a scrie obiecte granulare care au un singur scop.
  • Programarea orientată spre aspect este separarea codului în așa fel încât diverse obiecte să poarte sarcinile principale, iar sarcinile subsidiare să fie efectuate de obiecte independente.

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

Este o idee proastă pentru că:

  • Deoarece nu există nicio variabilă definită, nu este posibil să citiți excepția
  • Este bine să utilizați o excepție când ați cunoscut tipuri de excepții.

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

Scriptul și metadatele au fost 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 proiectarea orientată pe obiecte și cea bazată pe componente?

Proiectarea orientată pe obiecte poate fi ușor încapsulată într-o oarecare măsură în proiectarea bazată pe componente.

46) Când folosiți polimorfismul?

Polimorfismul este utilizat atunci când este nevoie de funcționalitate de suprascriere la moștenirea clasei. Este vorba despre clase partajate și contracte comune.

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

  • Coada este întotdeauna First In, First Out
  • Stiva este întotdeauna Last In, First Out

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

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

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

Potrivit meu, î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 așa ceva. Cu toate acestea, ramurile sunt șterse atunci când aceste 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 pentru orice subclasă derivată din clasa de bază.

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

Da. Mai multe blocuri de captură 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ă dintr-o clasă abstractă, dar nu toate metodele abstracte au fost anulate.
  2. În cazul în care minimum una dintre metodele din clasă este declarată ca abstract.

54) Elaborați un algoritm care afișează locația dvs. curentă și o listă a locațiilor ATM-urilor din acea zonă. Obțineți cele mai apropiate AT-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 pq = new PriorityQueue((x,y)-> {Double z = y-x;return z.intValue(); });PrioRQueueExample pqe = new PrioRQueueExample();//Number of ATMs to return i.e. Kint num_ATMs = 3;double curr_loc = 0.00;Map nallATMLocs = new HashMap();//Map of ATM names and their distance co-ordinatesnallATMLocs.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;}}