Cele mai citite 21 de întrebări și răspunsuri la interviu C++ [Pentru cei în stare de proaspăt]
Publicat: 2020-12-17Chiar și astăzi, C++ este la fel de popular ca în anii 80. Acest limbaj de programare cu scop general, compilat și multi-paradigme (orientat pe obiecte, procedural și funcțional) joacă un rol crucial în industria IT, în special în dezvoltarea de software.
Dezvoltatorii din întreaga lume folosesc C++ pentru a construi software de sistem, software de baze de date, software încorporat, aplicații de întreprindere, aplicații bazate pe GUI, compilatoare, calcule avansate și grafică, sisteme de operare, browsere, jocuri, sisteme cloud etc. Desigur, C++ este încă foarte relevant. limbaj de programare.
În această postare, am creat o listă de 21 de întrebări de interviu C++ pe care ar trebui să le cunoașteți dacă aspirați să vă construiți o carieră în dezvoltarea de software. Aceste întrebări și răspunsuri la interviu C++ vă vor ajuta să spargeți gheața pe acest subiect!
Întrebări și răspunsuri la interviu C++
- Definiți „Clasa” și „Obiect”.
În C++, o clasă este un tip de date definit de utilizator care reflectă diferite entități, acțiuni și caracteristici. O clasă conține membrii datelor împreună cu funcțiile acestora. Accesul la acești membri de date și funcții este definit de trei modificatori – privat, public și protejat. În timp ce clasele definesc un tip de date, ele specifică doar structura datelor în loc să definească datele.
Un obiect este o instanță a unei clase. Este o entitate de rulare care poate reprezenta o persoană, un loc sau un lucru.
Obiectele operează pe membri de date și funcții membre. Conține câmpuri, metode și constructori. De exemplu, în timp ce o mașină este un obiect, diferitele sale caracteristici, cum ar fi roți, design, culoare, suporturi etc., sunt exemple ale clasei sale.

- Ce este un „specificator de acces?”
Un specificator de acces determină modul în care membrii unei clase (funcții și variabile) pot fi accesați în afara domeniului de aplicare al clasei. C++ are trei tipuri de specificatori de acces
- Privat – Un specificator privat înseamnă că membrii clasei pot fi accesați numai în cadrul aceleiași clase în care sunt declarați. În acest caz, clasele copil nu pot accesa membrii privați ai clasei părinte.
- Protejat – Un specificator protejat permite claselor copil să acceseze membrii de date protejate ai clasei părinte.
- Public – Membrii clasei care sunt declarați „publici” pot fi accesați printr-un cod C++.
- Ce este un specificator de clasă de stocare mutabil?
Un specificator de clasă de stocare mutabil se aplică numai variabilelor membre non-statice și non-constante ale unei clase pentru modificarea membrului obiectului clasei constante prin declararea acestuia.
- Ce este încapsularea?
Încapsularea se referă la împachetarea sau legarea membrilor datelor și la funcțiile acestora în cadrul unei clase. Acest proces se face din motive de securitate, deoarece restricționează accesul din orice metodă externă. Dacă membrul de date este privat, numai funcția sa de membru poate accesa datele.
- Ce este Abstracția?
Abstracția este un proces de ascundere a implementărilor interne și de afișare doar a detaliilor esențiale. Accesul la membrii și funcțiile datelor depinde de modificatorul utilizat. Deci, dacă un cuvânt cheie public este folosit pentru a defini membrii, aceștia pot fi accesați de oricine. Cu toate acestea, dacă un cuvânt cheie privat definește membrii, nu îi puteți accesa prin metode externe.
- Ce este un namespace?
Un spațiu de nume facilitează împărțirea logică a unui cod. Este folosit în programele C++ pentru a preveni/rezolva conflictul de denumire al identificatorilor prin atribuirea de spații de nume diferite. Un spațiu de nume definește domeniul în care este declarat un identificator (variabile, clasă și funcții). Astfel, scopul principal al utilizării unui spațiu de nume este de a elimina ambiguitatea din cod.
- Definiți „polimorfismul”. Câte tipuri de polimorfism există în C++?
Literal, polimorfismul înseamnă prezența formelor multiple. În C++, polimorfismul apare atunci când există mai multe funcții sub același nume, dar cu funcționalități variate.
Polimorfismul este de două tipuri:
- Polimorfismul dinamic, alias „suprascrierea” în C++, vă ajută să determinați ce metodă de funcție trebuie executată în timpul execuției în loc de timpul compilării. Suprascrierea funcției este un exemplu excelent de polimorfism dinamic. În suprascrierea funcției, clasa copil conține metoda care există deja în clasa părinte. În consecință, clasa copil suprascrie metoda clasei părinte. În acest caz, atât clasele părinte, cât și cele copil dețin aceeași funcție, cu definiții diferite.
- Polimorfismul static este implementat în momentul compilării codului (de aceea, este cunoscut și ca polimorfism în timp de compilare). Supraîncărcarea metodei este un exemplu perfect de polimorfism static. Supraîncărcarea metodei permite prezența a mai mult de o funcție având același nume, dar cu funcționalități diferite.
- Explicați scopul cuvântului cheie „Volatil”.
Funcția „volatilă” este folosită pentru a declara că o anumită variabilă este volatilă. Aceasta direcționează compilatorul să schimbe variabila extern, evitând astfel optimizarea compilatorului pe referința variabilei.
Citiți: Întrebări și răspunsuri la interviu Java
- Ce este o funcție Inline?
Orice funcție care are cuvântul cheie „inline” ca prefix înainte de definiția funcției este o funcție inline. Ele sunt utilizate în principal pentru a reduce supraîncărcarea apelului de funcție. Când este apelată o funcție inline, întregul cod va fi fie inserat, fie înlocuit în punctul specific al apelului funcției inline. Deoarece compilatorul tratează funcțiile inline ca macrocomenzi, acestea se execută mult mai rapid. Astfel, declararea unor funcții inline mici ajută la creșterea eficienței codului.

