P
prepair.app
Comenzar entrevista →
EnglishУкраїнськаРусскийDeutsch
🔷

Middle C++Preguntas de entrevista C++

Middle · 2–4 años de experiencia

Las entrevistas de C++ evalúan tres cosas: si entiendes el modelo de objetos, si se te puede confiar la gestión de memoria, y si sabes qué cuesta realmente la biblioteca estándar. Aquí están las preguntas más frecuentes, cada una con una respuesta modelo. Middle: comprensión más profunda, optimización y situaciones reales de trabajo.

Pruébalo — sin cuenta necesaria
Preparando tu pregunta…

Temas para prepararte

Memoria, punteros y RAII
OOP, funciones virtuales y vtable
Move semantics y la regla de cinco
Templates y metaprogramación
Contenedores STL y complejidad
Concurrencia y data races

6 preguntas de nivel Middle con respuestas

1

¿Qué es la regla de cinco, y qué genera el compilador por ti?

Respuesta

Si una clase necesita un destructor, constructor de copia o asignación de copia personalizados, casi seguro necesita los cinco más el constructor de movimiento y la asignación de movimiento — porque posee un recurso. El compilador los genera implícitamente, pero declarar cualquiera de ellos suprime algunos de los otros: escribir un destructor detiene la generación de las operaciones de movimiento, y las copias toman silenciosamente su lugar. La regla de cero es aún mejor — poseer recursos a través de miembros que ya se gestionan a sí mismos.

2

¿Qué hace realmente `std::move`?

Respuesta

Nada en runtime. Es un cast incondicional a una referencia rvalue, que cambia la resolución de sobrecarga para que se pueda seleccionar un constructor o asignación de movimiento. Si el tipo no tiene operaciones de movimiento, se elige la copia y el código sigue copiando silenciosamente. Después de un move, el origen queda válido pero no especificado — puedes asignarle o destruirlo, pero no asumir su contenido.

3

¿Qué es copy elision y RVO?

Respuesta

El compilador construyendo un objeto retornado directamente en el almacenamiento del llamador en lugar de construirlo y luego copiarlo o moverlo. RVO nombrado y sin nombre fueron optimizaciones de larga data a las que se les permitía eliminar efectos secundarios observables; desde C++17 la elision es obligatoria al retornar un prvalue. La consecuencia práctica es que retornar por valor no es la pesimización que la gente sigue asumiendo, y return std::move(x) suele empeorar las cosas al bloquear el NRVO.

4

¿Cuándo se invalidan los iteradores?

Respuesta

Depende del contenedor y vale la pena saberlo con exactitud. vector invalida todo al reasignar y todo desde el punto de erase en adelante; deque invalida todos los iteradores al insertar en el medio; list y los contenedores asociativos mantienen los iteradores válidos excepto al elemento eliminado. El bug clásico es hacer erase dentro de un loop, por eso erase devuelve el siguiente iterador válido y por eso existe el idiom erase-remove.

5

`std::map` vs `std::unordered_map` — ¿cómo eliges?

Respuesta

map es un árbol balanceado: iteración ordenada, búsqueda O(log n), iteradores estables, predecible. unordered_map es una tabla hash: O(1) en promedio pero O(n) en el peor caso, sin orden, el rehashing invalida iteradores, y depende de la calidad del hash. Elige map cuando necesitas orden o un peor caso acotado, unordered_map cuando las búsquedas dominan y el orden no importa.

6

¿Cuáles son las garantías de seguridad ante excepciones?

Respuesta

Cuatro niveles: no-throw, fuerte (la operación se completa o deja el estado sin cambios), básica (los invariantes se mantienen y nada se filtra, pero el estado puede haber cambiado), y ninguna. La garantía fuerte usualmente se implementa haciendo el trabajo sobre una copia e intercambiando al final. Los destructores no deben lanzar — durante el desenrollado del stack una segunda excepción llama a std::terminate, por eso los destructores son noexcept por defecto.

🦎

Leer respuestas no es suficiente

En una entrevista real hablas bajo presión. Cam hace estas mismas preguntas, evalúa cada respuesta y muestra exactamente qué mejorar.

Practicar entrevista de Middle C++ →
Gratis · 3 entrevistas al mes

Otros niveles — C++

Junior C++Senior C++Todas las preguntas de C++

Otras especializaciones

🔍Middle Manual QA🤖Middle QA AutomationMiddle Java Backend🐍Middle Python Backend🐘Middle PHP Backend🦫Middle Go Backend🟢Middle Node.js Backend💎Middle Ruby on Rails🟨Middle JavaScript⚛️Middle React Frontend