Saltar al contenido

Preguntas de entrevista para ingeniero de software con respuestas resueltas

LiveRec EditorialActualizado

Las preguntas de una entrevista para ingeniero de software suelen llegar en una llamada de selección con un reclutador, una o dos rondas de programación, una ronda de diseño de sistemas para puestos de nivel intermedio y sénior, y una ronda de comportamiento. Prepara estructuras de datos, un lenguaje en profundidad, algunos patrones de diseño de sistemas y cinco historias de trabajo, y luego ensaya respuestas resueltas.

De un vistazo

  • Rondas típicas: llamada de selección con el reclutador, evaluación técnica telefónica o en línea, programación en una pizarra o en un editor compartido, diseño de sistemas (nivel intermedio y sénior), comportamiento.
  • Piensa en voz alta. Quienes entrevistan califican tu razonamiento, no solo el código final.
  • Aclara el problema antes de escribir cualquier código. Pregunta por el tamaño de la entrada, los casos límite y las restricciones.
  • Indica la complejidad (en tiempo y en espacio) de cada solución.
  • Prepara cinco historias reales para las preguntas de comportamiento.

¿Cómo son las rondas?

RondaDuraciónQué se evalúaCómo prepararte
Llamada de selección con el reclutador20 a 30 minAfinidad, motivación, rango de salario, estado de visaHáblame de ti; expectativas de salario
Evaluación en línea o programación por teléfono45 a 90 minResolución de problemas en uno o dos problemasPractica problemas con límite de tiempo en el lenguaje que elijas
Programación presencial o virtual45 a 60 min, de 1 a 3 rondasAlgoritmos, calidad del código, comunicaciónEstructuras de datos, patrones, explicar los equilibrios entre opciones
Diseño de sistemas45 a 60 minArquitectura, equilibrios entre opciones, escalaPractica dos o tres diseños por semana
Comportamiento / gerente de contratación30 a 60 minColaboración, responsabilidad, conflictoHistorias con la estructura STAR

Los formatos varían según la empresa y el nivel. Pregunta al reclutador qué esperar en cada ronda; es una pregunta normal.

¿Qué preguntas de programación salen con más frecuencia?

Patrones comunes, con lo que debes practicar.

PatrónEjemplo de enunciadoIdea clave
Tabla de dispersiónSuma de dos números: encontrar dos números que sumen un objetivoGuardar los valores vistos para buscarlos en O(1)
Dos punterosComprobar si una cadena es un palíndromoMover los punteros hacia adentro
Ventana deslizanteLa subcadena más larga sin caracteres repetidosAmpliar y reducir una ventana
PilaParéntesis válidosApilar los de apertura y desapilar al encontrar el de cierre que corresponde
Búsqueda binariaEncontrar un elemento en un arreglo ordenadoReducir el rango a la mitad en cada paso
BFS y DFSNúmero de islas en una cuadrículaRecorrer las celdas conectadas
Recursión y retrocesoGenerar todos los subconjuntosElegir, explorar, deshacer la elección
Programación dinámicaSubir escaleras o cambio de monedasDefinir el estado; reutilizar los subproblemas
Lista enlazadaInvertir una lista enlazadaSeguir el anterior, el actual y el siguiente
Ordenamiento y montículosLos K elementos más frecuentesContar y luego usar un montículo o cubetas

Ejemplo resuelto: suma de dos números

Enunciado: Dado un arreglo de enteros y un objetivo, devuelve los índices de dos números que sumen el objetivo.

Cómo explicarlo en voz alta:

  1. Aclara: "¿Puede haber duplicados? ¿Se garantiza exactamente una solución? ¿Puedo usar el mismo elemento dos veces?"
  2. Fuerza bruta: revisar cada par. Eso es O(n al cuadrado) en tiempo y O(1) en espacio. Menciónalo y luego di que puedes hacerlo mejor.
  3. Mejor: una sola pasada con una tabla de dispersión de valor a índice. Para cada número, verifica si target - number ya está en el mapa.
  4. Indica: O(n) en tiempo, O(n) en espacio.
def two_sum(nums, target):
    seen = {}
    for i, n in enumerate(nums):
        need = target - n
        if need in seen:
            return [seen[need], i]
        seen[n] = i
    return []
  1. Prueba: [2, 7, 11, 15], objetivo 9 devuelve [0, 1]. Prueba también un arreglo vacío, un solo elemento y números negativos.

¿Qué lenguaje y qué fundamentos debo conocer?

Conoce un lenguaje lo bastante bien como para escribir código sin consultar nada: cadenas, arreglos o listas, diccionarios, ordenamiento con una clave personalizada y diseño básico de clases. Quienes entrevistan no esperan datos de trivia, pero sí esperan soltura. Preguntas que salen con frecuencia: la diferencia entre un proceso y un hilo, qué es una colisión en una tabla de dispersión, qué sucede cuando escribes una URL en un navegador, REST frente a GraphQL, uniones de SQL, qué hace un índice y cómo probarías una función.

¿Cómo es una pregunta de diseño de sistemas?

Enunciado: Diseña un acortador de URL.

