Întrebări și răspunsuri la interviu pentru Inginerie software [Pentru cei proaspăți și cu experiență]
Publicat: 2020-11-18Ingineria software este una dintre cele mai căutate alegeri de carieră astăzi. Profesioniștii de succes în acest domeniu competitiv trebuie să își echilibreze abilitățile tehnice, de afaceri și personale pentru a rămâne în frunte în joc.
În plus, progresul tehnologic accelerează și perturbă industriile. Deci, este esențial să fii la curent cu conceptele fundamentale. Prin acest articol, vom atinge cele mai importante întrebări și răspunsuri la interviul de inginerie software pentru a vă ghida în pregătirea dumneavoastră.
Înainte de a trece la întrebări și răspunsuri, mai întâi să aruncăm o privire la câteva desemnări de locuri de muncă pe care le puteți prelua în acest domeniu:
- Designer de software
- Dezvoltator cu norma intreaga
- Programator de software
- manager de proiect IT
- Manager sisteme informatice
- Savantul de date
- Inginer de învățare automată
- Inginer cloud
- Inginer de securitate cibernetică
Când intervievați pentru oricare dintre pozițiile de mai sus, potențialul dvs. angajator vă va testa cunoștințele și abilitățile conceptuale. Prin urmare, aspiranții ingineri software pot beneficia de pe urma combinării diplomelor lor cu experiența practică, fie prin proiecte practice sau prin stagii.
În plus, capacitatea ta de comunicare și orientarea către echipă pot juca un rol important în a te diferenția de concurenți. Deci, pe măsură ce vă pregătiți pentru ciclul de angajare, țineți cont de aceste lucruri.
Învață cursuri online de software de la cele mai bune universități din lume. Câștigă programe Executive PG, programe avansate de certificat sau programe de master pentru a-ți accelera cariera.

