21 questions et réponses d'entrevue C++ les plus lues [Pour les débutants]
Publié: 2020-12-17Aujourd'hui encore, le C++ est aussi populaire qu'il l'était dans les années 80. Ce langage de programmation polyvalent, compilé et multi-paradigme (orienté objet, procédural et fonctionnel) joue un rôle crucial dans l'industrie informatique, en particulier dans le développement de logiciels.
Les développeurs du monde entier utilisent C++ pour créer des logiciels systèmes, des logiciels de base de données, des logiciels embarqués, des applications d'entreprise, des applications basées sur l'interface graphique, des compilateurs, des calculs et des graphiques avancés, des systèmes d'exploitation, des navigateurs, des jeux, des systèmes cloud, etc. Naturellement, C++ est toujours très pertinent. langage de programmation.
Dans cet article, nous avons créé une liste de 21 questions d'entretien C++ que vous devez savoir si vous aspirez à faire carrière dans le développement logiciel. Ces questions et réponses d'entretien C++ vous aideront à briser la glace sur le sujet !
Questions et réponses d'entretien C++
- Définissez "Classe" et "Objet".
En C++, une classe est un type de données défini par l'utilisateur qui reflète différentes entités, actions et fonctionnalités. Une classe contient les membres de données ainsi que leurs fonctions. L'accès à ces membres de données et fonctions est défini par trois modificateurs - privé, public et protégé. Alors que les classes définissent un type de données, elles spécifient simplement la structure des données au lieu de définir les données.
Un objet est une instance d'une classe. C'est une entité d'exécution qui peut représenter une personne, un lieu ou une chose.
Les objets fonctionnent sur les membres de données et les fonctions membres. Il contient des champs, des méthodes et des constructeurs. Par exemple, alors qu'une voiture est un objet, ses diverses caractéristiques telles que les roues, le design, la couleur, les supports, etc., sont des instances de sa classe.

- Qu'est-ce qu'un « spécificateur d'accès » ?
Un spécificateur d'accès détermine comment les membres d'une classe (fonctions et variables) sont accessibles en dehors de la portée de la classe. C++ a trois types de spécificateurs d'accès
- Privé – Un spécificateur privé signifie que les membres de la classe ne sont accessibles qu'au sein de la même classe dans laquelle ils sont déclarés. Dans ce cas, les classes enfants ne peuvent pas accéder aux membres privés de la classe parent.
- Protected – Un spécificateur protected permet aux classes enfants d'accéder aux données membres protégées de la classe parent.
- Public – Les membres de classe déclarés « publics » sont accessibles via un code C++.
- Qu'est-ce qu'un spécificateur de classe de stockage mutable ?
Un spécificateur de classe de stockage modifiable s'applique uniquement aux variables de membre non statiques et non constantes d'une classe pour modifier le membre de l'objet de classe constant en le déclarant.
- Qu'est-ce que l'encapsulation ?
L'encapsulation fait référence à l'encapsulation ou à la liaison des membres de données et de leurs fonctions au sein d'une classe. Ce processus est effectué pour des raisons de sécurité car il limite l'accès de toute méthode extérieure. Si le membre de données est privé, seule sa fonction membre peut accéder aux données.
- Qu'est-ce que l'Abstraction ?
L'abstraction est un processus qui consiste à masquer les implémentations internes et à n'afficher que les détails essentiels. L'accès aux données membres et aux fonctions dépend du modificateur utilisé. Ainsi, si un mot-clé public est utilisé pour définir les membres, ils sont accessibles à tous. Cependant, si un mot-clé privé définit les membres, vous ne pouvez pas y accéder via des méthodes extérieures.
- Qu'est-ce qu'un espace de noms ?
Un espace de noms facilite la division logique d'un code. Il est utilisé dans les programmes C++ pour prévenir/résoudre le conflit de nommage des identificateurs en leur attribuant différents espaces de noms. Un espace de noms définit la portée où un identificateur (variables, classe et fonctions) est déclaré. Ainsi, l'objectif principal de l'utilisation d'un espace de noms est d'éliminer l'ambiguïté du code.
- Définissez « polymorphisme ». Combien de types de polymorphisme existent en C++ ?
Littéralement, le polymorphisme signifie la présence de plusieurs formes. En C++, le polymorphisme se produit lorsque plusieurs fonctions existent sous le même nom mais avec des fonctionnalités variées.
Le polymorphisme est de deux types :
- Le polymorphisme dynamique, également appelé « remplacement » en C++, vous aide à déterminer quelle méthode de fonction doit être exécutée au moment de l'exécution plutôt qu'au moment de la compilation. Le remplacement de fonction est un excellent exemple de polymorphisme dynamique. Dans le remplacement de fonction, la classe enfant contient la méthode qui existe déjà dans la classe parent. Par conséquent, la classe enfant remplace la méthode de la classe parent. Dans ce cas, les classes parent et enfant contiennent la même fonction avec des définitions différentes.
- Le polymorphisme statique est implémenté au moment de la compilation du code (par conséquent, il est également connu sous le nom de polymorphisme au moment de la compilation). La surcharge de méthode est un parfait exemple de polymorphisme statique. La surcharge de méthode permet la présence de plusieurs fonctions ayant le même nom mais avec des fonctionnalités différentes.
- Expliquez le but du mot-clé "Volatil".
La fonction "volatile" est utilisée pour déclarer qu'une variable particulière est volatile. Cela demande au compilateur de modifier la variable en externe, évitant ainsi l'optimisation du compilateur sur la référence de variable.
Lire: Questions et réponses d'entrevue Java
- Qu'est-ce qu'une fonction Inline ?
Toute fonction ayant le mot-clé "inline" comme préfixe avant la définition de la fonction est une fonction inline. Ils sont principalement utilisés pour réduire la surcharge des appels de fonction. Lorsqu'une fonction en ligne est appelée, le code entier sera inséré ou remplacé au point spécifique de l'appel de la fonction en ligne. Étant donné que le compilateur traite les fonctions en ligne comme des macros, elles s'exécutent beaucoup plus rapidement. Ainsi, déclarer de petites fonctions en ligne aide à augmenter l'efficacité du code.

