#

Guía de Entrevistas Técnicas

Esta guía fue creada para ayudarle a prepararse para las entrevistas técnicas de QuintoAndar, con consejos detallados, sugerencias de estudio, ejemplos y recursos gratuitos.

Code Interview

En esta etapa, queremos entender cómo resuelves problemas de lógica y programación. Es una conversación para evaluar tu razonamiento, la estructuración del código, tu conocimiento en algoritmos y tu comunicación.

Un recordatorio: Entendemos si es tu primera entrevista técnica o si estás volviendo después de un tiempo. Lo más importante es mostrar tu proceso de pensamiento y cómo resuelves los problemas. ¡Y puedes estar seguro: estamos animándote para que te vaya bien! 🚀

  • Qué esperamos:

    • Razonamiento estructurado, con una explicación clara de lo que estás pensando.
    • Capacidad de dividir un problema grande en partes más pequeñas.
    • Conocimiento práctico en estructuras de datos y algoritmos.
    • Una comunicación abierta y fluida con el entrevistador.
  • Buenas prácticas en la entrevista:

    • Lee y valida el problema con el entrevistador.
    • Empieza con una solución sencilla y optimízala más adelante.
    • Prueba tu código con diferentes entradas.
    • Nombra las variables con claridad.
    • Tómate un minuto para pensar si lo necesitas; ¡es completamente normal y necesario!
  • 💻 Plataformas para práctica:

      Lenguaje de Programación:

      Nuestras entrevistas de código se llevan a cabo a través de la plataforma Codility y utilizan los lenguajes empleados por Grupo QuintoAndar. ¡Consulta algunas orientaciones importantes para prepararte con calidad!

      Lenguajes de programación que utilizamos:

      • Java
      • Kotlin
      • Python
      • JavaScript/TypeScript
      • Dart
      • Go
      • C++
      • C#

      Es importante saber:

      • Declarar variables y funciones con facilidad
      • Iterar con for, while, forEach, etc.
      • Manipular arrays, strings, maps/diccionarios
      • Escribir pruebas simples para validar salidas y pensar en casos límite (edge cases)

      📌 Ejemplo: «¿Cómo maneja mi función una lista vacía? ¿Y si todos los números son iguales?»

      Estructuras de Datos:

      Es esencial tener fluidez en las siguientes estructuras, sus aplicaciones y algoritmos asociados:

      • Listas
      • Pilas (Stacks)
      • Colas (Queues)
      • Conjuntos (Sets)
      • Hashmaps
      • Listas Enlazadas (Linked Lists)
      • Árboles (BST, AVL, Heaps)
      • Grafos (Graphs)

      Algoritmos:

      • Ordenación (Sorting): bubble, insertion, merge, quicksort — entiende cuándo usar cada uno;
      • Búsqueda Binaria (Binary Search):
      • Recursión y Backtracking
      • Programación Dinámica (DP): subproblemas, memorización, tabulación

      Complejidad:

      • Entiende la notación Big-O (tiempo y espacio)
      • Evalúa el costo de tu solución
      • Compara enfoques y explica el motivo de tu elección

      📌 Ejemplo: «Esta solución se ejecuta en O(n²), pero podemos usar un Hash Map y reducir a O(n).»

      Checklist – Code Interview

      Para ayudarte a prepararte con más confianza, armamos una lista de verificación con todo lo que vale la pena repasar antes de la entrevista. ¡Marca los elementos a medida que avanzas en tus estudios y prácticas!

      ✅ Elegí un lenguaje de programación en el que soy fluido(a).

      ✅ Entiendo y puedo aplicar lógica de bucles, condicionales y recursión.

      ✅ Sé estructurar mi código con buenas prácticas (legibilidad, modularidad).

      ✅ Estudié lo básico de estructuras de datos: Arrays, HashMaps, Pilas, Colas, Árboles, Grafos y Listas Enlazadas.

      ✅ Estudié y tengo conocimiento sobre algoritmos fundamentales: Búsqueda Lineal y Búsqueda Binaria, Algoritmos de Ordenación (Insertion, Merge, QuickSort), Recursión y Backtracking, Programación Dinámica (DP) básica.

      ✅ Entiendo qué es la notación Big-O.

      ✅ Sé calcular el tiempo y espacio de mis soluciones.

      ✅ Puedo comparar alternativas y justificar cuál elegí.

      ✅ Practiqué explicar mi razonamiento en voz alta.

      ✅ Probé mi código con casos diferentes (válidos y límite).