Cu aceasta, acum este timpul să analizăm cele mai puse întrebări în interviurile de angajare în inginerie software.
Citiți: Carieră în dezvoltarea software
Întrebări și răspunsuri la interviu de inginerie software
1. Enumerați diferitele tipuri de software.
Software-ul de calculator poate fi clasificat în următoarele categorii:
- Programul sistemului
- Software de aplicație
- aplicații web
- Software încorporat
- Software AI
- Software științific
2. Faceți diferența între un program de calculator și un software de calculator.
Un program de calculator cuprinde un cod de programare capabil să realizeze o sarcină bine definită la executare. În schimb, software-ul de calculator include fișiere (documentație și ghid de utilizare) în plus față de codul de programare. Prin urmare, atât programul, cât și software-ul conțin un set de instrucțiuni, dar domeniul de aplicare al software-ului este mai larg în comparație cu un program.
3. Explicați pașii principali ai SDLC.
SDLC este o formă scurtă a ciclului de viață al dezvoltării software. Este compus din mai multe etape, printre care:
- Planificare: estimare software și alte aspecte ale planificării proiectelor
- Analiza de fezabilitate: Analiza cerințelor, listarea specificațiilor software
- Design software: Decizia modelelor de design, dezvoltarea prototipurilor
- Dezvoltare software: traducerea cerințelor în cod de lucru
- Testare: verificarea codului pentru cerințele declarate, calitatea, practicile de dezvoltare sigure etc.
- Implementare: Implementarea software-ului și integrarea acestuia cu diferite sisteme pentru a crea un produs complet funcțional
- Documentația proiectului: Adunarea resurselor și organizarea fișierelor software, inclusiv coduri, documente și licențe.
- Instruire și suport: comunicarea utilizării, funcționalităților și posibilităților noii tehnologii și facilitarea unui transfer eficient de cunoștințe
- Operațiuni și întreținere: Raportarea problemelor și îmbunătățirea produsului
4. Enumerați câteva modele și metodologii SDLC de bază. După tine, care este cel mai bun?
Waterfall, V-Model, Iterative, Spiral, Big-bag și Agile sunt unele dintre cele mai populare modele SDLC.
În ceea ce privește metodologia cel mai bine clasată, nu există un singur răspuns, deoarece soluția depinde de necesitatea procesului de dezvoltare software. De exemplu, modelul Waterfall este potrivit pentru proiecte pe termen lung unde flexibilitatea este de preferat. Modelul în formă de V funcționează bine atunci când există cerințe necunoscute. Modelul Spiral este ideal pentru proiecte extrem de personalizate și așa mai departe.
5. Ce înțelegeți prin reproiectare software?
Reingineria software-ului urmărește îmbunătățirea unui sistem software. Este procesul de actualizare a software-ului fără a interfera cu funcționalitatea actuală. Poate include sarcini de întreținere, cum ar fi adăugarea de noi funcții pentru a face produsul software mai eficient și mai ușor de utilizat.
6. Definiți următoarele în contextul dezvoltării software: (i) verificare (ii) validare (iii) depanare
(i) Verificarea implică efectuarea unui set de activități pentru a se asigura că software-ul poate implementa o anumită funcție.
(ii) Validarea se referă la confirmarea faptului că software-ul satisface nevoile clienților.
(iii) Depanarea este o parte a procesului de testare, inclusiv eliminarea erorilor.
7. Cum v-ați asigura că codul dvs. este rapid și sigur?
Dacă execuția codului este lentă, veți calcula complexitatea de timp a programului. Se referă la numărul de ori în care este executată o instrucțiune, care depinde, printre alți factori, de limbajul de programare, sistemul de operare și puterea de procesare.
De asemenea, indiferent de limbajul de programare pe care îl utilizați, există mai multe modalități de a vă asigura codul. Aici, cunoașterea practicilor de codare sigură devine esențială. De exemplu, scanarea codului cu instrumente gratuite vă poate ajuta să detectați vulnerabilități în pachetele open-source de pe GitHub.
8. Care sunt cerințele software funcționale și nefuncționale?
Cerințele sunt descrierile sistemului software, caracteristicile dorite ale acestuia și funcționalitățile vizate. Ele pot fi împărțite în cerințe funcționale și nefuncționale.
Cerințele funcționale sunt așteptările utilizatorilor de la produsul propus, iar cerințele nefuncționale se referă la aspecte precum aspectul, performanța, securitatea și interfața cu utilizatorul.
9. Cum ați ține evidența cerințelor software?
Există o mare varietate de instrumente disponibile pentru colectarea și gestionarea cerințelor software de pe piață. Modern Requirements, ReQtest, Jama Connect și Orcanos sunt unele dintre cele mai căutate software-uri RM printre practicieni de astăzi. Selecția se bazează pe metodologii și obiective și diferă de la proiect la proiect. Cu toate acestea, primul pas în procesul de urmărire este să enumerați cerințele și să creați o foaie Excel cu detalii precum tip, dependență, prioritate etc.
10. Ce știi despre modularizare și coeziune?
Modularizarea împarte sistemul software în module discrete. Aici, fiecare modul este de așteptat să îndeplinească sarcini specificate în mod independent. Coeziunea măsoară și definește intra-dependența dintre diferitele elemente ale unui modul.
11. Ce face un manager de proiect software?
Un manager de proiect este însărcinat cu responsabilități precum planificarea proiectului, monitorizarea progresului și comunicarea. În procesul de dezvoltare a software-ului, datoria principală a unui manager de proiect este să gestioneze resursele, să echilibreze riscurile și să livreze produsul dorit respectând constrângerile de timp, cost și calitate.
12. Ce este domeniul de aplicare al software-ului?
Domeniul software include toate activitățile necesare pentru a livra un produs software. Acesta definește următoarele aspecte pentru a eficientiza procesul de dezvoltare:
- Ce va face produsul
- Ceea ce nu face parte din proiect
- Estimarea proiectului (cu ajutorul consultanților, experților sau formulelor)
13. Cum veți determina fezabilitatea proiectului dumneavoastră?
Un studiu de fezabilitate ajută la măsurarea beneficiilor practice pe care un proiect de dezvoltare software le poate aduce unei organizații. Analizatorii de software iau în considerare trei factori principali înainte de a-și pregăti raportul final. Le-am explicat în detaliu mai jos:
- Economic: costul funcțiilor și instrumentelor suplimentare, costurile de formare și analiza cost-beneficiu globală a proiectului final
- Tehnic: Adecvarea mașinilor și a software-ului de operare, inclusiv posibilitatea dezvoltării sistemului propus cu suportul tehnic și resursele umane disponibile
- Operațional: Abilitatea de a face ajustări și de a ține pasul cu cerințele și meritul proiectului la costul estimat.
14. Menționați câteva instrumente de analiză și proiectare software.
Analiza software și procedurile de proiectare ajută la transpunerea specificațiilor cerințelor în implementare. Iată câteva instrumente standard:
- Diagrame de flux de date
- Dicționar de date
- Diagrame structurate
- Diagrame HIPO (Hierarhical Input Process Output).
- Entitate-Relație sau diagrame ER
- Tabele de decizie
15. Care este diferența dintre engleza structurată și codul pseudo?
Limba engleză nativă folosită pentru a scrie structura unui modul de program este cunoscută ca engleză structurată. Include cuvinte cheie în limbajul de programare.

