Las 21 preguntas y respuestas de entrevistas de C++ más leídas [para estudiantes de primer año]
Publicado: 2020-12-17Incluso hoy en día, C++ es tan popular como lo fue en los años 80. Este lenguaje de programación de propósito general, compilado y multiparadigma (orientado a objetos, procedimental y funcional) juega un papel crucial en la industria de TI, particularmente en el desarrollo de software.
Los desarrolladores de todo el mundo utilizan C++ para crear software de sistemas, software de base de datos, software integrado, aplicaciones empresariales, aplicaciones basadas en GUI, compiladores, computación y gráficos avanzados, sistemas operativos, navegadores, juegos, sistemas en la nube, etc. Naturalmente, C++ sigue siendo una herramienta muy relevante. lenguaje de programación.
En esta publicación, hemos creado una lista de 21 preguntas de la entrevista de C ++ que debe saber si aspira a desarrollar una carrera en desarrollo de software. ¡Estas preguntas y respuestas de la entrevista de C ++ lo ayudarán a romper el hielo sobre el tema!
Preguntas y respuestas de la entrevista de C++
- Defina "Clase" y "Objeto".
En C++, una clase es un tipo de datos definido por el usuario que refleja diferentes entidades, acciones y funciones. Una clase contiene los miembros de datos junto con sus funciones. El acceso a estos miembros de datos y funciones se define mediante tres modificadores: privado, público y protegido. Si bien las clases definen un tipo de datos, simplemente especifican la estructura de datos en lugar de definir los datos.
Un objeto es una instancia de una clase. Es una entidad de tiempo de ejecución que puede representar una persona, un lugar o una cosa.
Los objetos operan en miembros de datos y funciones miembro. Contiene campos, métodos y constructores. Por ejemplo, si bien un automóvil es un objeto, sus diversas características, como ruedas, diseño, color, soportes, etc., son instancias de su clase.

- ¿Qué es un "Especificador de acceso"?
Un especificador de acceso determina cómo se puede acceder a los miembros de una clase (funciones y variables) fuera del alcance de la clase. C++ tiene tres tipos de especificadores de acceso
- Privado: un especificador privado significa que solo se puede acceder a los miembros de la clase dentro de la misma clase en la que están declarados. En este caso, las clases secundarias no pueden acceder a los miembros privados de la clase principal.
- Protegido: un especificador protegido permite que las clases secundarias accedan a los miembros de datos protegidos de la clase principal.
- Público: se puede acceder a los miembros de la clase que se declaran "públicos" a través de un código C++.
- ¿Qué es un especificador de clase de almacenamiento mutable?
Un especificador de clase de almacenamiento mutable se aplica solo a las variables miembro no estáticas y no constantes de una clase para alterar el miembro del objeto de clase constante al declararlo.
- ¿Qué es la encapsulación?
La encapsulación se refiere a envolver o vincular miembros de datos y sus funciones dentro de una clase. Este proceso se realiza por razones de seguridad ya que restringe el acceso desde cualquier método externo. Si el miembro de datos es privado, solo su función de miembro puede acceder a los datos.
- ¿Qué es la abstracción?
La abstracción es un proceso de ocultar implementaciones internas y mostrar solo los detalles esenciales. El acceso a los miembros de datos y funciones depende del modificador que se utilice. Por lo tanto, si se usa una palabra clave pública para definir a los miembros, cualquiera puede acceder a ellos. Sin embargo, si una palabra clave privada define a los miembros, no puede acceder a ellos a través de métodos externos.
- ¿Qué es un espacio de nombres?
Un espacio de nombres facilita la división lógica de un código. Se usa en programas C++ para prevenir/resolver el conflicto de nombres de identificadores asignándoles diferentes espacios de nombres. Un espacio de nombres define el alcance donde se declara un identificador (variables, clase y funciones). Por lo tanto, el objetivo principal de usar un espacio de nombres es eliminar la ambigüedad del código.
- Defina "polimorfismo". ¿Cuántos tipos de polimorfismo existen en C++?
Literalmente, polimorfismo significa la presencia de múltiples formas. En C++, el polimorfismo ocurre cuando existe más de una función con el mismo nombre pero con funcionalidades variadas.
El polimorfismo es de dos tipos:
- El polimorfismo dinámico, también conocido como "anulación" en C++, lo ayuda a determinar qué método de función debe ejecutarse en tiempo de ejecución en lugar de en tiempo de compilación. La anulación de funciones es un ejemplo excelente de polimorfismo dinámico. En la anulación de funciones, la clase secundaria contiene el método que ya existe en la clase principal. En consecuencia, la clase secundaria anula el método de la clase principal. En este caso, tanto la clase principal como la secundaria tienen la misma función con diferentes definiciones.
- El polimorfismo estático se implementa en el momento de la compilación del código (por lo tanto, también se conoce como polimorfismo en tiempo de compilación). La sobrecarga de métodos es un ejemplo perfecto de polimorfismo estático. La sobrecarga de métodos permite la presencia de más de una función con el mismo nombre pero con diferentes funcionalidades.
- Explique el propósito de la palabra clave "volátil".
La función "volátil" se utiliza para declarar que una variable en particular es volátil. Esto indica al compilador que cambie la variable externamente, evitando así la optimización del compilador en la referencia de la variable.
Leer: Preguntas y respuestas de la entrevista de Java
- ¿Qué es una función en línea?
Cualquier función que tenga la palabra clave "en línea" como prefijo antes de la definición de la función es una función en línea. Se utilizan principalmente para reducir la sobrecarga de la llamada de función. Cuando se llama a una función en línea, el código completo se insertará o sustituirá en el punto específico de la llamada de función en línea. Dado que el compilador trata las funciones en línea como macros, se ejecutan mucho más rápido. Por lo tanto, declarar pequeñas funciones en línea ayuda a aumentar la eficiencia del código.