Un esquema sólido:

  1. Aclara los requisitos. ¿Cuántas URL nuevas por día? ¿Cuánto deben durar los enlaces? ¿Se necesitan analíticas o alias personalizados? Supón 100 millones de enlaces nuevos al mes para este ejemplo y una proporción con predominio de lecturas.
  2. API. POST /shorten recibe una URL larga y devuelve un código corto; GET /{code} redirige.
  3. Modelo de datos. Una tabla con el código, la URL larga, la fecha de creación y un vencimiento opcional.
  4. Generación de códigos. Opciones: aplicar una función de dispersión a la URL y truncar el resultado (hay que manejar colisiones), un contador codificado en base 62 (requiere un contador distribuido) o rangos pregenerados que se asignan a cada servidor. Indica los equilibrios entre opciones.
  5. Escala. Predominan las lecturas, así que coloca una caché (como un almacén en memoria) delante de la base de datos; usa una CDN para los enlaces populares; particiona la base de datos por código.
  6. Fallas y casos límite. URL duplicadas, enlaces maliciosos, límite de solicitudes, denuncias de abuso.
  7. Equilibrios entre opciones. Di qué construirías primero y qué dejarías para después.

Las cifras del paso 1 son supuestos que fijas con quien entrevista, no hechos. Quienes entrevistan quieren que formules y defiendas supuestos razonables.

¿Qué preguntas de comportamiento reciben los ingenieros?

  • "Cuéntame de un error difícil de encontrar." Muestra un método: reproducir, aislar, formular hipótesis, verificar.
  • "Describe una vez que no estuviste de acuerdo en una revisión de código."
  • "Cuéntame de un proyecto que lideraste o del que fuiste responsable de principio a fin."
  • "Cuéntame de una decisión técnica que tomarías de otra manera."
  • "¿Cómo manejas los requisitos poco claros?"

Usa el método STAR y nombra la tecnología real y tu contribución concreta.

¿Qué errores les cuestan ofertas a los ingenieros?

  • Programar en silencio durante 15 minutos.
  • Lanzarse al código antes de aclarar las entradas.
  • Ignorar los casos límite, como una entrada vacía, duplicados o una entrada muy grande.
  • No probar tu propio código. Recorre un ejemplo a mano.
  • Afirmar experiencia sobre la que no puedes hablar en profundidad. Si incluyes una tecnología, espera preguntas sobre ella.
  • Ponerte a la defensiva cuando quien entrevista insinúa un error. Toma la pista como colaboración.

¿Cuál es un plan de preparación de cuatro semanas?

SemanaEnfoqueMeta
1Arreglos, cadenas, tablas de dispersión, dos punteros10 problemas, repasar los errores
2Árboles, grafos, recursión, búsqueda binaria10 problemas
3Fundamentos de programación dinámica, montículos; empezar con el diseño de sistemas8 problemas, 2 diseños
4Entrevistas simuladas, historias de comportamiento, puntos débiles3 entrevistas simuladas, 5 historias

Limita cada problema a entre 30 y 45 minutos. Si te atascas, lee la solución y luego rehazla desde cero al día siguiente. La calidad del repaso vale más que el volumen.

¿Cómo respondo "¿Por qué quieres irte?" o "¿Por qué nosotros?"

Mantén un tono positivo y concreto: "Quiero trabajar en sistemas a mayor escala, y el blog de ingeniería de ustedes describe la migración a servicios orientados a eventos, que es el área que he estado aprendiendo." No critiques a tu empleador.

Después de la oferta

Las ofertas para ingenieros con frecuencia incluyen sueldo base, bono y acciones, y los detalles varían. Compara la compensación total y negocia con cortesía; consulta cómo negociar el salario. Para datos salariales y de crecimiento por ocupación, consulta la Oficina de Estadísticas Laborales (Fuentes).

Preguntas frecuentes

¿Cuántos problemas de programación debo practicar? No hay un número mágico. Muchos candidatos resuelven aproximadamente entre 50 y 100 problemas de los patrones principales, pero entender por qué funciona una solución importa más que la cantidad. Revisa los errores y rehaz los problemas que fallaste.

¿Debo memorizar soluciones? No. Aprende patrones. Si memorizas una solución y quien entrevista cambia una restricción, no sabrás cómo adaptarte. Practica explicar por qué se necesita cada paso.

¿Y si me atasco? Di lo que estás pensando, expón el enfoque de fuerza bruta y haz una pregunta aclaratoria. Quienes entrevistan con frecuencia dan pistas y califican cómo respondes a ellas.

¿Los puestos de nivel inicial tienen diseño de sistemas? Por lo general no a fondo. Algunas empresas hacen una pregunta ligera de diseño o de diseño orientado a objetos. Los puestos de nivel intermedio y sénior esperan una ronda completa de diseño de sistemas.

Fuentes

  • U.S. Bureau of Labor Statistics, Occupational Outlook Handbook: Software Developers, Quality Assurance Analysts, and Testers, https://www.bls.gov/ooh/computer-and-information-technology/software-developers.htm (accessed 30 October 2026)

Esta página ofrece información profesional de carácter general. Los formatos de entrevista difieren según la empresa.