top 30 oops interview questions
Aquest tutorial proporciona un conjunt complet de preguntes i respostes a les entrevistes de programació orientada a objectes (OOP):
El desenvolupament de programari té al voltant de més de 70 anys d’història on es van inventar diversos llenguatges com FORTRAN, Pascal, C, C ++. Hi havia una sèrie d’afirmacions que actuen com a ordres donades al maquinari per realitzar alguns càlculs matemàtics bàsics, fent llenguatges de procediment per dissenyar diverses aplicacions de programari.
Amb l’invent d’Internet, es necessitaven llenguatges segurs, estables i independents de la plataforma i robustos per dissenyar aplicacions complexes.
La programació orientada a objectes és independent de la plataforma, és portàtil, segura i està equipada amb diversos conceptes com encapsulació, abstracció, herència i polimorfisme.
Els avantatges d’OOPS són la reutilització, l’extensibilitat i la modularitat que milloren la productivitat, més fàcil de mantenir a causa de la modularitat, el cost de desenvolupament més ràpid i menor a causa de la reutilització del codi, produeix aplicacions segures i d’alta qualitat.
Què aprendreu:
Conceptes bàsics de programació orientada a objectes
La programació orientada a objectes implica objectes intel·lectuals, dades i comportament associats per aportar solucions a problemes empresarials. En el llenguatge de programació Java, per dissenyar solucions per a problemes empresarials, els desenvolupadors apliquen conceptes com abstracció, encapsulació, herència i polimorfisme.
Diversos conceptes com Abstracció que ignora els detalls irrellevants, Encapsulació que se centra en el mínim que es requereix sense revelar cap complexitat sobre les funcionalitats internes, Herència per heretar propietats de la classe pare o implementar múltiples herències mitjançant una interfície, i Polimorfisme que amplia les propietats de la sobrecàrrega del mètode (polimorfisme estàtic) i la substitució del mètode (polimorfisme dinàmic).
Preguntes més freqüents sobre l'entrevista OOPS
P # 1) Expliqueu breument què voleu dir amb programació orientada a objectes a Java?
Resposta: OOP tracta d’objectes, com ara entitats de la vida real, com ara un bolígraf, un mòbil, un compte bancari que té estat (dades) i comportament (mètodes).
Amb l'ajut d'accés, l'accés als especificadors a aquestes dades i mètodes es fa segur. Els conceptes d’encapsulació i abstracció ofereixen ocultació de dades i accés a elements essencials, herència i polimorfisme ajuden a la reutilització del codi i la sobrecàrrega / anul·lació de mètodes i constructors, fent que les aplicacions siguin independents de la plataforma, segures i robustes mitjançant llenguatges com Java.
P # 2) Explicar Java és un llenguatge pur orientat a objectes?
Resposta: Java no és un llenguatge de programació completament orientat a objectes. Els motius següents són:
- Java admet i utilitza tipus de dades primitius com int, float, double, char, etc.
- Els tipus de dades primitius s’emmagatzemen com a variables o a la pila en lloc del munt.
- A Java, els mètodes estàtics poden accedir a variables estàtiques sense utilitzar cap objecte, contràriament als conceptes orientats a objectes.
P # 3) Descriviu la classe i l'objecte a Java?
Resposta: La classe i l’objecte tenen un paper integral en llenguatges de programació orientats a objectes com Java.
- Class és un prototip o una plantilla que té un estat i un comportament suportats per un objecte i que s’utilitzen en la creació d’objectes.
- L'objecte és una instància de la classe, per exemple, L’ésser humà és una classe amb l’estat que té un sistema vertebral, cervell, color i alçada i té un comportament com canThink (), capableToSpeak (), etc.
Q # 4) Quines diferències hi ha entre classe i objectes a Java?
Resposta: A continuació es mostren algunes diferències importants entre la classe i els objectes de Java:
Classe | Objecte |
---|---|
Els exemples reals de classe poden ser • Una recepta per preparar els aliments. • Pintures blaves per a un motor d’automòbil. | Es poden trobar exemples reals d’objectes • Un menjar preparat a partir de recepta. • Motor construït segons els plànols. |
La classe és una entitat lògica | L'objecte és una entitat física |
Class és una plantilla a partir de la qual es pot crear l'objecte | Object és una instància de la classe |
Class és un prototip que té l’estat i el comportament d’objectes similars | Els objectes són entitats que existeixen a la vida real, com ara mòbils, ratolins o objectes intel·lectuals, com ara comptes bancaris |
La classe es declara amb la paraula clau de classe, com ara Classname {} | L'objecte es crea mitjançant una paraula clau nova com a Employee emp = new Employee (); |
Durant la creació de classes, no hi ha assignació de memòria | Durant la creació d'objectes, la memòria s'assigna a l'objecte |
Només es defineix una classe de sentit únic mitjançant la paraula clau de classe | La creació d'objectes es pot fer de moltes maneres, com ara utilitzar paraules clau noves, mètode newInstance (), clone () i mètode de fàbrica. |
Q # 5) Per què és necessària una programació orientada a objectes?
Resposta: OOP proporciona especificadors d’accés i funcions d’amagatall de dades per obtenir més seguretat i control de l'accés a les dades, es pot aconseguir una sobrecàrrega amb la sobrecàrrega de funcions i operadors, la reutilització de codi és possible ja que els objectes ja creats en un programa es poden utilitzar en altres programes.
La redundància de dades, el manteniment del codi, la seguretat de les dades i l’avantatge de conceptes com l’encapsulació, l’abstracció, el polimorfisme i l’herència en la programació orientada a objectes ofereixen un avantatge respecte als llenguatges de programació procedimentals utilitzats anteriorment.
Q # 6) Expliqueu l'abstracció amb un exemple en temps real.
Resposta: L’abstracció en la programació orientada a objectes significa amagar interns complexos però exposar només les característiques essencials i el comportament respecte al context. A la vida real, un exemple d’abstracció és un carretó electrònic, per exemple, en qualsevol lloc de comerç electrònic. Un cop seleccioneu un producte i feu una comanda de llibre, només us interessa rebre el producte a temps.
Com passen les coses no us interessa, ja que és complex i es manté ocult. Això es coneix com abstracció. De la mateixa manera, prenguem l'exemple de caixers automàtics, la complexitat de les dades internes de com es deixen els diners al vostre compte i es rep diners en efectiu a través d'una xarxa. De manera similar per als cotxes, la forma en què la gasolina fa funcionar el motor és extremadament complexa.
P # 7) Poseu alguns exemples en temps real i expliqueu l’herència.
Resposta: Herència significa una classe (subclasse) que adquireix propietats d’una altra classe (superclasse) per herència. A la vida real, preneu un exemple d’herència d’una bicicleta normal en què és una classe principal i una bicicleta esportiva pot ser una classe infantil, on la bicicleta esportiva ha heretat les propietats i el comportament de les rodes giratòries amb pedals mitjançant engranatges que la d’una bicicleta normal.
Q # 8) Com funciona el polimorfisme a Java, expliqueu-ho amb exemples de la vida real?
Resposta: El polimorfisme és la capacitat de tenir diverses formes o capacitat del mètode per fer coses diferents. A la vida real, la mateixa persona que realitza tasques diferents es comporta de manera diferent. A l’oficina és empleat, a casa, és pare, durant les matrícules o després de l’escola és estudiant, els caps de setmana juga al criquet i juga al pati.
quina eina etl és la millor del mercat
A Java, hi ha dos tipus de polimorfisme
- Temps de compilació polimorfisme: Això s’aconsegueix mitjançant la sobrecàrrega del mètode o la sobrecàrrega de l’operador.
- Polimorfisme en temps d'execució: Això s'aconsegueix mitjançant la substitució del mètode.
P # 9) Quants tipus d’herència hi ha?
Resposta: A continuació s’enumeren diversos tipus d’herència:
- Herència única: La classe fill únic hereta les característiques de la classe monoparental.
- Herència múltiple: Una classe hereta les funcions de més d’una classe base i no és compatible amb Java, però la classe pot implementar més d’una interfície.
- Herència multinivell: Una classe pot heretar d'una classe derivada, convertint-la en una classe base per a una nova classe, per exemple, un nen hereta el comportament del seu pare, i el pare ha heretat les característiques del seu pare.
- Herència jeràrquica: Una classe és heretada per diverses subclasses.
- Herència híbrida: Es tracta d’una combinació d’herències individuals i múltiples.
Q # 10) Què és la interfície?
Resposta: La interfície és similar a la classe on pot tenir mètodes i variables, però els seus mètodes no tenen un cos, només una signatura coneguda com a mètode abstracte. Les variables declarades a la interfície poden tenir públics, estàtics i finals per defecte. La interfície s'utilitza a Java per a l'abstracció i les herències múltiples, on la classe pot implementar diverses interfícies.
Q # 11) Podeu explicar els avantatges de l'abstracció i l'herència?
Resposta: L’abstracció només revela a l’usuari detalls essencials i ignora o amaga detalls irrellevants o complexos. En altres paraules, l’abstracció de dades exposa la interfície i amaga els detalls de la implementació. Java realitza l’abstracció amb l’ajut d’interfícies i classes abstractes. L’avantatge de l’abstracció és que facilita la visualització de les coses reduint o amagant la complexitat de la implementació.
S'evita la duplicació de codi i augmenta la reutilització del codi. Només es revelen a l'usuari els detalls essencials i millora la seguretat de l'aplicació.
L’herència és on la classe fill hereta la funcionalitat (comportament) de la classe pare. No necessitem escriure codi un cop escrit a la classe pare per tornar a la funcionalitat a la classe infantil i, per tant, és més fàcil reutilitzar el codi. El codi també es pot llegir. L'herència s'utilitza quan hi ha una 'relació'. Exemple: Hyundai és un cotxe O MS Word és un programari.
P # 12) Quina diferència hi ha entre eines i eines?
Resposta: Tant extensions com implementacions de paraules clau s'utilitzen per heretar, però de maneres diferents.
A continuació s’expliquen les diferències entre les paraules clau Extends i Implements a Java:
S’estén | Implementa |
---|---|
Una classe pot ampliar una altra classe (fill extensor dels pares heretant les seves característiques). La interfície també hereta (mitjançant la paraula clau extends) una altra interfície. | Una classe pot implementar una interfície |
És possible que la subclasse que estén la superclasse no anul·li tots els mètodes de la superclasse | La interfície d'implementació de classe ha d'implementar tots els mètodes de la interfície. |
La classe només pot ampliar una sola superclasse. | Class pot implementar qualsevol nombre d'interfícies. |
La interfície pot estendre més d'una interfície. | La interfície no pot implementar cap altra interfície. |
Sintaxi: classe Nen amplia la classe Pares | Sintaxi: La classe Hybrid implementa Rose |
P # 13) Quins són els diferents modificadors d'accés a Java?
Resposta: Els modificadors d’accés a Java controlen l’abast d’accés de la classe, el constructor, la variable, el mètode o el membre de dades. Els diferents tipus de modificadors d’accés són els següents:
- Modificador d'accés per defecte no té cap membre, classe ni mètode de dades d’especificadors d’accés i són accessibles dins del mateix paquet.
- Modificadors d'accés privat estan marcats amb la paraula clau privada i només són accessibles dins de la classe i ni tan sols són accessibles per classe des del mateix paquet.
- Modificadors d'accés protegit es pot accedir al mateix paquet o subclasses des de paquets diferents.
- Modificadors d'accés públic són accessibles des de qualsevol lloc.
Q # 14) Expliqueu la diferència entre la classe abstracta i el mètode?
Resposta: A continuació es mostren algunes diferències entre la classe abstracta i el mètode abstracte a Java:
Classe de Resum | Mètode abstracte |
---|---|
L'objecte no es pot crear a partir de la classe abstracta. | El mètode abstracte té una signatura però no té un cos. |
La subclasse ha creat o hereta la classe abstracta per accedir als membres de la classe abstracta. | És obligatori anul·lar els mètodes abstractes de super classe a la seva subclasse. |
La classe abstracta pot contenir mètodes abstractes o mètodes no abstractes. | La classe que conté un mètode abstracte s'ha de fer classe abstracta. |
P # 15) Quines diferències hi ha entre el mètode i el constructor?
Resposta: A continuació es mostren les diferències entre constructors i mètodes a Java:
Constructors | Mètodes |
---|---|
El nom dels constructors hauria de coincidir amb el de la classe. | Els mètodes no haurien de tenir el mateix nom que el nom de la classe. |
S'utilitzen per crear, inicialitzar i assignar memòria a l'objecte. | S’utilitzen mètodes per executar determinades sentències escrites al seu interior. |
El sistema invoca implícitament els constructors sempre que es creen objectes. | Els mètodes s’invoquen quan s’anomena. |
S'invoca mitjançant una paraula clau nova mentre es crea una instància de la classe (objecte). | Els mètodes s’invoquen durant l’execució del programa. |
El constructor no té tipus de retorn. | El mètode té un tipus de retorn. |
La subclase no pot heretar el constructor. | Els mètodes poden ser heretats per una subclasse. |
P # 16) Què és un constructor a Java?
Resposta: Constructor és un mètode sense tipus de retorn i té el seu nom igual que el nom de la classe. Quan creem un objecte, un constructor per defecte assigna memòria a un objecte durant la compilació del codi Java. Els constructors s’utilitzen per inicialitzar objectes i establir valors inicials per als atributs dels objectes.
P # 17) Quants tipus de constructors es poden utilitzar a Java? Si us plau expliqui.
Resposta: Bàsicament hi ha tres tipus de constructors a Java.
Aquests són:
- Constructor per defecte: Aquest constructor no té cap paràmetre i invoca cada vegada que creeu una instància d'una classe (objecte). Si una classe és un empleat, la sintaxi del constructor per defecte serà Employee ().
- No-arg constructor: Com el seu nom indica, un constructor sense cap argument s’anomena constructor sense arg.
- Constructor parametritzat: El constructor amb diversos paràmetres s’anomena constructor parametritzat. Se us demana que proporcioneu arguments, és a dir, valors inicials respecte al tipus de dades de paràmetres d’aquest constructor.
P # 18) Per què s'utilitza una paraula clau nova a Java?
Resposta: Quan creem una instància de classe, és a dir, objectes, fem servir la paraula clau Java nou . Assigna memòria a l'àrea de muntatge on JVM reserva espai per a un objecte. Internament, també invoca el constructor per defecte.
Sintaxi:
com crear un fitxer xml testng en eclipsi
Class_name obj = new Class_name();
P # 19) Quan utilitzeu la paraula clau super?
Resposta: Súper és una paraula clau Java que s'utilitza per identificar o referir la classe pare (base).
- Podem utilitzar super per accedir al mètode de construcció de super classes i trucar a la classe super.
- Quan els noms dels mètodes són els mateixos en superclasse i subclasse, per referir-se a superclasse, el súper s'utilitza la paraula clau.
- Per accedir a les dades del mateix nom membres de la classe pare quan estiguin presents a la classe pare i fill.
- Súper es pot utilitzar per fer una trucada explícita a constructors no-arg i parametritzats de la classe pare.
- L’accés al mètode de classe pare es pot fer mitjançant súper , quan la classe infantil té mètode anul·lat.
P # 20) Quan utilitzeu aquesta paraula clau?
Resposta: això La paraula clau Java fa referència a l'objecte actual del constructor o del mètode.
- Quan els atributs de classe i els constructors parametritzats tenen el mateix nom, això s'utilitza la paraula clau.
- Paraules clau això invoca el constructor de classe actual, el mètode de la classe actual, retorna l'objecte de la classe actual, passa un argument al constructor i crida al mètode.
Q # 21) Quina diferència hi ha entre el temps d'execució i el polimorfisme en temps de compilació?
Resposta: Tant el temps d'execució com el polimorfisme en temps de compilació són dos tipus diferents de polimorfisme. Les seves diferències s’expliquen a continuació:
Compilar polimorfisme de temps | Polimorfisme en temps d'execució |
---|---|
Un compilador resol la trucada en polimorfisme en temps de compilació. | El compilador no resol la trucada en polimorfisme en temps d'execució. |
També es coneix com a unió estàtica i sobrecàrrega de mètodes. | També es coneix com a substitució dinàmica, tardana i de mètode. |
Els mètodes del mateix nom amb paràmetres diferents o mètodes amb la mateixa signatura i diferents tipus de retorn són polimorfisme en temps de compilació. | El mètode del mateix nom amb els mateixos paràmetres o signatura associada a diferents classes s'anomena mètode de substitució. |
S’aconsegueix mitjançant una sobrecàrrega de funcions i operadors. | Es pot aconseguir mitjançant punteres i funcions virtuals. |
Com que totes les coses s'executen en el moment de la compilació. el polimorfisme en temps de compilació és menys flexible. | A mesura que les coses s’executen en temps d’execució, el polimorfisme en temps d’execució és més flexible. |
P # 22) Quines funcions orientades a objectes s’utilitzen a Java?
Resposta: El concepte d’utilitzar un objecte en llenguatge de programació Java es beneficia de l’ús de conceptes orientats a objectes com l’encapsulació per unir l’estat i el comportament d’un objecte, assegura l’accés a les dades amb especificadors d’accés, característiques com l’abstracció en l’amagatall d’informació, l’herència per ampliar l’estat , i el comportament de les classes base a les classes infantils, el temps de compilació i el polimorfisme en temps d'execució per a la sobrecàrrega de mètodes i la substitució de mètodes, respectivament.
P # 23) Què és la sobrecàrrega del mètode?
Resposta: Quan dos o més mètodes amb el mateix nom tenen un nombre diferent de paràmetres o diferents tipus de paràmetres, aquests mètodes poden tenir o no diferents tipus de retorn, aleshores són mètodes sobrecarregats i la característica és la sobrecàrrega de mètodes. La sobrecàrrega de mètodes també s’anomena polimorfisme en temps de compilació.
P # 24) Què és la substitució del mètode?
Resposta: Quan un mètode de subclasse (derivat, classe fill) té el mateix nom, paràmetres (signatura) i el mateix tipus de retorn que el mètode de la seva superclasse (base, classe pare), es diu que el mètode de la subclasse s’anul·la el mètode de la superclasse. Aquesta característica també es coneix com polimorfisme en temps d'execució.
Q # 25) Expliqueu la sobrecàrrega del constructor.
Resposta: Es coneix com a sobrecàrrega de constructors més d’un constructor amb paràmetres diferents perquè es puguin dur a terme tasques diferents amb cada constructor. Amb la sobrecàrrega del constructor, es poden crear objectes de diferents maneres. Diverses classes de col·lecció a l'API Java són exemples de sobrecàrrega del constructor.
P # 26) Quins tipus d'arguments es poden utilitzar a Java?
Resposta: Per als mètodes i funcions de Java, les dades dels paràmetres es poden enviar i rebre de diferents maneres. Si el mètode B () s’anomena des del mètode A (), el mètode A () és una funció de trucada i el mètode B () s’anomena funció, els arguments enviats pel mètode A () són arguments reals i els paràmetres del mètode B () s’anomenen arguments formals.
- Truca per valor: Els canvis fets al paràmetre formal (paràmetres del mètode B ()) no es tornen a enviar a la persona que truca (mètode A ()), aquest mètode s’anomena trucar per valor . Java admet la trucada per valor.
- Truca per referència: Els canvis fets al paràmetre formal (paràmetres del mètode B ()) es tornen a enviar a la persona que truca (paràmetres del mètode B ()).
- Qualsevol canvi en els paràmetres formals (paràmetres del mètode B ()) es reflecteix en paràmetres reals (arguments enviats pel mètode A ()). Això s’anomena trucada per referència.
P # 27) Diferenciar entre unió estàtica i dinàmica?
Resposta: Les diferències entre l'enllaç estàtic i el dinàmic s'expliquen a la taula següent.
Enquadernació estàtica | Enquadernació dinàmica |
---|---|
L’enllaç estàtic a Java utilitza tipus de camps i classe a com a resolució. | L’enllaç dinàmic a Java utilitza objectes per resoldre l’enllaç. |
La sobrecàrrega del mètode és un exemple d’unió estàtica. | La substitució del mètode és un exemple d’enllaç dinàmic. |
La vinculació estàtica es resol en el moment de la compilació. | L'enllaç dinàmic es resol en temps d'execució. |
Els mètodes i variables que fan servir enllaços estàtics són de tipus privat, final i estàtic. | Els mètodes virtuals utilitzen un enllaç dinàmic. |
P # 28) Podeu explicar la classe base, la subclasse i la superclasse?
Resposta: Les classes base, subclasse i superclasse a Java s’expliquen de la següent manera:
- La classe base o classe pare és una super classe i és una classe de la qual es deriva la subclasse o classe secundària.
- La subclasse és una classe que hereta atributs (propietats) i mètodes (comportament) de la classe base.
P # 29) S'admet la sobrecàrrega de l'operador a Java?
Resposta: Java no admet la sobrecàrrega de l'operador, ja que,
- Fa que l’intèrpret faci més esforç per comprendre la funcionalitat real de l’operador, cosa que fa que el codi sigui complex i difícil de compilar.
- La sobrecàrrega de l’operador fa que els programes siguin més propensos als errors.
- No obstant això, la característica de la sobrecàrrega de l'operador es pot aconseguir en la sobrecàrrega de mètodes d'una manera senzilla, clara i sense errors.
P # 30) Quan s'utilitza el mètode finalize?
Resposta: finalitzar El mètode es diu just abans que l'objecte estigui a punt de ser recollit. Aquest mètode substitueix per minimitzar les fuites de memòria, realitza activitats de neteja eliminant els recursos del sistema.
P # 31) Expliqueu sobre les fitxes.
Resposta: Les fitxes del programa Java són els elements més petits que el compilador reconeix. Els identificadors, les paraules clau, els literals, els operadors i els separadors són exemples de fitxes.
Conclusió
Els conceptes de programació orientats a objectes són una part integral per a desenvolupadors, automatismes i verificadors manuals que dissenyen un marc de proves d'automatització per provar una aplicació o desenvolupar aplicacions amb llenguatge de programació Java.
La comprensió en profunditat és obligatòria de totes les funcions orientades a objectes, com ara classe, objecte, abstracció, encapsulació, herència, polimorfisme i aplicar aquests conceptes en un llenguatge de programació com Java per assolir els requisits del client.
Hem intentat cobrir les preguntes més importants de les entrevistes de programació orientada a objectes i hem donat respostes adequades amb exemples.
Us desitgem tot el millor per a la vostra propera entrevista!
Lectura recomanada
- OOP Java: Introducció a la programació orientada a objectes a Java
- Els 20 millors programes d’entrevistes de Java per a programació i codificació d’entrevistes
- Top 50+ preguntes i respostes bàsiques de l'entrevista de Java
- Interfície Java i tutoria de classes abstractes amb exemples
- Encapsulació a Java: Tutorial complet amb exemples
- Què és l'abstracció a Java: apreneu amb exemples
- Conceptes OOPS en C #: Tutorial de conceptes de programació orientada a objectes
- Conceptes OOP de Python (classes, objectes i herència de Python)