top 30 oops interview questions
Ce didacticiel fournit un ensemble complet de questions et réponses d'entretien fréquemment posées sur la programmation orientée objet (POO):
Le développement logiciel a plus de 70 ans d'histoire où divers langages comme FORTRAN, Pascal, C, C ++ ont été inventés. Il y avait une série d'instructions qui agissaient comme des commandes données au matériel pour effectuer des calculs mathématiques de base, créant des langages procéduraux pour concevoir diverses applications logicielles.
Avec l'invention d'Internet, des langages sécurisés, stables, indépendants de la plate-forme et robustes étaient nécessaires pour concevoir des applications complexes.
La programmation orientée objet est indépendante de la plate-forme, portable, sécurisée et équipée de divers concepts tels que l'encapsulation, l'abstraction, l'héritage et le polymorphisme.
Les avantages d'OOPS sont la réutilisabilité, l'extensibilité et la modularité qui améliorent la productivité, plus faciles à maintenir en raison de la modularité, des coûts de développement plus rapides et plus faibles grâce à la réutilisation du code, produisent des applications sécurisées et de haute qualité.
Ce que vous apprendrez:
Concepts de base de la programmation orientée objet
La programmation orientée objet implique des objets intellectuels, des données et des comportements associés pour apporter des solutions aux problèmes commerciaux. Dans le langage de programmation Java, pour concevoir des solutions aux problèmes commerciaux, les développeurs appliquent des concepts tels que l'abstraction, l'encapsulation, l'héritage et le polymorphisme.
Différents concepts tels que Abstraction qui ignore les détails non pertinents, Encapsulation qui se concentre sur le minimum requis sans révéler aucune complexité sur les fonctionnalités internes, Héritage pour hériter des propriétés de la classe parente ou implémenter plusieurs héritages à l'aide d'une interface, et Polymorphisme qui étend les propriétés de la surcharge de méthode (polymorphisme statique) et du remplacement de méthode (polymorphisme dynamique).
Questions d'entrevue OOPS les plus fréquemment posées
Q # 1) Expliquez brièvement ce que vous entendez par programmation orientée objet en Java?
Répondre: La POO traite des objets, comme des entités réelles telles que stylo, mobile, compte bancaire qui a un état (données) et un comportement (méthodes).
Avec l'aide de l'accès, l'accès des prescripteurs à ces données et méthodes est sécurisé. Les concepts d'encapsulation et d'abstraction offrent le masquage des données et l'accès aux éléments essentiels, l'héritage et le polymorphisme aident à réutiliser le code et à surcharger / remplacer les méthodes et les constructeurs, rendant les applications indépendantes de la plate-forme, sécurisées et robustes à l'aide de langages comme Java.
Q # 2) Expliquez Java est-il un langage purement orienté objet?
Répondre: Java n'est pas un langage de programmation entièrement orienté objet. Voici les raisons:
- Java prend en charge et utilise des types de données primitifs tels que int, float, double, char, etc.
- Les types de données primitifs sont stockés sous forme de variables ou sur la pile au lieu du tas.
- En Java, les méthodes statiques peuvent accéder aux variables statiques sans utiliser d'objet, contrairement aux concepts orientés objet.
Q # 3) Décrivez la classe et l'objet en Java?
Répondre: La classe et l'objet jouent un rôle essentiel dans les langages de programmation orientés objet comme Java.
- La classe est un prototype ou un modèle dont l'état et le comportement sont pris en charge par un objet et utilisés dans la création d'objets.
- L'objet est une instance de la classe, par exemple, L'humain est une classe dont l'état a un système vertébral, un cerveau, une couleur et une taille et a un comportement tel que canThink (), ableToSpeak (), etc.
Q # 4) Quelles sont les différences entre la classe et les objets en Java?
Répondre: Voici quelques différences majeures entre la classe et les objets en Java:
Classer | Objet |
---|---|
Des exemples réels de classe peuvent être • Une recette pour préparer la nourriture. • Impressions bleues pour un moteur automobile. | Des exemples réels d'Object peuvent être • Un aliment préparé à partir d'une recette. • Moteur construit selon les plans. |
La classe est une entité logique | L'objet est une entité physique |
La classe est un modèle à partir duquel un objet peut être créé | L'objet est une instance de la classe |
La classe est un prototype qui a l'état et le comportement d'objets similaires | Les objets sont des entités qui existent dans la vie réelle telles que des objets mobiles, des souris ou des objets intellectuels tels qu'un compte bancaire |
La classe est déclarée avec un mot clé de classe comme classe Nom de classe {} | L'objet est créé via un nouveau mot-clé comme Employee emp = new Employee (); |
Lors de la création de classe, il n'y a pas d'allocation de mémoire | Lors de la création de l'objet, la mémoire est allouée à l'objet |
Il n'y a qu'une classe à sens unique définie à l'aide du mot-clé class | La création d'objet peut être effectuée de différentes manières, par exemple en utilisant un nouveau mot-clé, une méthode newInstance (), une méthode clone () et une méthode d'usine. |
Q # 5) Pourquoi un besoin de programmation orientée objet?
Répondre: La POO fournit des spécificateurs d'accès et des fonctionnalités de masquage des données pour plus de sécurité et contrôle l'accès aux données, une surcharge peut être obtenue avec une surcharge de fonctions et d'opérateurs, la réutilisation du code est possible car les objets déjà créés dans un programme peuvent être utilisés dans d'autres programmes.
La redondance des données, la maintenance du code, la sécurité des données et l'avantage de concepts tels que l'encapsulation, l'abstraction, le polymorphisme et l'héritage dans la programmation orientée objet offrent un avantage par rapport aux langages de programmation procéduraux précédemment utilisés.
Q # 6) Expliquez l'abstraction avec un exemple en temps réel.
Répondre: L'abstraction dans la programmation orientée objet signifie cacher des éléments internes complexes mais n'exposer que les caractéristiques et le comportement essentiels par rapport au contexte. Dans la vraie vie, un exemple d'abstraction est un panier d'achat en ligne, par exemple sur n'importe quel site de commerce électronique. Une fois que vous avez sélectionné un produit et enregistré une commande, vous souhaitez simplement recevoir votre produit à temps.
La façon dont les choses se passent n'est pas ce qui vous intéresse, car elle est complexe et cachée. C'est ce qu'on appelle l'abstraction. De même, prenez l'exemple de l'ATM, la complexité des éléments internes de la façon dont l'argent est débité de votre compte est cachée et vous recevez de l'argent via un réseau. De même pour les voitures, la façon dont l'essence fait tourner le moteur est extrêmement complexe.
Q # 7) Donnez des exemples en temps réel et expliquez l'héritage.
Répondre: L'héritage signifie qu'une classe (sous-classe) acquiert les propriétés d'une autre classe (super-classe) par héritage. Dans la vraie vie, prenons un exemple d'héritage d'un vélo normal où il s'agit d'une classe parent et un vélo de sport peut être une classe enfant, où le vélo de sport a hérité des propriétés et du comportement des roues rotatives à pédales via les engrenages d'un vélo normal.
Q # 8) Comment fonctionne le polymorphisme en Java, expliquez avec des exemples réels?
Répondre: Le polymorphisme est une capacité à avoir plusieurs formes ou une capacité de la méthode à faire des choses différentes. Dans la vraie vie, la même personne accomplissant différentes tâches se comporte différemment. Au bureau, il est employé, à la maison, il est père, pendant ou après les cours, il est étudiant, le week-end, il joue au cricket et joue dans la cour de récréation.
Questions et réponses d'entrevue j2ee pour les développeurs seniors
En Java, il existe deux types de polymorphisme
- Au moment de la compilation polymorphisme: Ceci est réalisé par une surcharge de méthode ou une surcharge d'opérateur.
- Polymorphisme d'exécution: Ceci est réalisé par substitution de méthode.
Q # 9) Combien de types d'héritage sont présents?
Répondre: Différents types d'héritage sont répertoriés ci-dessous:
- Héritage unique: La classe enfant unique hérite des caractéristiques de la classe monoparentale.
- Héritage multiple: Une classe hérite des fonctionnalités de plusieurs classes de base et n'est pas prise en charge en Java, mais la classe peut implémenter plusieurs interfaces.
- Héritage à plusieurs niveaux: Une classe peut hériter d'une classe dérivée, ce qui en fait une classe de base pour une nouvelle classe, par exemple, un enfant hérite du comportement de son père et le père a hérité des caractéristiques de son père.
- Héritage hiérarchique: Une classe est héritée par plusieurs sous-classes.
- Héritage hybride: Il s'agit d'une combinaison d'héritages uniques et multiples.
Q # 10) Qu'est-ce que l'interface?
Répondre: L'interface est similaire à la classe où elle peut avoir des méthodes et des variables, mais ses méthodes n'ont pas de corps, juste une signature connue sous le nom de méthode abstraite. Les variables déclarées dans l'interface peuvent avoir public, static et final par défaut. L'interface est utilisée en Java pour l'abstraction et les héritages multiples, où la classe peut implémenter plusieurs interfaces.
Q # 11) Pouvez-vous expliquer les avantages de l'abstraction et de l'héritage?
Répondre: L'abstraction ne révèle que les détails essentiels à l'utilisateur et ignore ou masque les détails non pertinents ou complexes. En d'autres termes, l'abstraction des données expose l'interface et masque les détails d'implémentation. Java exécute l'abstraction à l'aide d'interfaces et de classes abstraites. L'avantage de l'abstraction est qu'elle simplifie la visualisation des choses en réduisant ou en masquant la complexité de la mise en œuvre.
La duplication du code est évitée et augmente la réutilisabilité du code. Seuls les détails essentiels sont révélés à l'utilisateur et améliore la sécurité de l'application.
L'héritage est l'endroit où la classe enfant hérite des fonctionnalités (comportement) de la classe parent. Nous n'avons pas besoin d'écrire du code une fois écrit dans la classe parent pour les fonctionnalités à nouveau dans la classe enfant et facilitant ainsi la réutilisation du code. Le code devient également lisible. L'héritage est utilisé lorsqu'il y a «une» relation. Exemple: Hyundai est un voiture OU MS Word est un Logiciel.
Q # 12) Quelle est la différence entre étend et implémente?
Répondre: Les mots clés extend et implements sont utilisés pour l'héritage, mais de différentes manières.
Les différences entre les mots clés Extends et Implements en Java sont expliquées ci-dessous:
Prolonge | Met en oeuvre |
---|---|
Une classe peut étendre une autre classe (enfant étendant le parent en héritant de ses caractéristiques). L'interface hérite également (en utilisant le mot clé étend) une autre interface. | Une classe peut implémenter une interface |
La sous-classe qui étend la super classe ne peut pas remplacer toutes les méthodes de la super classe | L'interface d'implémentation de classe doit implémenter toutes les méthodes de l'interface. |
La classe ne peut étendre qu'une seule super classe. | La classe peut implémenter n'importe quel nombre d'interfaces. |
L'interface peut étendre plusieurs interfaces. | L'interface ne peut implémenter aucune autre interface. |
Syntaxe: classe Enfant étend la classe Parent | Syntaxe: class Hybrid implémente Rose |
Q # 13) Quels sont les différents modificateurs d'accès en Java?
Répondre: Les modificateurs d'accès en Java contrôlent la portée de la classe, du constructeur, de la variable, de la méthode ou du membre de données. Les différents types de modificateurs d'accès sont les suivants:
- Modificateur d'accès par défaut est sans aucun membre de données, classe et méthodes de spécificateur d'accès, et est accessible dans le même package.
- Modificateurs d'accès privé sont marqués du mot-clé private, et ne sont accessibles que dans la classe, et même pas accessibles par classe à partir du même package.
- Modificateurs d'accès protégés peuvent être accessibles dans le même package ou sous-classes à partir de différents packages.
- Modificateurs d'accès public sont accessibles de partout.
Q # 14) Expliquez la différence entre la classe abstraite et la méthode?
Répondre: Voici quelques différences entre la classe abstraite et la méthode abstraite en Java:
Classe abstraite | Méthode abstraite |
---|---|
L'objet ne peut pas être créé à partir de la classe abstraite. | La méthode abstraite a une signature mais n'a pas de corps. |
Sous-classe créée ou hérite d'une classe abstraite pour accéder aux membres de la classe abstraite. | Il est obligatoire de remplacer les méthodes abstraites de la super classe dans leur sous-classe. |
La classe abstraite peut contenir des méthodes abstraites ou des méthodes non abstraites. | La classe contenant une méthode abstraite doit être transformée en classe abstraite. |
Q # 15) Quelles sont les différences entre la méthode et le constructeur?
Répondre: Voici les différences entre les constructeurs et les méthodes en Java:
Constructeurs | Méthodes |
---|---|
Le nom du constructeur doit correspondre à celui de la classe. | Les méthodes ne doivent pas avoir le même nom que le nom de la classe. |
Ils sont utilisés pour créer, initialiser et allouer de la mémoire à l'objet. | Les méthodes sont utilisées pour exécuter certaines instructions écrites à l'intérieur. |
Les constructeurs sont implicitement invoqués par le système chaque fois que des objets sont créés. | Les méthodes sont appelées lorsqu'elle est appelée. |
Ils sont appelés à l'aide d'un nouveau mot-clé lors de la création d'une instance de la classe (objet). | Les méthodes sont appelées pendant l'exécution du programme. |
Le constructeur n'a pas de type de retour. | La méthode a un type de retour. |
Le constructeur ne peut pas être hérité par la sous-classe. | Les méthodes peuvent être héritées par une sous-classe. |
Q # 16) Qu'est-ce qu'un constructeur en Java?
Répondre: Le constructeur est une méthode sans type de retour et son nom est le même que celui de la classe. Lorsque nous créons un objet, un constructeur par défaut alloue de la mémoire à un objet lors de la compilation du code Java. Les constructeurs sont utilisés pour initialiser les objets et définir les valeurs initiales des attributs d'objet.
Q # 17) Combien de types de constructeurs peuvent être utilisés en Java? S'il vous plaît, expliquez.
Répondre: Il existe essentiellement trois types de constructeurs en Java.
Ceux-ci sont:
- Constructeur par défaut: Ce constructeur est sans paramètre et appelle chaque fois que vous créez une instance d'une classe (objet). Si une classe est un employé, la syntaxe du constructeur par défaut sera Employee ().
- Constructeur sans argument: Comme son nom l'indique, un constructeur sans aucun argument est appelé un constructeur sans argument.
- Constructeur paramétré: Un constructeur avec un certain nombre de paramètres est appelé un constructeur paramétré. Vous devez fournir des arguments, c'est-à-dire des valeurs initiales par rapport au type de données des paramètres dans ce constructeur.
Q # 18) Pourquoi un nouveau mot-clé est utilisé en Java?
Répondre: Lorsque nous créons une instance de classe, c'est-à-dire des objets, nous utilisons le mot-clé Java Nouveau . Il alloue de la mémoire dans la zone de tas où JVM réserve de l'espace pour un objet. En interne, il appelle également le constructeur par défaut.
Syntaxe:
Class_name obj = new Class_name();
Q # 19) Quand utilisez-vous le mot clé super?
Répondre: super est un mot-clé Java utilisé pour identifier ou faire référence à la classe parent (de base).
- Nous pouvons utiliser super pour accéder au constructeur de la super classe et appeler les méthodes de la super classe.
- Lorsque les noms de méthode sont identiques dans la super classe et la sous-classe, pour faire référence à la super classe, le super le mot-clé est utilisé.
- Pour accéder aux membres de données de même nom de la classe parent lorsqu'ils sont présents dans la classe parent et enfant.
- super peut être utilisé pour faire un appel explicite aux constructeurs no-arg et paramétrés de la classe parent.
- L'accès à la méthode de classe parent peut être effectué en utilisant super , lorsque la classe enfant a une méthode remplacée.
Q # 20) Quand utilisez-vous ce mot-clé?
Répondre: ce Le mot clé en Java fait référence à l'objet courant dans le constructeur ou dans la méthode.
- Lorsque les attributs de classe et les constructeurs paramétrés ont tous deux le même nom, ce le mot-clé est utilisé.
- Mots clés ce invoque le constructeur de la classe actuelle, la méthode de la classe actuelle, renvoie l'objet de la classe actuelle, passe un argument dans le constructeur et appelle la méthode.
Q # 21) Quelle est la différence entre le polymorphisme d'exécution et de compilation?
Répondre: Le polymorphisme à l'exécution et à la compilation sont deux types différents de polymorphisme. Leurs différences sont expliquées ci-dessous:
Polymorphisme au moment de la compilation | Polymorphisme d'exécution |
---|---|
L'appel est résolu par un compilateur en polymorphisme à la compilation. | L'appel n'est pas résolu par le compilateur dans le polymorphisme d'exécution. |
Il est également connu sous le nom de liaison statique et de surcharge de méthode. | Il est également connu sous le nom de remplacement dynamique, tardif et de méthode. |
Les méthodes de même nom avec différents paramètres ou méthodes avec la même signature et différents types de retour sont un polymorphisme à la compilation. | Une méthode de même nom avec les mêmes paramètres ou signature associés dans différentes classes est appelée remplacement de méthode. |
Il est obtenu par surcharge de fonctions et d'opérateurs. | Il peut être réalisé par des pointeurs et des fonctions virtuelles. |
Comme toutes les choses sont exécutées au moment de la compilation. le polymorphisme à la compilation est moins flexible. | Comme les choses s'exécutent au moment de l'exécution, le polymorphisme d'exécution est plus flexible. |
Q # 22) Quelles fonctionnalités orientées objet sont utilisées en Java?
Répondre: Un concept d'utilisation d'un objet dans le langage de programmation Java bénéficie de l'utilisation de concepts orientés objet tels que l'encapsulation pour relier l'état et le comportement d'un objet, sécurise l'accès aux données avec des spécificateurs d'accès, des fonctionnalités telles que l'abstraction dans le masquage des informations, l'héritage pour étendre l'état , et comportement des classes de base en classes enfants, polymorphisme à la compilation et à l'exécution pour la surcharge de méthode et le remplacement de méthode, respectivement.
Q # 23) Qu'est-ce que la surcharge de méthode?
Répondre: Lorsque deux méthodes ou plus portant le même nom ont un nombre de paramètres différent ou des types de paramètres différents, ces méthodes peuvent avoir ou non des types de retour différents, alors ce sont des méthodes surchargées et la fonctionnalité est la surcharge de méthode. La surcharge de méthode est également appelée polymorphisme à la compilation.
Implémentation de l'algorithme de chemin le plus court de dijkstra en java
Q # 24) Qu'est-ce que la substitution de méthode?
Répondre: Lorsqu'une méthode de sous-classe (dérivée, classe enfant) a le même nom, les mêmes paramètres (signature) et le même type de retour que la méthode de sa super classe (base, classe parent), alors la méthode de la sous-classe est dite remplacée la méthode dans la superclasse. Cette fonctionnalité est également connue sous le nom de polymorphisme d'exécution.
Q # 25) Expliquez la surcharge du constructeur.
Répondre: Plus d'un constructeur ayant des paramètres différents afin que différentes tâches puissent être effectuées avec chaque constructeur est connu sous le nom de surcharge de constructeur. Avec la surcharge du constructeur, les objets peuvent être créés de différentes manières. Diverses classes Collection dans l'API Java sont des exemples de surcharge de constructeur.
Q # 26) Quels types d'arguments peuvent être utilisés en Java?
Répondre: Pour les méthodes et fonctions Java, les données de paramètres peuvent être envoyées et reçues de différentes manières. Si methodB () est appelée depuis methodA (), methodA () est une fonction appelante et methodB () est appelée fonction, les arguments envoyés par methodA () sont des arguments réels et les paramètres de methodB () sont appelés arguments formels.
- Appel par valeur: Les modifications apportées au paramètre formel (les paramètres de methodB ()) ne sont pas renvoyés à l'appelant (methodA ()), Cette méthode est appelée appel par valeur . Java prend en charge l'appel par valeur.
- Appel par référence: Les modifications apportées au paramètre formel (paramètres de methodB ()) sont renvoyées à l'appelant (paramètres de methodB ()).
- Toute modification des paramètres formels (paramètres de methodB ()) est reflétée dans les paramètres réels (arguments envoyés par methodA ()). Ceci est appelé appel par référence.
Q # 27) Faire la différence entre la liaison statique et dynamique?
Répondre: Les différences entre la liaison statique et dynamique sont expliquées dans le tableau ci-dessous.
Reliure statique | Liaison dynamique |
---|---|
La liaison statique en Java utilise le type de champs et la classe à comme résolution. | La liaison dynamique en Java utilise un objet pour résoudre la liaison. |
La surcharge de méthode est un exemple de liaison statique. | Le remplacement de méthode est un exemple de liaison dynamique. |
La liaison statique est résolue au moment de la compilation. | La liaison dynamique est résolue au moment de l'exécution. |
Les méthodes et les variables utilisant la liaison statique sont des types privé, final et statique. | Les méthodes virtuelles utilisent la liaison dynamique. |
Q # 28) Pouvez-vous expliquer la classe de base, la sous-classe et la superclasse?
Réponse: La classe de base, la sous-classe et la super classe en Java sont expliquées comme suit:
- La classe de base ou la classe parente est une super-classe et est une classe dont la sous-classe ou la classe enfant est dérivée.
- La sous-classe est une classe qui hérite des attributs (propriétés) et des méthodes (comportement) de la classe de base.
Q # 29) La surcharge de l'opérateur est-elle prise en charge dans Java?
Répondre: La surcharge d'opérateur n'est pas prise en charge par Java car,
- Cela oblige l'interpréteur à faire plus d'efforts pour comprendre la fonctionnalité réelle de l'opérateur, ce qui rend le code complexe et difficile à compiler.
- La surcharge des opérateurs rend les programmes plus sujets aux erreurs.
- Cependant, la fonctionnalité de surcharge de l'opérateur peut être obtenue dans la surcharge de méthode d'une manière simple, claire et sans erreur.
Q # 30) Quand la méthode de finalisation est-elle utilisée?
Répondre: finaliser est appelée juste avant que l'objet ne soit sur le point d'être récupéré. Cette méthode remplace pour minimiser les fuites de mémoire, entreprendre des activités de nettoyage en supprimant les ressources système.
Q # 31) Expliquez les jetons.
Répondre: Les jetons dans le programme Java sont les plus petits éléments que le compilateur reconnaît. Les identificateurs, mots-clés, littéraux, opérateurs et séparateurs sont des exemples de jetons.
Conclusion
Les concepts de programmation orientée objet font partie intégrante des développeurs, de l'automatisation ainsi que des testeurs manuels qui conçoivent un cadre de test d'automatisation pour tester une application ou développer des applications avec le langage de programmation Java.
Une compréhension approfondie est obligatoire de toutes les fonctionnalités orientées objet telles que la classe, l'objet, l'abstraction, l'encapsulation, l'héritage, le polymorphisme et l'application de ces concepts dans un langage de programmation comme Java pour répondre aux besoins des clients.
Nous avons essayé de couvrir les questions d'entretien de programmation orientée objet les plus importantes et avons donné des réponses appropriées avec des exemples.
Nous vous souhaitons le meilleur pour votre prochaine interview!
lecture recommandée
- OOP Java: Introduction à la programmation orientée objet en Java
- Top 20 des programmes d'entretien Java pour la programmation et le codage d'entrevue
- Top 50+ Core Java Questions et réponses d'entrevue
- Tutoriel sur l'interface Java et les classes abstraites avec des exemples
- Encapsulation en Java: tutoriel complet avec des exemples
- Qu'est-ce que l'abstraction en Java - Apprenez avec des exemples
- Concepts OOPS en C #: didacticiel sur le concept de programmation orientée objet
- Concepts de POO Python (classes, objets et héritage Python)