În schimb, metodologia Pseudo-Cod seamănă foarte mult cu limbajul de programare, dar fără nicio sintaxă specifică.
Citește și: Idei de proiecte de dezvoltare software
16. Cum veți găsi dimensiunea unui produs software?
Puteți calcula dimensiunea software-ului calculând liniile de cod livrat sau punctele de funcție. Punctele de funcționare sunt considerate o măsurătoare relevantă deoarece reprezintă caracteristicile oferite de un produs software.
17. Ce sunt valorile software?
Valorile software se referă la măsurătorile cerințelor și la produsul în sine.
- Valorile cerințelor includ aspecte precum lungimea și caracterul complet.
- Valorile produsului se referă la numărul de linii de codare, design, metrici de testare, metrici orientate pe obiecte etc.
18. Care sunt câteva tehnici utile de estimare a proiectelor?
Estimarea proiectelor este o parte integrantă a planificării unui proiect software. Iată câteva metode utilizate pe scară largă:
- Descompunere (dimensionare software, tehnici bazate pe probleme și bazate pe proces)
- Empiric (analiza de regresie, model de cost constructiv și ecuația software)
19. Cum ați măsura execuția proiectului?
Revizuirea implementării software-ului ar presupune monitorizarea activității, liste de verificare a reperelor și rapoarte de stare.
Instrumentele de management de proiect oferă o modalitate confortabilă de a verifica progresul. Diagrama Gantt, Diagrama Pert și Histograma resurselor sunt alte câteva exemple.
20. Definiți managementul configurației software.
Managementul configurației se referă la urmărirea și controlul modificărilor dintr-un proiect software. Este vital să se mențină coerența sistemului software cu regulile și reglementările organizaționale.
21. Care este diferența dintre asigurarea calității și controlul calității?
Se fac verificări de asigurare a calității pentru a afla dacă a fost urmat procesul de dezvoltare adecvat. Pe de altă parte, controlul calității se referă la menținerea calității produsului final.
22. Comparați programarea orientată pe interfață, orientată pe obiecte și orientată pe aspecte.
Programarea interfeței este un model arhitectural bazat pe contract aplicat pentru realizarea unui design modular la nivel de componentă.
Programarea orientată pe obiecte se ocupă cu scrierea de obiecte granulare având un scop singular.
Programarea orientată pe aspecte are ca scop segregarea codului, astfel încât mai multe obiecte să poarte sarcinile principale, iar obiectele independente să poarte sarcinile secundare.
23. Când să declari o clasă ca abstractă?
O clasă care conține un cuvânt cheie abstract în declarația sa nu poate fi instanțiată. Cel mai bine este să declarați o clasă ca abstractă în situațiile menționate mai jos.
- Când cel puțin una dintre metodele din clasă este declarată abstractă.
- Când o clasă moștenită dintr-o clasă abstractă include în continuare metode abstracte.
24. Menționați principala diferență între: (i) Stivă vs coadă (ii) Proiectare orientată pe obiect vs. orientată pe componente (iii) Fir vs proces (iv) EXE vs DLL (v) Etichete și ramuri
(i) Stack urmează principiul Last In, First Out (LIFO). În timp ce, Coada este întotdeauna FIFO, adică primul întrat, primul ieşit.
(ii) Designul orientat pe obiecte poate fi încorporat într-o oarecare măsură în proiectarea bazată pe componente. Cu toate acestea, inversul nu este posibil.
(iii) „Proces” se referă la o instanță a unui program de calculator aflat în execuție. Este mai greu și necesită mai multă schimbare de context. Un „thread” este un proces ușor pe care un planificator îl gestionează independent. Un singur program poate avea mai multe fire.
(iv) Atât EXE, cât și DLL sunt programe care necesită spațiu de stocare pentru a rula. În timp ce EXE este un program executabil de bază, DLL este mai dinamic. Este un depozit de cod extern pe care îl puteți încărca și executa, ocupând astfel mai puțin spațiu.
(v) Etichetele rămân pe o anumită versiune a codului și, de obicei, nu se modifică. Acestea acționează ca locuri de depozitare temporare pentru versiunile versiunilor. Ramurile indică întotdeauna vârful liniei de dezvoltare. Deci, ele sunt șterse odată ce o nouă commit este împinsă sau când modificările sunt îmbinate în trunk.
25. Este o idee bună să folosiți catch (excepție)?
Catch (excepție) ar trebui utilizată atunci când tipurile de excepție sunt cunoscute. Este o idee proastă, deoarece nu puteți citi excepția când nu a fost definită nicio variabilă.
26. Care este de preferat între cele două: tipărirea puternică sau tiparea slabă?
Tastarea puternică ar trebui să ducă la o tastare slabă, deoarece verifică variabilele în timpul compilării. De asemenea, poate minimiza considerabil erorile de sistem. O limbă scrisă slab efectuează conversii numai în timpul rulării și poate produce rezultate imprevizibile.
27. Ce este un design structurat?
Designul structurat conceptualizează problema urmând strategia „împărțiți și cuceriți”. Această abordare sistematică presupune împărțirea problemei în subelementele sale și tratarea individuală a acestor probleme mai mici. Datorită acestei tactici, se mai numește și metoda de proiectare a soluției.
28. Descrieți programarea funcțională.
Metoda programarii functionale presupune aplicarea conceptelor matematice. Oferă o modalitate de a calcula funcții matematice, generând astfel rezultate indiferent de starea programului.
29. Cum prioritizați cerințele?
În primul rând, trebuie să evaluați structura datelor. Apoi, ar trebui să formulați o structură de cod care să o susțină.
30. Ce știi despre instrumentele CASE?
CASE este termenul abreviat pentru Inginerie software asistată de computer. Constă dintr-un set de aplicații software automatizate care acceptă activități SDLC. Instrumentele CASE pot îmbunătăți și consolida proiectele software, oferind aceste servicii:
- Analiza cerințelor
- Analiza structurii
- Generarea codului
- Generarea cazului de testare
- Producerea documentelor
- Inginerie inversă
Cele la pachet
Biroul de Statistică a Muncii (Statele Unite) estimează că cererea de dezvoltatori de software va crește cu 22% în următorul deceniu. Și este probabil ca India să întâmpine aceeași creștere a cererii.
Potrivit „Workforce Report for India” de LinkedIn, postările de locuri de muncă în inginerie software pe platforma sa au fost cele mai mari din mai multe industrii în prima jumătate a anului 2018. Pe măsură ce avansăm, oportunitățile din sectoare proeminente precum educația, juridic și design ar fi continuă să crească. Citiți despre salariul dezvoltatorului de software în India.
După cum sa observat prin întrebările enumerate mai sus, cineva care dorește să intre în această profesie ar avea nevoie de o gamă largă de competențe interdependente. Iată un instantaneu al abilităților pe care ar trebui să le înțelegi:

