Preparación por profesión

Entrevista de Ingeniero de Software: preguntas y respuestas.

Algoritmos, diseño de sistemas y depuración en producción.

Preguntas

Preguntas técnicas para practicar en voz alta

  1. 01

    ¿Cómo intercambias complejidad temporal por espacial?

    Intercambia memoria por velocidad cuando precálculo, caché o índices eliminan trabajo repetido y el límite de memoria es aceptable; intercambia tiempo por memoria cuando los datos son grandes. Compara complejidad y restricciones reales.

    Leer el desglose completo
  2. 02

    ¿Cómo diseñarías un acortador de URL?

    Un acortador necesita IDs sin colisiones, almacenamiento duradero del mapeo, redirección optimizada para lectura, caché de enlaces populares, controles de abuso, expiración, analítica fuera de la ruta crítica y estimaciones de capacidad.

    Leer el desglose completo
  3. 03

    ¿Cómo depuras una regresión de latencia en producción?

    Confirma la regresión con percentiles, correlaciónala con despliegues y tráfico, usa trazas para aislar dependencia o ruta lenta, revisa saturación y planes de consulta, mitiga y valida contra la misma línea base.

    Leer el desglose completo
  4. 04

    ¿Cómo eliges una estructura de datos?

    Elige una estructura según operaciones e invariantes: búsqueda, orden, inserción, borrado, iteración, duplicados, concurrencia y memoria. Explica la complejidad esperada y por qué encaja con el acceso real.

    Leer el desglose completo
  5. 05

    ¿Cuándo es apropiada la búsqueda binaria?

    La búsqueda binaria sirve para un predicado monótono sobre un espacio ordenado: cuando cambia, no vuelve atrás. Mantén invariantes explícitos de límites y trata bordes para evitar errores de uno.

    Leer el desglose completo
  6. 06

    ¿Qué hace difícil a un sistema distribuido?

    Los sistemas distribuidos son difíciles porque los mensajes se retrasan, duplican, reordenan o pierden y los nodos fallan por separado. El diseño correcto explicita timeouts, reintentos, idempotencia, consistencia y fallos parciales.

    Leer el desglose completo
  7. 07

    ¿Cómo aclaras requisitos de diseño de sistemas?

    Aclara usuarios, flujos, escala, latencia, disponibilidad, consistencia, seguridad, retención, geografía, coste y crecimiento antes de dibujar componentes. Cuantifica las restricciones que realmente dirigen la arquitectura.

    Leer el desglose completo
  8. 08

    ¿Cómo razonas sobre consistencia y disponibilidad?

    Durante una partición de red una operación distribuida no puede garantizar a la vez consistencia inmediata y que todas las respuestas tengan éxito. Decide por invariante: rechaza escrituras inseguras o acepta obsolescencia temporal con reconciliación.

    Leer el desglose completo
  9. 09

    ¿Qué buscas en una revisión de código?

    Revisa primero corrección y casos ausentes, luego seguridad, consistencia, fallos, concurrencia, rendimiento, pruebas, claridad y compatibilidad. Explica el impacto y propone un cambio concreto, no preferencias personales.

    Leer el desglose completo
  10. 10

    ¿Cómo priorizas deuda técnica?

    Prioriza deuda técnica por coste esperado: riesgo de incidentes, fricción de entrega, exposición de seguridad, frecuencia y radio de impacto. Define un resultado medible y págala junto al trabajo que bloquea.

    Leer el desglose completo