DEV Community

Grego
Grego

Posted on

Las 5 Estructuras de Datos que Dominarán tu Próxima Entrevista Técnica

Las 5 Estructuras de Datos que Dominarán tu Próxima Entrevista Técnica

Si estás preparándote para entrevistas en empresas como Mercado Libre, Nubank, Rappi, Globant, o buscando roles remotos en startups estadounidenses, hay algo que debes saber: el 70% de las preguntas técnicas se resuelven con solo 5 estructuras de datos.

No se trata de memorizar definiciones. Se trata de pensar en estructuras, no en sintaxis.

En esta primera parte de nuestra serie, vamos a dominar las cinco estructuras que aparecen una y otra vez en entrevistas técnicas — con ejemplos prácticos y las preguntas típicas que te van a hacer.


1. Array — El Fundamento de Todo

Un array es un bloque continuo de memoria que almacena elementos del mismo tipo. Cada elemento tiene un índice que permite acceso directo en tiempo constante.

¿Por qué es tan rápido?

La magia está en la fórmula:

Dirección = Dirección Base + (Índice × Tamaño del Elemento)

Enter fullscreen mode Exit fullscreen mode

No hay que recorrer nada. Se calcula la posición exacta en memoria instantáneamente.

Cuándo usarlo

  • Necesitas acceso instantáneo por índice
  • El tamaño de tu colección es fijo o cambia poco
  • La localidad de memoria importa (iteraciones frecuentes)

Complejidad

Operación Tiempo
Acceso por índice O(1)
Búsqueda O(n)
Inserción al final O(1)*
Inserción en medio O(n)
Eliminación O(n)

*O(1) amortizado si hay capacidad; O(n) si requiere redimensionar.

Pregunta típica de entrevista

"Dado un array de enteros y un target, encuentra dos números que sumen el target."

Tip: La solución óptima no usa arrays solos — usa un HashMap. Esto nos lleva a...


2. HashMap — Tu Mejor Amigo en Entrevistas

Un HashMap almacena pares clave-valor usando una función hash. Transforma cualquier clave en un índice de array interno, dando acceso promedio en O(1).

Cómo funciona internamente

  1. La clave pasa por una función hash
  2. El hash se convierte en un índice del array interno
  3. Si dos claves generan el mismo índice (colisión), se encadenan en una lista
// Estructura conceptual
"María" → hash("María") → índice 3 → [("María", 28)]
"Pedro" → hash("Pedro") → índice 7 → [("Pedro", 34)]
"Ana"   → hash("Ana")   → índice 3 → [("María", 28), ("Ana", 25)] // colisión

Enter fullscreen mode Exit fullscreen mode

Cuándo usarlo

  • Necesitas búsquedas rápidas por clave
  • Estás contando frecuencias de elementos
  • Necesitas detectar duplicados
  • Quieres mapear relaciones (usuario → datos, producto → precio)

Complejidad

Operación Promedio Peor caso
Búsqueda O(1) O(n)
Inserción O(1) O(n)
Eliminación O(1) O(n)

El peor caso ocurre con muchas colisiones (mala función hash o datos adversarios).

Pregunta típica de entrevista

"Encuentra el primer carácter no repetido en un string."

Solución: Un HashMap para contar frecuencias, luego un segundo recorrido para encontrar el primero con cuenta = 1.


3. Stack — LIFO y Por Qué Importa

Un Stack (pila) opera bajo el principio LIFO: Last In, First Out. El último elemento que entra es el primero que sale.

Piensa en una pila de platos: solo puedes tomar el de arriba.

Operaciones fundamentales

push(4)  → [4]
push(11) → [4, 11]
push(6)  → [4, 11, 6]
peek()   → 6 (solo mira, no remueve)
pop()    → [4, 11] (remueve el 6)

Enter fullscreen mode Exit fullscreen mode

Cuándo usarlo

  • Necesitas orden LIFO
  • Implementas funcionalidad de "deshacer/rehacer"
  • Parseas expresiones (paréntesis balanceados, notación postfix)
  • Manejas llamadas recursivas (el call stack del sistema es literalmente un stack)