System Design

En esta etapa, vamos a conversar sobre arquitectura de sistemas, soluciones escalables, confiabilidad y toma de decisiones en escenarios complejos. El objetivo es ver cómo piensas, estructuras y evolucionas una solución.

Lo más importante en esta etapa es mostrar cómo piensas. No siempre existe una única solución «correcta». Lo que cuenta es la claridad, las elecciones bien justificadas y tu capacidad para discutir los trade-offs con profundidad.

  • Qué esperamos:

    • Razonamiento estructurado y en capas (de lo macro a lo micro).
    • Análisis de trade-offs: el «porqué» detrás de tus elecciones.
    • Uso adecuado de componentes como caché, colas, bases de datos, CDN.
    • Estimaciones rápidas de capacidad y rendimiento («napkin math»).
    • Una colaboración abierta con el entrevistador.
  • 📚 Cómo prepararse:

    Pasos para guiar tu respuesta:

    • Entiende el problema: alinea el alcance, los usuarios y los objetivos con el entrevistador.
    • Comienza desde el alto nivel: piensa en el recorrido del usuario → solicitud → respuesta.
    • Identifica componentes: frontend, API gateway, backend, DB, caché, servicios externos.
    • Detalla interacciones: protocolos, latencia, escalabilidad, sincronismo.
    • Haz estimaciones: solicitudes por segundo, tamaño de payloads, volumen de datos.
    • Explora alternativas: cola vs. polling, monolito vs. microservicios, síncrono vs. asíncrono.
    • Considera fallos: retry, timeout, circuit breaker, fallback. Alinea el alcance, los usuarios y los objetivos con el entrevistador.
    📌 Ejemplo: «Si la cola no está disponible, ¿qué sucede con los mensajes? ¿Necesitamos retry? ¿Necesitamos garantizar la ordenación?».

      Herramientas para esbozar tu arquitectura:

      • FigJam — más visual, ideal para flujos interactivos.

      Conceptos y técnicas importantes:

      • Load Balancing: round-robin, least connections, health checks.
      • Caching: Redis, CDN, TTL, cache stampede, cache warming.
      • Sharding y Partitioning: por ID, range, geografía, consistencia.
      • Mensajería: Kafka, RabbitMQ, SQS — ideal para sistemas desacoplados.
      • CAP Theorem: trade-off entre consistencia, disponibilidad y tolerancia a la partición.
      • Escalabilidad: vertical vs. horizontal, auto-scaling.
      • Tolerancia a fallos: fallback, retry, timeout, resiliencia.
      • Observabilidad: métricas, logs estructurados, tracing distribuido.
      • Alinea el alcance, los usuarios y los objetivos con el entrevistador.

      📌Dica: Practica explicar con claridad por qué elegiste o descartaste estas técnicas en cada escenario.

      Checklist – System Design

      ¿Quieres asegurarte de no olvidar nada? Te ayudamos con esta lista de verificación práctica para repasar los puntos clave:

      ✅ Puedo empezar con una visión de alto nivel (usersfrontendbackend).

      ✅ Sé dividir el sistema en componentes y explicar sus responsabilidades.

      ✅ Puedo estimar el volumen de datos, solicitudes por segundo (QPS), etc.

      ✅ Soy capaz de discutir trade-offs entre diferentes decisiones técnicas.

      ✅ Estudié los conceptos de Load Balancing (Round-Robin, Least Connection), Cache (Redis, TTL, cache stampede), Mensajería (RabbitMQ, Kafka), Sharding y Partitioning de base de datos, CDN y estrategias de distribución de contenido, Logging, monitoring y observability, Tolerancia a fallos: retry, timeout, circuit breaker; NoSQL vs SQL, lectura x escritura, consistencia eventual.

      ✅ Practiqué crear diagramas en herramientas como Excalidraw o FigJam.

      ✅ Leí o vi al menos dos estudios de caso de system design.

      ✅ Resolví problemas en LeetCode, HackerRank, NeetCode.

      ✅ Consulté el blog de QuintoAndar o de empresas de tech.

      ✅ Participé en mock interviews o simulé con colegas.