- C++, C#, Java
- HTML, CSS JavaScript
- SQL, Python, Bootstrap
- Design orientat pe obiecte
- Software de depanare și testare
- Codare în limbi moderne (Ruby, Go, R etc.)
- Cunoașterea proiectelor de inteligență artificială și așa mai departe
Pe lângă aceste abilități tehnice, ar trebui să stăpânești arta multitasking-ului, a comunicării, a gestionării timpului, a atenției la detalii și a muncii în echipă.
În ceea ce privește calificările educaționale, o diplomă de licență în informatică sau domenii conexe acoperă, de obicei, criteriile minime de eligibilitate pentru locuri de muncă la nivel de intrare. Dar cariera fiecăruia se dovedește puțin diferită. Unii s-ar putea să fi intrat în forța de muncă prin auto-studiu, cursuri online sau bootcamp-uri de codare. Alții s-ar putea să fi urmat o diplomă avansată după ce au lucrat în IT timp de câțiva ani.
Având acreditări la nivel postuniversitar, te poate ajuta să-ți pornești cariera și chiar să câștigi o promovare râvnită. Consultați Masterul upGrad în Informatică certificat de Universitatea John Moores din Liverpool. Acesta își propune să vă echipeze cu abilități relevante pentru industrie printr-o pedagogie extrem de interactivă.
De asemenea, puteți opta pentru Programul Executive PG în Dezvoltare Software – Specializare în Dezvoltare Full Stack de către IIIT-B sau o certificare PG specializată, în funcție de interesele și aspirațiile dvs. de carieră. Astfel de certificate au un angajament de timp mai scurt în comparație cu cursurile de master și diplomă. Acestea vă permit să vă demonstrați abilitățile într-un anumit domeniu, cum ar fi dezvoltarea back-end, dezvoltarea front-end, securitatea cibernetică, DevOps, big data și cloud computing.
Cu aceasta, am acoperit cele mai importante întrebări și răspunsuri la interviu pentru inginerie software . Am încercat să includem subiecte generale și tehnice. De asemenea, am menționat potențialele opțiuni de carieră și am oferit o privire de ansamblu asupra tendințelor și perspectivelor din industria IT. Folosiți aceste informații ca indicator pentru călătoria dvs. de învățare și eficientizați-vă strategia de pregătire!