La sintaxis estándar de una función en línea es:
Nombre de función de tipo de retorno en línea (parámetros)
{
// El código de la función va aquí
}
- ¿Qué es el puntero "este"?
En C++, el puntero "este" es un puntero constante que contiene la dirección de memoria del objeto actual. Se pasa como argumento oculto a todas las llamadas a funciones miembro no estáticas. Además, este puntero existe como una variable local dentro del cuerpo de todas las funciones no estáticas.
Leer : Preguntas y respuestas de la entrevista SQL
- ¿C++ tiene un tipo de datos primitivo de cadena?
C++ no puede tener un tipo de datos primitivo de cadena, sino que tiene una clase de la Biblioteca de plantillas estándar (STL).
- ¿Cuál es la función del operador de resolución de alcance?
El operador de resolución de alcance tiene dos propósitos:
- Ayuda a resolver el alcance de las variables globales.
- Cuando una función se define fuera de una clase, el operador de resolución de alcance asocia esa función con la clase.
- ¿Qué es un destructor?
La función miembro de una clase se llama destructor. Su nombre es el mismo que el de la clase pero con un símbolo de tilde (~) como prefijo. Cada vez que un objeto pierde su alcance, los destructores se ejecutan automáticamente.
- Explique la diferencia entre la clase de palabra clave y la estructura de palabra clave.
La clase de palabra clave representa a los miembros privados de forma predeterminada, mientras que la estructura de palabras clave se parece a los miembros públicos de forma predeterminada.
- Defina una función virtual pura.
Una función virtual pura es aquella que no contiene ninguna definición. Solo necesita declarar la función virtual pura asignando 0 en la declaración. Las clases abstractas en C++ tienen al menos una función virtual pura.
La sintaxis estándar de una función virtual pura es:
vacío virtual abc()=0; // función virtual pura.
Echa un vistazo a: 15 consejos de entrevista para sobresalir en tu entrevista de trabajo
- ¿Cuál es el propósito de una plantilla de clase?
Una plantilla de clase se utiliza para crear una familia de clases y funciones. Por ejemplo, puede crear una plantilla de una clase de matriz que le permitirá crear una matriz que incluya varios tipos (int, float, etc.). También puede crear una plantilla para una función. Entonces, si hay una función add(), puede crear múltiples versiones de add().
- ¿Qué significa "Error de desbordamiento"?
El error de desbordamiento es un error aritmético que ocurre cuando la salida de un cálculo matemático es mayor que el espacio real asignado por el sistema.
- ¿En qué se diferencian delete y delete[ ]?
La función de eliminación libera una sola unidad de memoria asignada mediante el operador "nuevo", mientras que eliminar [ ] libera la matriz de memoria asignada que fue asignada por el operador nuevo [ ].
- ¿Cuál es el propósito de vTable y vptr en C++? ¿Cómo los trata el compilador?
En C++, una vTable contiene punteros de función. Por otro lado, vptr es un puntero asignado a la vTable. Mientras que cada clase tiene una vTable, cada objeto tiene un vptr. El compilador de C++ agrega código adicional en dos lugares para usar y mantener vTable y vptr de manera efectiva:
En cada constructor para configurar el vptr del objeto que se está creando y apuntar a la vTable de una clase.
En el código que tiene una llamada de función polimórfica. El compilador inserta el código en cada ubicación donde se declara una llamada polimórfica para buscar el vptr usando el puntero/referencia de la clase base. Una vez que se obtiene el vptr, puede acceder a la vTable de la clase derivada. Puede usar vTable para acceder y llamar a la función de clase derivada show().

- En C++, ¿dónde se almacena una variable automática?
Todas las variables locales son variables automáticas por defecto y se almacenan en la memoria de la pila.
- ¿Cómo se puede exportar una función desde una DLL?
Hay dos formas de exportar una función desde una DLL:
- Puede usar la biblioteca de tipos de DLL.
- Puede hacer referencia a la función desde la instancia de DLL.
Inscríbase en cursos de ingeniería de software de las mejores universidades del mundo. Obtenga programas Executive PG, programas de certificados avanzados o programas de maestría para acelerar su carrera.
Conclusión
Estas preguntas y respuestas de C++ son algunas de las más frecuentes en las entrevistas de trabajo. Aunque hemos enumerado solo algunas preguntas, esto debería darle una idea clara de cómo prepararse para una entrevista de C++.
Si está interesado en obtener más información sobre el desarrollo de software de pila completa, consulte el programa Executive PG de upGrad & IIIT-B en desarrollo de software de pila completa, que está diseñado para profesionales que trabajan y ofrece más de 500 horas de capacitación rigurosa, más de 9 proyectos y asignaciones, estado de ex alumnos de IIIT-B, proyectos finales prácticos y asistencia laboral con las mejores empresas.