Sintaxa standard a unei funcții inline este:
Nume-funcție de tip returnare în linie (parametri)
{
// Codul funcției merge aici
}
- Ce este „acest” indicator?
În C++, „acest” pointer este un pointer constant care conține adresa de memorie a obiectului curent. Este transmis ca argument ascuns tuturor apelurilor de funcții membre non-statice. De asemenea, acest pointer există o variabilă locală în corpul tuturor funcțiilor non-statice.
Citiți : Întrebări și răspunsuri la interviu SQL
- Are C++ un tip de date primitiv șir?
C++ nu poate avea un tip de date primitiv de tip șir, ci mai degrabă are o clasă din Standard Template Library (STL).
- Care este funcția operatorului de rezoluție a domeniului?
Operatorul de rezoluție a domeniului de aplicare are două scopuri:
- Ajută la rezolvarea domeniului variabilelor globale.
- Când o funcție este definită în afara unei clase, operatorul de rezoluție a domeniului de aplicare asociază acea funcție cu clasa.
- Ce este un destructor?
Funcția membră a unei clase se numește destructor. Numele său este același cu cel al numelui clasei, dar cu un simbol tilde (~) ca prefix. Ori de câte ori un obiect își pierde domeniul de aplicare, destructorii sunt executați automat.
- Explicați diferența dintre clasa de cuvinte cheie și structura de cuvinte cheie.
Clasa de cuvinte cheie reprezintă implicit membri privați, în timp ce cuvântul cheie struct seamănă implicit cu membrii publici.
- Definiți o funcție Pure Virtual.
O funcție virtuală pură este una care nu conține nicio definiție. Trebuie doar să declarați funcția virtuală pură, atribuind 0 în declarație. Clasele abstracte în C++ au cel puțin o funcție virtuală pură.
Sintaxa standard a unei funcții virtuale pure este:
virtual void abc()=0; //funcție virtuală pură.
Consultați: 15 sfaturi pentru interviu pentru a ieși în evidență în interviul dvs. de angajare
- Care este scopul unui șablon de clasă?
Un șablon de clasă este folosit pentru a crea o familie de clase și funcții. De exemplu, puteți crea un șablon al unei clase de matrice care vă va permite să creați o matrice care să includă diferite tipuri (int, float etc.). De asemenea, puteți crea un șablon pentru o funcție. Deci, dacă există o funcție add(), puteți crea mai multe versiuni de add().
- Ce înseamnă „Eroare de depășire”?
Eroarea de depășire este o eroare aritmetică care apare atunci când rezultatul unui calcul matematic este mai mare decât spațiul real alocat de sistem.
- Cum diferă ștergerea și ștergerea[ ]?
Funcția de ștergere eliberează o singură unitate de memorie alocată folosind operatorul „new”, în timp ce delete[ ] eliberează matricea de memorie alocată a fost alocată de operatorul new[ ].
- Care este scopul vTable și vptr în C++? Cum le tratează compilatorul?
În C++, un vTable conține indicatori de funcție. Pe de altă parte, vptr este un pointer alocat vTable-ului. În timp ce fiecare clasă are un vTable, fiecare obiect are un vptr. Compilatorul C++ adaugă cod suplimentar în două locuri pentru a utiliza și întreține în mod eficient vTable și vptr:
În fiecare constructor pentru a seta vptr-ul obiectului creat și pentru a indica vTable-ul unei clase.
În codul având un apel de funcție polimorfă. Compilatorul inserează codul în fiecare locație în care este declarat un apel polimorf pentru a căuta vptr folosind indicatorul/referința clasei de bază. Odată obținut vptr-ul, puteți accesa vTable-ul clasei derivate. Puteți folosi vTable pentru a accesa și a apela funcția de clasă derivată show().

- În C++, unde este stocată o variabilă automată?
Toate variabilele locale sunt variabile automate în mod implicit și sunt stocate în memoria stivei.
- Cum poți exporta o funcție dintr-un DLL?
Există două moduri de a exporta o funcție dintr-un DLL:
- Puteți utiliza biblioteca de tip DLL.
- Vă puteți referi la funcție din instanța DLL.
Înscrieți-vă la cursurile de inginerie 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.
Concluzie
Aceste întrebări și răspunsuri C++ sunt unele dintre cele mai frecvente întrebări la interviurile de angajare. Deși am enumerat doar câteva întrebări, acest lucru ar trebui să vă ofere o idee corectă despre cum să vă pregătiți pentru un interviu C++.
Dacă sunteți interesat să aflați mai multe despre dezvoltarea de software full-stack, consultați programul Executive PG de la upGrad și IIIT-B în dezvoltarea de software full-stack, care este conceput pentru profesioniști care lucrează și oferă peste 500 de ore de formare riguroasă, peste 9 proiecte și misiuni, statutul de absolvenți IIIT-B, proiecte practice practice și asistență pentru locuri de muncă cu firme de top.
