top 30 oops interview questions
Este tutorial proporciona un conjunto completo de preguntas y respuestas de entrevistas de programación orientada a objetos (OOP) más frecuentes:
El desarrollo de software tiene más de 70 años de historia en los que se inventaron varios lenguajes como FORTRAN, Pascal, C, C ++. Había una serie de enunciados que actúan como comandos dados al hardware para realizar algunos cálculos matemáticos básicos, creando lenguajes procedimentales para diseñar diversas aplicaciones de software.
Con la invención de Internet, se necesitaban lenguajes robustos, seguros, estables e independientes de la plataforma para diseñar aplicaciones complejas.
La programación orientada a objetos es independiente de la plataforma, portátil, segura y está equipada con varios conceptos como encapsulación, abstracción, herencia y polimorfismo.
Las ventajas de OOPS son la reutilización, la extensibilidad y la modularidad que mejoran la productividad, son más fáciles de mantener debido a la modularidad, son más rápidos y tienen un menor costo de desarrollo debido a la reutilización del código, producen aplicaciones seguras y de alta calidad.
Lo que vas a aprender:
Conceptos básicos de programación orientada a objetos
La programación orientada a objetos involucra objetos intelectuales, datos y comportamientos asociados con ella para brindar soluciones a los problemas comerciales. En el lenguaje de programación Java, para diseñar soluciones para problemas comerciales, los desarrolladores aplican conceptos como abstracción, encapsulación, herencia y polimorfismo.
Varios conceptos como Abstracción que ignora detalles irrelevantes, Encapsulamiento que se centra en lo mínimo que se requiere sin revelar ninguna complejidad sobre las funcionalidades internas, Herencia heredar propiedades de la clase principal o implementar múltiples herencias usando una interfaz, y Polimorfismo que amplía las propiedades de sobrecarga de métodos (polimorfismo estático) y anulación de métodos (polimorfismo dinámico).
Preguntas más frecuentes de la entrevista de OOPS
P # 1) Explique brevemente lo que quiere decir con programación orientada a objetos en Java.
Responder: La programación orientada a objetos se ocupa de objetos, como entidades de la vida real como bolígrafo, móvil, cuenta bancaria que tiene estado (datos) y comportamiento (métodos).
Con la ayuda del acceso, el acceso de los especificadores a estos datos y métodos se asegura. Los conceptos de encapsulación y abstracción ofrecen ocultación de datos y acceso a lo esencial, la herencia y el polimorfismo ayudan a reutilizar el código y sobrecargar / anular métodos y constructores, haciendo que las aplicaciones sean independientes de la plataforma, seguras y robustas usando lenguajes como Java.
Q # 2) Explique ¿Es Java un lenguaje puro orientado a objetos?
Responder: Java no es un lenguaje de programación orientado a objetos completamente puro. Las siguientes son las razones:
- Java admite y utiliza tipos de datos primitivos como int, float, double, char, etc.
- Los tipos de datos primitivos se almacenan como variables o en la pila en lugar del montón.
- En Java, los métodos estáticos pueden acceder a variables estáticas sin utilizar un objeto, al contrario de los conceptos orientados a objetos.
P # 3) ¿Describe la clase y el objeto en Java?
Responder: La clase y el objeto juegan un papel integral en los lenguajes de programación orientados a objetos como Java.
- La clase es un prototipo o una plantilla que tiene un estado y comportamiento respaldado por un objeto y se utiliza en la creación de objetos.
- El objeto es una instancia de la clase, por ejemplo, Human es una clase con el estado de tener un sistema vertebral, cerebro, color y altura y tiene un comportamiento como canThink (), ableToSpeak (), etc.
P # 4) ¿Cuáles son las diferencias entre clases y objetos en Java?
Responder: A continuación, se muestran algunas diferencias importantes entre la clase y los objetos en Java:
Clase | Objeto |
---|---|
Los ejemplos de la vida real de Class pueden ser un • Una receta para preparar comida. • Planos para un motor de automóvil. | Ejemplos de objetos de la vida real pueden ser • Una comida preparada a partir de receta. • Motor construido según planos. |
La clase es una entidad lógica | El objeto es una entidad física |
La clase es una plantilla a partir de la cual se puede crear un objeto. | El objeto es una instancia de la clase |
La clase es un prototipo que tiene el estado y comportamiento de objetos similares. | Los objetos son entidades que existen en la vida real, como dispositivos móviles, mouse u objetos intelectuales, como cuentas bancarias. |
La clase se declara con una palabra clave de clase como clase Classname {} | El objeto se crea mediante una nueva palabra clave como Empleado emp = nuevo Empleado (); |
Durante la creación de la clase, no hay asignación de memoria. | Durante la creación del objeto, la memoria se asigna al objeto |
Solo hay una clase unidireccional que se define mediante la palabra clave class | La creación de objetos se puede realizar de muchas formas, como mediante el uso de la palabra clave nueva, el método newInstance (), el método clone () y el método de fábrica. |
P # 5) ¿Por qué es necesaria la programación orientada a objetos?
Responder: OOP proporciona especificadores de acceso y funciones de ocultación de datos para mayor seguridad y control del acceso a los datos, la sobrecarga se puede lograr con la función y la sobrecarga del operador, la reutilización de código es posible ya que los objetos ya creados en un programa se pueden usar en otros programas.
La redundancia de datos, el mantenimiento del código, la seguridad de los datos y la ventaja de conceptos como encapsulación, abstracción, polimorfismo y herencia en la programación orientada a objetos proporcionan una ventaja sobre los lenguajes de programación de procedimientos utilizados anteriormente.
P # 6) Explique la abstracción con un ejemplo en tiempo real.
Responder: La abstracción en la programación orientada a objetos significa ocultar elementos internos complejos, pero exponer solo las características y el comportamiento esenciales con respecto al contexto. En la vida real, un ejemplo de abstracción es un carrito de compras en línea, por ejemplo, en cualquier sitio de comercio electrónico. Una vez que seleccione un producto y reserve el pedido, solo le interesará recibir su producto a tiempo.
Cómo suceden las cosas no es lo que te interesa, ya que es complejo y se mantiene oculto. Esto se conoce como abstracción. De manera similar, tome el ejemplo de los cajeros automáticos, la complejidad de los aspectos internos de cómo se debita el dinero de su cuenta se mantiene oculta y usted recibe efectivo a través de una red. De manera similar, para los automóviles, la forma en que la gasolina hace que el motor funcione es extremadamente compleja.
P # 7) Dé algunos ejemplos en tiempo real y explique la herencia.
Responder: Herencia significa que una clase (subclase) adquiere propiedades de otra clase (superclase) por herencia. En la vida real, tomemos un ejemplo de herencia de una bicicleta normal donde es una clase principal y una bicicleta deportiva puede ser una clase infantil, donde la bicicleta deportiva ha heredado las propiedades y el comportamiento de las ruedas giratorias con pedales a través de engranajes que el de una bicicleta normal.
P # 8) ¿Cómo funciona el polimorfismo en Java, explique con ejemplos de la vida real?
Responder: El polimorfismo es la capacidad de tener múltiples formas o capacidad del método para hacer cosas diferentes. En la vida real, la misma persona que realiza diferentes funciones se comporta de manera diferente. En la oficina es empleado, en casa, es padre, durante o después de las clases escolares es estudiante, los fines de semana juega cricket y es jugador en el patio de recreo.
inicializando variables estáticas c ++
En Java, hay dos tipos de polimorfismo
- Tiempo de compilación polimorfismo: Esto se logra mediante la sobrecarga del método o la sobrecarga del operador.
- Polimorfismo en tiempo de ejecución: Esto se logra anulando el método.
P # 9) ¿Cuántos tipos de herencia existen?
Responder: A continuación se enumeran varios tipos de herencia:
- Herencia única: La clase de hijo único hereda características de la clase de padre único.
- Herencia múltiple: Una clase hereda características de más de una clase base y no es compatible con Java, pero la clase puede implementar más de una interfaz.
- Herencia multinivel: Una clase puede heredar de una clase derivada convirtiéndola en una clase base para una nueva clase, por ejemplo, un niño hereda el comportamiento de su padre, y el padre ha heredado características de su padre.
- Herencia jerárquica: Una clase es heredada por múltiples subclases.
- Herencia híbrida: Esta es una combinación de herencias únicas y múltiples.
P # 10) ¿Qué es la interfaz?
Responder: La interfaz es similar a la clase donde puede tener métodos y variables, pero sus métodos no tienen cuerpo, solo una firma conocida como método abstracto. Las variables declaradas en la interfaz pueden ser públicas, estáticas y finales por defecto. La interfaz se utiliza en Java para la abstracción y múltiples herencias, donde la clase puede implementar múltiples interfaces.
P # 11) ¿Puede explicar las ventajas de la abstracción y la herencia?
Responder: La abstracción revela solo detalles esenciales al usuario e ignora u oculta detalles irrelevantes o complejos. En otras palabras, la abstracción de datos expone la interfaz y oculta los detalles de implementación. Java realiza la abstracción con la ayuda de interfaces y clases abstractas. La ventaja de la abstracción es que simplifica la visualización de las cosas al reducir u ocultar la complejidad de la implementación.
Se evita la duplicación de código y aumenta la reutilización del código. Solo se revelan al usuario los detalles esenciales y mejora la seguridad de la aplicación.
La herencia es donde la clase secundaria hereda la funcionalidad (comportamiento) de la clase principal. No necesitamos escribir el código una vez escrito en la clase principal para que funcione nuevamente en la clase secundaria y así sea más fácil reutilizar el código. El código también se vuelve legible. La herencia se usa cuando 'hay una' relación. Ejemplo: Hyundai es un coche O MS Word es un software.
P # 12) ¿Cuál es la diferencia entre extensiones e implementos?
Responder: Las palabras clave extendidas e implementadas se utilizan para la herencia, pero de diferentes formas.
Las diferencias entre las palabras clave Extends e Implements en Java se explican a continuación:
Se extiende | Implementos |
---|---|
Una clase puede ampliar otra clase (hijo que extiende al padre heredando sus características). La interfaz también hereda (usando la palabra clave extiende) otra interfaz. | Una clase puede implementar una interfaz. |
La subclase que extiende la superclase puede no anular todos los métodos de superclase | La interfaz de implementación de clase tiene que implementar todos los métodos de la interfaz. |
La clase solo puede ampliar una única superclase. | La clase puede implementar cualquier número de interfaces. |
La interfaz puede extender más de una interfaz. | La interfaz no puede implementar ninguna otra interfaz. |
Sintaxis: class Child extiende la clase Parent | Sintaxis: clase Hybrid implementos Rose |
P # 13) ¿Cuáles son los diferentes modificadores de acceso en Java?
Responder: Los modificadores de acceso en Java controlan el alcance de acceso de la clase, constructor, variable, método o miembro de datos. Varios tipos de modificadores de acceso son los siguientes:
- Modificador de acceso predeterminado no tiene ningún miembro de datos de especificador de acceso, clase y métodos, y son accesibles dentro del mismo paquete.
- Modificadores de acceso privado están marcados con la palabra clave private y son accesibles solo dentro de la clase, y ni siquiera son accesibles por clase desde el mismo paquete.
- Modificadores de acceso protegido puede ser accesible dentro del mismo paquete o subclases de diferentes paquetes.
- Modificadores de acceso público son accesibles desde todas partes.
P # 14) ¿Explica la diferencia entre clase abstracta y método?
Responder: A continuación se muestran algunas diferencias entre la clase abstracta y el método abstracto en Java:
Clase abstracta | Método abstracto |
---|---|
El objeto no se puede crear a partir de la clase abstracta. | El método abstracto tiene una firma pero no tiene cuerpo. |
Subclase creada o heredada de la clase abstracta para acceder a los miembros de la clase abstracta. | Es obligatorio anular los métodos abstractos de superclase en su subclase. |
La clase abstracta puede contener métodos abstractos o métodos no abstractos. | La clase que contiene el método abstracto debe convertirse en una clase abstracta. |
P # 15) ¿Cuáles son las diferencias entre método y constructor?
Responder: A continuación se muestran las diferencias entre constructores y métodos en Java:
Constructores | Métodos |
---|---|
El nombre de los constructores debe coincidir con el de Class. | Los métodos no deben tener el mismo nombre que el nombre de la clase. |
Se utilizan para crear, inicializar y asignar memoria al objeto. | Los métodos se utilizan para ejecutar ciertas declaraciones escritas dentro de ellos. |
Los constructores son invocados implícitamente por el sistema siempre que se crean objetos. | Los métodos se invocan cuando se llama. |
Se invocan utilizando una nueva palabra clave al crear una instancia de la clase (objeto). | Los métodos se invocan durante la ejecución del programa. |
El constructor no tiene tipo de retorno. | El método tiene un tipo de retorno. |
El constructor no puede ser heredado por la subclase. | Los métodos pueden ser heredados por una subclase. |
P # 16) ¿Qué es un constructor en Java?
Responder: Constructor es un método sin un tipo de retorno y tiene el mismo nombre que el de la clase. Cuando creamos un objeto, un constructor predeterminado asigna memoria para un objeto durante la compilación del código Java. Los constructores se utilizan para inicializar objetos y establecer valores iniciales para los atributos de los objetos.
P # 17) ¿Cuántos tipos de constructores se pueden usar en Java? Por favor explique.
Responder: Básicamente, hay tres tipos de constructores en Java.
Estos son:
- Constructor predeterminado: Este constructor no tiene ningún parámetro y lo invoca cada vez que crea una instancia de una clase (objeto). Si una clase es Empleado, la sintaxis del constructor predeterminado será Empleado ().
- No-arg constructor: Como su nombre lo indica, un constructor sin ningún argumento se denomina constructor sin argumentos.
- Constructor parametrizado: El constructor con varios parámetros se denomina constructor parametrizado. Debe proporcionar argumentos, es decir, valores iniciales con respecto al tipo de datos de los parámetros en ese constructor.
P # 18) ¿Por qué se usa una nueva palabra clave en Java?
preguntas de la entrevista de trabajo del analista de garantía de calidad
Responder: Cuando creamos una instancia de clase, es decir, objetos, usamos la palabra clave Java nuevo . Asigna memoria en el área de almacenamiento dinámico donde JVM reserva espacio para un objeto. Internamente, también invoca al constructor predeterminado.
Sintaxis:
|_+_|P # 19) ¿Cuándo usas la súper palabra clave?
Responder: súper es una palabra clave de Java que se utiliza para identificar o hacer referencia a la clase principal (base).
- Podemos usar super para acceder al constructor de superclase y llamar a métodos de la superclase.
- Cuando los nombres de método son los mismos en superclase y subclase, para referirse a superclase, el súper se utiliza la palabra clave.
- Para acceder a los miembros de datos del mismo nombre de la clase principal cuando están presentes en la clase principal y secundaria.
- súper se puede utilizar para realizar una llamada explícita a constructores sin argumentos y parametrizados de la clase padre.
- El acceso al método de la clase principal se puede realizar usando súper , cuando la clase secundaria tiene un método anulado.
P # 20) ¿Cuándo usa esta palabra clave?
Responder: esta La palabra clave en Java se refiere al objeto actual en el constructor o en el método.
- Cuando los atributos de clase y los constructores parametrizados tienen el mismo nombre, esta se utiliza la palabra clave.
- Palabras clave esta invoca el constructor de la clase actual, el método de la clase actual, devuelve el objeto de la clase actual, pasa un argumento en el constructor y llama al método.
P # 21) ¿Cuál es la diferencia entre el tiempo de ejecución y el polimorfismo en tiempo de compilación?
Responder: Tanto el polimorfismo en tiempo de ejecución como en tiempo de compilación son dos tipos diferentes de polimorfismo. Sus diferencias se explican a continuación:
Compilar polimorfismo de tiempo | Polimorfismo en tiempo de ejecución |
---|---|
La llamada se resuelve mediante un compilador en polimorfismo en tiempo de compilación. | El compilador no resuelve la llamada en el polimorfismo en tiempo de ejecución. |
También se conoce como enlace estático y sobrecarga de métodos. | También se conoce como anulación dinámica, tardía y de método. |
Los métodos del mismo nombre con diferentes parámetros o métodos con la misma firma y diferentes tipos de retorno son polimorfismo en tiempo de compilación. | El método del mismo nombre con los mismos parámetros o firma asociados en diferentes clases se denomina anulación de método. |
Se logra mediante la función y la sobrecarga del operador. | Se puede lograr mediante punteros y funciones virtuales. |
Como todas las cosas se ejecutan en tiempo de compilación. El polimorfismo en tiempo de compilación es menos flexible. | A medida que las cosas se ejecutan en tiempo de ejecución, el polimorfismo en tiempo de ejecución es más flexible. |
P # 22) ¿Qué funciones orientadas a objetos se utilizan en Java?
Responder: Un concepto de uso de un objeto en el lenguaje de programación Java se beneficia mediante el uso de conceptos orientados a objetos como la encapsulación para unir el estado y el comportamiento de un objeto, asegura el acceso a los datos con especificadores de acceso, características como la abstracción en la ocultación de información, herencia para extender el estado y el comportamiento de las clases base a las clases secundarias, el polimorfismo en tiempo de compilación y en tiempo de ejecución para la sobrecarga de métodos y la anulación de métodos, respectivamente.
P # 23) ¿Qué es la sobrecarga de métodos?
Responder: Cuando dos o más métodos con el mismo nombre tienen un número diferente de parámetros o diferentes tipos de parámetros, estos métodos pueden tener o no tener diferentes tipos de retorno, entonces son métodos sobrecargados y la característica es sobrecarga de métodos. La sobrecarga de métodos también se denomina polimorfismo en tiempo de compilación.
P # 24) ¿Qué es la anulación de método?
Responder: Cuando un método de subclase (derivado, clase secundaria) tiene el mismo nombre, parámetros (firma) y el mismo tipo de retorno que el método de su superclase (base, clase principal), se dice que el método de la subclase se anula. el método en la superclase. Esta característica también se conoce como polimorfismo en tiempo de ejecución.
P # 25) Explique la sobrecarga del constructor.
Responder: Más de un constructor que tiene diferentes parámetros para que se puedan realizar diferentes tareas con cada constructor se conoce como sobrecarga de constructor. Con la sobrecarga del constructor, los objetos se pueden crear de diferentes formas. Varias clases de colección en la API de Java son ejemplos de sobrecarga de constructores.
P # 26) ¿Qué tipos de argumentos se pueden usar en Java?
Responder: Para los métodos y funciones de Java, los datos de los parámetros se pueden enviar y recibir de diferentes formas. Si se llama a métodoB () desde métodoA (), métodoA () es una función de llamada y métodoB () se llama función, los argumentos enviados por métodoA () son argumentos reales y los parámetros de métodoB () se denominan argumentos formales.
- Llamar por valor: Los cambios realizados en el parámetro formal (parámetros del método B ()) no se envían de vuelta a la persona que llama (método A ()). Este método se llama llamar por valor . Java admite la llamada por valor.
- Llamar por referencia: Los cambios realizados en el parámetro formal (parámetros del método B ()) se envían de vuelta al llamador (parámetros del método B ()).
- Cualquier cambio en los parámetros formales (parámetros del método B ()) se refleja en los parámetros reales (argumentos enviados por el método A ()). A esto se le llama llamada por referencia.
Q # 27) ¿Diferenciar entre enlace estático y dinámico?
Responder: Las diferencias entre el enlace estático y dinámico se explican en la siguiente tabla.
Enlace estático | Enlace dinámico |
---|---|
El enlace estático en Java utiliza el tipo de campos y la clase como resolución. | El enlace dinámico en Java utiliza un objeto para resolver el enlace. |
La sobrecarga de métodos es un ejemplo de enlace estático. | La anulación de método es un ejemplo de enlace dinámico. |
El enlace estático se resuelve en tiempo de compilación. | El enlace dinámico se resuelve en tiempo de ejecución. |
Los métodos y variables que utilizan enlaces estáticos son tipos privados, finales y estáticos. | Los métodos virtuales utilizan un enlace dinámico. |
P # 28) ¿Puede explicar la clase base, subclase y superclase?
Respuesta: La clase base, subclase y superclase en Java se explican a continuación:
- La clase base o la clase principal es una superclase y es una clase de la que se deriva la subclase o la clase secundaria.
- La subclase es una clase que hereda atributos (propiedades) y métodos (comportamiento) de la clase base.
P # 29) ¿Se admite la sobrecarga del operador en Java?
Responder: La sobrecarga del operador no es compatible con Java ya que,
- Hace que el intérprete se esfuerce más por comprender la funcionalidad real del operador, lo que hace que el código sea complejo y difícil de compilar.
- La sobrecarga del operador hace que los programas sean más propensos a errores.
- Sin embargo, la característica de sobrecarga del operador se puede lograr en la sobrecarga del método de una manera simple, clara y sin errores.
P # 30) ¿Cuándo se utiliza el método de finalización?
Responder: finalizar se llama al método justo antes de que el objeto esté a punto de ser recolectado como basura. Este método se anula para minimizar las pérdidas de memoria, realizar actividades de limpieza eliminando recursos del sistema.
Q # 31) Explique sobre los tokens.
Responder: Los tokens en el programa Java son los elementos más pequeños que reconoce el compilador. Los identificadores, palabras clave, literales, operadores y separadores son ejemplos de tokens.
Conclusión
Los conceptos de programación orientada a objetos son una parte integral para los desarrolladores, la automatización y los probadores manuales que diseñan el marco de pruebas de automatización para probar una aplicación o desarrollar aplicaciones con el lenguaje de programación Java.
Es obligatorio comprender en profundidad todas las características orientadas a objetos como clase, objeto, abstracción, encapsulación, herencia, polimorfismo y aplicar estos conceptos en un lenguaje de programación como Java para lograr los requisitos del cliente.
Hemos tratado de cubrir las preguntas más importantes de las entrevistas de programación orientada a objetos y hemos dado las respuestas adecuadas con ejemplos.
¡Le deseamos todo lo mejor para su próxima entrevista!
Lectura recomendada
- OOP Java: Introducción a la programación orientada a objetos en Java
- Los 20 mejores programas de entrevistas de Java para la programación y la codificación de entrevistas
- Más de 50 preguntas y respuestas de la entrevista principal de Java
- Tutorial de interfaz Java y clase abstracta con ejemplos
- Encapsulación en Java: tutorial completo con ejemplos
- ¿Qué es la abstracción en Java? Aprenda con ejemplos
- Conceptos de OOPS en C #: Tutorial del concepto de programación orientada a objetos
- Conceptos de Python OOP (clases, objetos y herencia de Python)