La syntaxe standard d'une fonction inline est :
Nom de la fonction de type retour en ligne (paramètres)
{
// Le code de la fonction va ici
}
- Qu'est-ce que "ce" pointeur ?
En C++, "ce" pointeur est un pointeur constant qui contient l'adresse mémoire de l'objet courant. Il est passé en tant qu'argument masqué à tous les appels de fonction membre non statiques. En outre, ce pointeur existe une variable locale dans le corps de toutes les fonctions non statiques.
Lire : Questions et réponses de l'entretien SQL
- C++ a-t-il un type de données primitif chaîne ?
C++ ne peut pas avoir de type de données primitif chaîne, mais plutôt une classe de la bibliothèque de modèles standard (STL).
- Quelle est la fonction de l'opérateur de résolution de portée ?
L'opérateur de résolution de portée a deux objectifs :
- Il aide à résoudre la portée des variables globales.
- Lorsqu'une fonction est définie en dehors d'une classe, l'opérateur de résolution de portée associe cette fonction à la classe.
- Qu'est-ce qu'un destructeur ?
La fonction membre d'une classe s'appelle un destructeur. Son nom est le même que celui du nom de la classe mais avec un symbole tilde (~) comme préfixe. Chaque fois qu'un objet perd sa portée, les destructeurs sont exécutés automatiquement.
- Expliquez la différence entre la classe de mots-clés et la structure de mots-clés.
La classe de mots-clés représente les membres privés par défaut, tandis que la structure de mots-clés ressemble aux membres publics par défaut.
- Définissez une fonction Pure Virtual.
Une fonction virtuelle pure est une fonction qui ne contient aucune définition. Il suffit de déclarer la fonction virtuelle pure en affectant 0 dans la déclaration. Les classes abstraites en C++ ont au moins une fonction virtuelle pure.
La syntaxe standard d'une fonction virtuelle pure est :
vide virtuel abc()=0 ; // fonction virtuelle pure.
Découvrez : 15 conseils d'entrevue pour vous démarquer lors de votre entretien d'embauche
- À quoi sert un modèle de classe ?
Un modèle de classe est utilisé pour créer une famille de classes et de fonctions. Par exemple, vous pouvez créer un template de classe array qui vous permettra de créer un tableau incluant différents types (int, float, etc.). Vous pouvez également créer un modèle pour une fonction. Ainsi, s'il existe une fonction add(), vous pouvez créer plusieurs versions de add().
- Que signifie "Erreur de débordement" ?
L'erreur de débordement est une erreur arithmétique qui se produit lorsque la sortie d'un calcul mathématique est supérieure à l'espace réel alloué par le système.
- En quoi delete et delete[ ] sont-ils différents ?
La fonction delete libère une seule unité de mémoire allouée à l'aide de l'opérateur "new", tandis que delete[ ] libère le tableau de mémoire allouée qui a été alloué par l'opérateur new[ ].
- Quel est le but de vTable et vptr en C++ ? Comment le compilateur les traite-t-il ?
En C++, une vTable contient des pointeurs de fonction. D'autre part, vptr est un pointeur affecté à la vTable. Alors que chaque classe a une vTable, chaque objet a un vptr. Le compilateur C++ ajoute du code supplémentaire à deux endroits pour utiliser et maintenir efficacement vTable et vptr :
Dans chaque constructeur pour définir le vptr de l'objet en cours de création et pour pointer vers le vTable d'une classe.
Dans le code ayant un appel de fonction polymorphe. Le compilateur insère le code à chaque emplacement où un appel polymorphe est déclaré pour rechercher le vptr à l'aide du pointeur/référence de la classe de base. Une fois le vptr obtenu, vous pouvez accéder à la vTable de la classe dérivée. Vous pouvez utiliser la vTable pour accéder et appeler la fonction de classe dérivée show().

- En C++, où est stockée une variable automatique ?
Toutes les variables locales sont des variables automatiques par défaut et sont stockées dans la mémoire de la pile.
- Comment exporter une fonction depuis une DLL ?
Il existe deux manières d'exporter une fonction depuis une DLL :
- Vous pouvez utiliser la bibliothèque de types de DLL.
- Vous pouvez vous référer à la fonction à partir de l'instance DLL.
Inscrivez-vous à des cours de génie logiciel dans les meilleures universités du monde. Gagnez des programmes Executive PG, des programmes de certificat avancés ou des programmes de maîtrise pour accélérer votre carrière.
Conclusion
Ces questions et réponses C++ font partie des questions les plus fréquemment posées lors des entretiens d'embauche. Bien que nous n'ayons énuméré que quelques questions, cela devrait vous donner une bonne idée de la façon de vous préparer à un entretien C++.
Si vous souhaitez en savoir plus sur le développement de logiciels à pile complète, consultez le programme exécutif PG de upGrad & IIIT-B en développement de logiciels à pile complète, conçu pour les professionnels en activité et offrant plus de 500 heures de formation rigoureuse, plus de 9 projets et affectations, statut d'anciens élèves de l'IIIT-B, projets de synthèse pratiques et aide à l'emploi avec les meilleures entreprises.
