Este documento recopila preguntas comunes sobre algoritmos y estructuras de datos que suelen aparecer en entrevistas técnicas. Incluye explicaciones, ejemplos prácticos y conceptos clave para ayudarte a resolver problemas con eficiencia y claridad.
🔹 Todas las preguntas están respondidas directamente en este archivo.
Puedes navegar usando el índice para ir a las secciones que más te interesen.
- ¿Qué es una estructura de datos?
- ¿Qué es un array y cómo funciona?
- ¿Qué es una pila (stack)?
- ¿Qué es una cola (queue)?
- ¿Qué es una lista enlazada (linked list)?
- ¿Qué es una tabla hash?
- ¿Qué es un árbol binario?
- ¿Qué es un heap?
- ¿Qué es un grafo?
- ¿Qué es un algoritmo?
- ¿Qué es la notación Big O y por qué es importante?
- ¿Qué es la recursión?
- ¿Cuál es la diferencia entre búsqueda lineal y búsqueda binaria?
- ¿Qué es ordenamiento por burbuja (bubble sort)?
- ¿Qué es quicksort y cómo funciona?
- ¿Qué es el algoritmo de Dijkstra?
- ¿Qué es el algoritmo de backtracking?
- ¿Qué es programación dinámica?
- ¿Qué es una búsqueda en anchura (BFS)?
- ¿Qué es una búsqueda en profundidad (DFS)?
Es una forma de organizar y almacenar datos para que puedan ser usados de forma eficiente. Ejemplos: arrays, listas, árboles, grafos.
Es una colección de elementos almacenados en posiciones contiguas de memoria. Permite acceso directo mediante índices.
const arr = [10, 20, 30];
console.log(arr[1]); // 20Es una estructura LIFO (Last In, First Out). El último en entrar es el primero en salir.
const stack = [];
stack.push(1);
stack.push(2);
console.log(stack.pop()); // 2Es una estructura FIFO (First In, First Out). El primero en entrar es el primero en salir.
const queue = [];
queue.push(1);
queue.push(2);
console.log(queue.shift()); // 1Es una colección de nodos donde cada nodo apunta al siguiente. Ideal para inserciones/eliminaciones frecuentes.
class Node {
constructor(valor) {
this.valor = valor;
this.next = null;
}
}Permite almacenar pares clave-valor con acceso rápido. Usa funciones hash para indexar.
const mapa = new Map();
mapa.set("clave", "valor");
console.log(mapa.get("clave")); // "valor"Estructura jerárquica donde cada nodo tiene como máximo dos hijos. Base para árboles de búsqueda, heaps, etc.
Es un árbol binario completo que mantiene una propiedad específica: en un max heap, cada padre ≥ hijos.
Conjunto de nodos conectados por aristas. Puede ser dirigido o no, ponderado o no.
Es una secuencia de pasos definidos para resolver un problema. Debe ser claro, finito y ejecutable.
Describe la complejidad temporal o espacial de un algoritmo en función del tamaño de entrada.
| Notación | Descripción | Ejemplo |
|---|---|---|
| O(1) | Constante | Acceso a un array |
| O(n) | Lineal | Búsqueda lineal |
| O(log n) | Logarítmica | Búsqueda binaria |
| O(n²) | Cuadrática | Bubble sort |
Es cuando una función se llama a sí misma para resolver subproblemas.
function factorial(n) {
if (n === 0) return 1;
return n * factorial(n - 1);
}- Lineal: Recorre uno a uno los elementos (O(n)).
- Binaria: Divide el array ordenado a la mitad en cada paso (O(log n)).
Algoritmo simple que compara e intercambia elementos adyacentes repetidamente.
function bubbleSort(arr) {
for (let i = 0; i < arr.length - 1; i++)
for (let j = 0; j < arr.length - i - 1; j++)
if (arr[j] > arr[j + 1])
[arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
return arr;
}Algoritmo de ordenamiento basado en "divide y vencerás". Usa un pivote y separa elementos menores y mayores.
Calcula el camino más corto desde un nodo a todos los demás en un grafo ponderado sin ciclos negativos.
Prueba soluciones recursivamente y retrocede si no cumplen. Ejemplo: Sudoku, n-reinas.
Técnica que guarda resultados de subproblemas para no repetir cálculos. Ejemplo: Fibonacci con memoización.
Explora los nodos nivel por nivel. Se implementa con una cola.
Explora lo más profundo posible antes de retroceder. Se implementa con una pila o recursión.
- Visualgo.net (visualizaciones)
- Leetcode
- GeeksforGeeks - Data Structures
- Big O Cheat Sheet
- CS50 - Harvard
🎥 Videos recomendados:
Hecho con 🧠 por @holasoymalva