21 domande e risposte per interviste C++ più lette [per i neofiti]
Pubblicato: 2020-12-17Ancora oggi, C++ è popolare come lo era negli anni '80. Questo linguaggio di programmazione generico, compilato e multiparadigma (orientato agli oggetti, procedurale e funzionale) svolge un ruolo cruciale nel settore IT, in particolare nello sviluppo di software.
Gli sviluppatori di tutto il mondo utilizzano il C++ per creare software di sistema, software di database, software embedded, applicazioni aziendali, applicazioni basate su GUI, compilatori, calcolo e grafica avanzati, sistemi operativi, browser, giochi, sistemi cloud, ecc. Naturalmente, il C++ è ancora molto rilevante linguaggio di programmazione.
In questo post, abbiamo creato un elenco di 21 domande di intervista C++ che dovresti sapere se aspiri a costruire una carriera nello sviluppo di software. Queste domande e risposte per interviste in C++ ti aiuteranno a rompere il ghiaccio sull'argomento!
Domande e risposte per l'intervista in C++
- Definisci "Classe" e "Oggetto".
In C++, una classe è un tipo di dati definito dall'utente che riflette entità, azioni e funzionalità diverse. Una classe contiene i membri dati insieme alle loro funzioni. L'accesso a questi membri e funzioni di dati è definito da tre modificatori: privato, pubblico e protetto. Sebbene le classi definiscano un tipo di dati, specificano semplicemente la struttura dei dati invece di definire i dati.
Un oggetto è un'istanza di una classe. È un'entità di runtime che può rappresentare una persona, un luogo o una cosa.
Gli oggetti operano su membri dati e funzioni membro. Contiene campi, metodi e costruttori. Ad esempio, mentre un'auto è un oggetto, le sue varie caratteristiche come ruote, design, colore, staffe, ecc., sono esempi della sua classe.

- Che cos'è un "identificatore di accesso?"
Uno specificatore di accesso determina come è possibile accedere ai membri di una classe (funzioni e variabili) al di fuori dell'ambito della classe. C++ ha tre tipi di identificatori di accesso
- Privato: uno specificatore privato significa che è possibile accedere ai membri della classe solo all'interno della stessa classe in cui sono dichiarati. In questo caso, le classi figlio non possono accedere ai membri privati della classe genitore.
- Protetto: uno specificatore protetto consente alle classi figlio di accedere ai membri dati protetti della classe padre.
- Pubblico: è possibile accedere ai membri della classe dichiarati "pubblici" tramite un codice C++.
- Che cos'è un identificatore di classe di archiviazione mutabile?
Un identificatore di classe di archiviazione mutabile si applica solo alle variabili membro non statiche e non costanti di una classe per alterare il membro dell'oggetto classe costante dichiarandolo.
- Cos'è l'incapsulamento?
L'incapsulamento si riferisce al wrapping o all'associazione di membri di dati e alle relative funzioni all'interno di una classe. Questo processo viene eseguito per motivi di sicurezza poiché limita l'accesso da qualsiasi metodo esterno. Se il membro dati è privato, solo la sua funzione membro può accedere ai dati.
- Cos'è l'astrazione?
L'astrazione è un processo per nascondere le implementazioni interne e visualizzare solo i dettagli essenziali. L'accesso ai membri e alle funzioni dei dati dipende dal modificatore utilizzato. Quindi, se una parola chiave pubblica viene utilizzata per definire i membri, chiunque può accedervi. Tuttavia, se una parola chiave privata definisce i membri, non è possibile accedervi tramite metodi esterni.
- Che cos'è uno spazio dei nomi?
Uno spazio dei nomi facilita la divisione logica di un codice. Viene utilizzato nei programmi C++ per prevenire/risolvere il conflitto di denominazione degli identificatori assegnando loro spazi dei nomi diversi. Uno spazio dei nomi definisce l'ambito in cui viene dichiarato un identificatore (variabili, classe e funzioni). Pertanto, l'obiettivo principale dell'utilizzo di uno spazio dei nomi è eliminare l'ambiguità dal codice.
- Definisci "polimorfismo". Quanti tipi di polimorfismo esistono in C++?
Letteralmente, polimorfismo significa la presenza di forme multiple. In C++, il polimorfismo si verifica quando esiste più di una funzione con lo stesso nome ma con funzionalità diverse.
Il polimorfismo è di due tipi:
- Il polimorfismo dinamico, noto anche come "override" in C++, aiuta a determinare quale metodo di funzione deve essere eseguito in fase di esecuzione anziché in fase di compilazione. L'override della funzione è un eccellente esempio di polimorfismo dinamico. Nell'override della funzione, la classe figlia contiene il metodo che esiste già nella classe padre. Di conseguenza, la classe figlia sovrascrive il metodo della classe padre. In questo caso, entrambe le classi padre e figlio hanno la stessa funzione con definizioni diverse.
- Il polimorfismo statico viene implementato al momento della compilazione del codice (quindi, è anche noto come polimorfismo in fase di compilazione). Il sovraccarico del metodo è un perfetto esempio di polimorfismo statico. L'overloading del metodo consente la presenza di più funzioni con lo stesso nome ma con funzionalità diverse.
- Spiega lo scopo della parola chiave "Volatile".
La funzione "volatile" viene utilizzata per dichiarare che una determinata variabile è volatile. Questo indica al compilatore di modificare la variabile esternamente, evitando così l'ottimizzazione del compilatore sul riferimento della variabile.
Leggi: Domande e risposte per l'intervista Java
- Che cos'è una funzione Inline?
Qualsiasi funzione che abbia la parola chiave "inline" come prefisso prima della definizione della funzione è una funzione inline. Vengono utilizzati principalmente per ridurre il sovraccarico della chiamata di funzione. Quando viene chiamata una funzione inline, l'intero codice verrà inserito o sostituito nel punto specifico della chiamata della funzione inline. Poiché il compilatore tratta le funzioni inline come macro, vengono eseguite molto più velocemente. Pertanto, la dichiarazione di piccole funzioni inline aiuta ad aumentare l'efficienza del codice.