Complejidad

Operación Tiempo
push O(1)
pop O(1)
peek O(1)
búsqueda O(n)

Pregunta típica de entrevista

"Dado un string con paréntesis, corchetes y llaves, determina si está balanceado."

Estrategia: Push en cada apertura, pop y comparar en cada cierre. Si el stack queda vacío al final y todos los cierres matchearon, está balanceado.


4. Queue — FIFO para BFS y Procesamiento

Una Queue (cola) opera bajo el principio FIFO: First In, First Out. El primer elemento que entra es el primero que sale.

Piensa en una fila de banco: el primero en llegar es el primero en ser atendido.

Operaciones fundamentales

enqueue(7) → [7]
enqueue(3) → [7, 3]
dequeue()  → [3] (sale el 7)
enqueue(8) → [3, 8]
front()    → 3 (próximo en salir)

Enter fullscreen mode Exit fullscreen mode

Cuándo usarlo

  • Procesamiento en orden de llegada
  • BFS (Breadth-First Search) en grafos y árboles
  • Sistemas de colas de tareas y mensajes
  • Buffers de datos (streaming, I/O)

Complejidad

Operación Tiempo
enqueue O(1)
dequeue O(1)
front O(1)
búsqueda O(n)

Pregunta típica de entrevista

"Dado un árbol binario, retorna sus valores nivel por nivel."

Estrategia: BFS con una queue. Encolas la raíz, y en cada iteración procesas todos los nodos del nivel actual mientras encolas sus hijos.


5. Linked List — Flexibilidad vs. Arrays

Una Linked List (lista enlazada) almacena elementos en nodos dispersos en memoria, conectados mediante punteros.

Estructura de un nodo

class Node {
    int data;
    Node next;

    Node(int data) {
        this.data = data;
        this.next = null;
    }
}

Enter fullscreen mode Exit fullscreen mode

Tipos principales

  • Singly Linked List: Cada nodo apunta solo al siguiente
  • Doubly Linked List: Cada nodo apunta al anterior y al siguiente
  • Circular: El último nodo apunta de vuelta al primero

Cuándo usarlo

  • Inserciones/eliminaciones frecuentes al inicio o en medio
  • No sabes el tamaño final de antemano
  • Implementas stacks, queues, o caches LRU
  • La memoria está fragmentada

Complejidad

Operación Tiempo
Acceso por índice O(n)
Inserción al inicio O(1)
Inserción al final O(1)*
Eliminación (dado el nodo) O(1)
Búsqueda O(n)

*O(1) si mantienes referencia al tail; O(n) si debes recorrer.

Pregunta típica de entrevista

"Detecta si una linked list tiene un ciclo."

Estrategia: Algoritmo de Floyd (tortuga y liebre). Dos punteros: uno avanza de a uno, otro de a dos. Si se encuentran, hay ciclo.


Comparativa Rápida

Estructura Mejor para Evitar cuando
Array Acceso por índice, iteración Inserciones frecuentes en medio
HashMap Búsqueda por clave, conteos Necesitas orden
Stack LIFO, parsing, recursión Necesitas acceso aleatorio
Queue FIFO, BFS, procesamiento Necesitas acceso aleatorio
Linked List Inserciones dinámicas Acceso por índice frecuente

Próximamente: Parte 2

En la segunda parte cubriremos las estructuras que te hacen destacar en entrevistas senior:

  • Trees — La base de la jerarquía
  • Binary Search Tree — Búsqueda ordenada
  • Heaps — Priority queues y Top-K
  • Graphs — Modelando relaciones complejas

¿Cuál de estas estructuras te ha dado más problemas en entrevistas? Comparte tu experiencia en los comentarios.


Este artículo es parte de la serie "Estructuras de Datos para Entrevistas Técnicas" en yoDEV. Síguenos para no perderte la próxima entrega.

Top comments (0)