Actitudes que marcan la diferencia

La entrevista es un intercambio. No esperamos respuestas perfectas, sino claridad de razonamiento, buenas elecciones y una actitud constructiva. Aquí tienes consejos valiosos para que te vaya bien:

      Muestra tu razonamiento:

      • Habla en voz alta lo que estás pensando, incluso si todavía tienes dudas.
      • Explica por qué elegiste un camino o descartaste otro.
      • Si te bloqueas, comparte tu pensamiento: «Estoy entre dos enfoques y pensando en las implicaciones de cada uno…».
      • ¿Cometiste un error? ¡No hay problema! Muestra cómo ajustarías la solución.

      📌 Consejo extra: Usa términos como «mi hipótesis es», «considerando el costo computacional», «voy a priorizar la claridad primero y luego optimizar». Esto demuestra claridad, lógica y madurez técnica, y evita solo mostrar la respuesta final – sin construir el camino con el entrevistador.

      Comunícate con claridad:

      • Resume tu razonamiento en bloques: contexto → decisión → próximos pasos.
      • Valida el enunciado antes de empezar a codificar: «Déjame confirmar si entendí bien el problema…».
      • Si te quedas en blanco, respira, piensa durante diez segundos y retoma — ¡esto es normal!
      • Involucra al entrevistador en la conversación con preguntas como: «¿Quieres que optimice ahora o podemos seguir con la solución inicial?».
      • ¿Cometiste un error? ¡No hay problema! Muestra cómo ajustarías la solución.

      📌 Consejo extra: Hablar menos también es un superpoder — practica la síntesis. Esto demuestra buena comunicación y genera confianza y claridad en el proceso. Evita respuestas largas y sin pausas — la organización marca la diferencia.

      Colabora con quien te está entrevistando:

      • Demuestra apertura con frases como: «Mi idea inicial es esta, pero estoy súper abierto(a) a sugerencias».
      • Escucha con atención y evita interrumpir.

      📌 Consejo extra: Muestra que ves la entrevista como una construcción conjunta y no como un monólogo técnico. Esto demuestra compañerismo y voluntad de aprender. Evita adoptar una postura defensiva o intentar parecer “infalible”.

      Muestra autoconocimiento y evolución:

      • Habla sobre lo que has estado estudiando o practicando últimamente.
      • Comparte aprendizajes reales, incluso si son simples.
      • Menciona algún desafío técnico o interpersonal que te hizo crecer.
      • Si no sabes algo, está bien: «No lo conozco tan bien, pero intentaría resolverlo pensando de esta forma…».

      📌 Consejo extra: Trae un ejemplo concreto que muestre tu evolución, como: “antes lo resolvería así, pero hoy lo haría diferente debido a…”

      Esto demuestra reflexión, crecimiento y adaptación. Evita respuestas genéricas o asumir que “no tienes ningún punto a desarrollar”.

      La conexión con QuintoAndar marca la diferencia:

      • Cuenta qué te atrae del producto, del equipo o de la cultura.
      • Muestra que investigaste y tienes curiosidad: «Vi un artículo técnico de ustedes sobre X, ¡me pareció genial!».
      • Habla sobre lo que buscas en tu carrera y cómo se conecta con la empresa.

      📌 Consejo extra: Haz una pregunta genuina al final de la entrevista. Esto demuestra intención, propósito y fit con el equipo.