La sintassi standard di una funzione inline è:
Inline tipo restituito nome-funzione(parametri)
{
// Il codice funzione va qui
}
- Cos'è il puntatore "questo"?
In C++, il puntatore "questo" è un puntatore costante che contiene l'indirizzo di memoria dell'oggetto corrente. Viene passato come argomento nascosto a tutte le chiamate di funzione membro non statiche. Inoltre, questo puntatore esiste una variabile locale all'interno del corpo di tutte le funzioni non statiche.
Leggi : Domande e risposte per l'intervista SQL
- C++ ha un tipo di dati primitivo stringa?
C++ non può avere un tipo di dati primitivo stringa, ma ha una classe dalla Standard Template Library (STL).
- Qual è la funzione dell'operatore di risoluzione dell'ambito?
L'operatore di risoluzione dell'ambito ha due scopi:
- Aiuta a risolvere l'ambito delle variabili globali.
- Quando una funzione viene definita all'esterno di una classe, l'operatore di risoluzione dell'ambito associa tale funzione alla classe.
- Cos'è un distruttore?
La funzione membro di una classe è chiamata distruttore. Il suo nome è lo stesso del nome della classe ma con un simbolo tilde (~) come prefisso. Ogni volta che un oggetto perde il suo ambito, i distruttori vengono eseguiti automaticamente.
- Spiega la differenza tra classe di parole chiave e struttura di parole chiave.
La classe di parole chiave rappresenta i membri privati per impostazione predefinita, mentre la parola chiave struct assomiglia ai membri pubblici per impostazione predefinita.
- Definire una funzione virtuale pura.
Una funzione virtuale pura è quella che non contiene alcuna definizione. Devi solo dichiarare la funzione virtuale pura assegnando 0 nella dichiarazione. Le classi astratte in C++ hanno almeno una funzione virtuale pura.
La sintassi standard di una pura funzione virtuale è:
vuoto virtuale abc()=0; //pura funzione virtuale.
Dai un'occhiata: 15 suggerimenti per il colloquio per distinguerti nel tuo colloquio di lavoro
- Qual è lo scopo di un modello di classe?
Un modello di classe viene utilizzato per creare una famiglia di classi e funzioni. Ad esempio, puoi creare un modello di una classe array che ti consentirà di creare un array che includa vari tipi (int, float, ecc.). Puoi anche creare un modello per una funzione. Quindi, se esiste una funzione add(), puoi creare più versioni di add().
- Cosa significa "Errore di overflow"?
L'errore di overflow è un errore aritmetico che si verifica quando l'output di un calcolo matematico è maggiore dello spazio effettivo assegnato dal sistema.
- In che modo l'eliminazione e l'eliminazione[ ] sono diverse?
La funzione di eliminazione libera una singola unità di memoria allocata utilizzando l'operatore "new", mentre delete[ ] rilascia l'array di memoria allocata allocata dall'operatore new[ ].
- Qual è lo scopo di vTable e vptr in C++? Come li tratta il compilatore?
In C++, una vTable contiene puntatori a funzione. D'altra parte, vptr è un puntatore assegnato a vTable. Mentre ogni classe ha un vTable, ogni oggetto ha un vptr. Il compilatore C++ aggiunge codice aggiuntivo in due posizioni per utilizzare e mantenere efficacemente vTable e vptr:
In ogni costruttore impostare il vptr dell'oggetto in fase di creazione e puntare al vTable di una classe.
Nel codice che ha una chiamata di funzione polimorfica. Il compilatore inserisce il codice in ogni posizione in cui viene dichiarata una chiamata polimorfica per cercare il vptr utilizzando il puntatore/riferimento alla classe base. Una volta ottenuto il vptr, è possibile accedere alla vTable della classe derivata. È possibile utilizzare vTable per accedere e chiamare la funzione di classe derivata show().

- In C++, dove viene memorizzata una variabile automatica?
Tutte le variabili locali sono variabili automatiche per impostazione predefinita e sono archiviate nella memoria dello stack.
- Come puoi esportare una funzione da una DLL?
Esistono due modi per esportare una funzione da una DLL:
- È possibile utilizzare la libreria dei tipi di DLL.
- È possibile fare riferimento alla funzione dall'istanza DLL.
Iscriviti ai corsi di ingegneria del software dalle migliori università del mondo. Guadagna programmi Executive PG, programmi di certificazione avanzati o programmi di master per accelerare la tua carriera.
Conclusione
Queste domande e risposte C++ sono alcune delle domande più frequenti nei colloqui di lavoro. Anche se abbiamo elencato solo alcune domande, questo dovrebbe darti una buona idea di come prepararti per un colloquio C++.
Se sei interessato a saperne di più sullo sviluppo di software full-stack, dai un'occhiata al programma Executive PG di upGrad & IIIT-B in Full-stack Software Development, progettato per i professionisti che lavorano e offre oltre 500 ore di formazione rigorosa, oltre 9 progetti e incarichi, stato di Alumni IIIT-B, progetti pratici pratici e assistenza sul lavoro con le migliori aziende.
