Materias · 🏛️ Universidad y trabajo
Entrevistas técnicas
Ejercicios resueltos de Entrevistas técnicas paso a paso, con el error que más se comete en cada uno: Problemas típicos de entrevista, Analizar la complejidad de un código en la entrevista y más. Gratis y en español.
Preguntarle al tutor de Entrevistas técnicasSin instalar nada. Puedes probar antes de crear cuenta.
Ejercicios resueltos de Entrevistas técnicas
Resueltos paso a paso, como te los explicaría el tutor, y con el error que más se comete.
Problemas típicos de entrevista
Pregunta clásica: dada la lista [2, 7, 11, 15, 1] y el objetivo 9, devuelve las posiciones de los dos números que suman 9. Respóndela como se responde en una entrevista: primero la solución obvia con su costo y después la mejora.
Cómo se resuelve
- 1Antes de escribir nada se aclara el problema en voz alta: ¿hay una sola respuesta o puede haber varias?, ¿se puede usar el mismo elemento dos veces?, ¿hay números repetidos o negativos? Preguntar esto suma puntos; lanzarse a codificar sin preguntar los resta.
- 2Solución obvia: dos bucles anidados que prueban todas las parejas. Con 5 elementos son 10 parejas, y en general n(n − 1)/2, o sea O(n²) en tiempo y O(1) en memoria. Se enuncia, se deja como referencia y se dice que se va a mejorar.
- 3La mejora sale de cambiar la pregunta. En vez de «¿qué pareja suma 9?», se recorre una sola vez y en cada número x se pregunta «¿ya vi antes su complemento, 9 − x?».
- 4Responder eso en tiempo constante exige un diccionario que guarde valor → posición. Ese es el canje típico de entrevista: se gasta O(n) de memoria para bajar el tiempo a O(n).
- 5Recorrido: x = 2 en la posición 0, su complemento es 7, el diccionario está vacío, así que se guarda 2 → 0. x = 7 en la posición 1, su complemento es 9 − 7 = 2, y el 2 sí está guardado en la posición 0. Se devuelve [0, 1].
- 6Cierre: se repasan en voz alta los casos borde (lista vacía, ninguna pareja que sume, el objetivo que es el doble de un elemento) y se dice la complejidad final: O(n) en tiempo y O(n) en memoria.
Respuesta: Las posiciones [0, 1], porque 2 + 7 = 9. La fuerza bruta es O(n²); con un diccionario de valor → posición baja a O(n) en tiempo y O(n) en memoria.
El error de siempre: Quedarse callado mientras se piensa. El entrevistador no está calificando solo el código: si no oye el razonamiento no puede dar puntos ni echar una mano cuando el candidato se atasca. El error técnico más frecuente en este problema es guardar el número en el diccionario ANTES de buscar su complemento: con objetivo 4 y un solo 2 en la lista, el 2 se encuentra a sí mismo y se devuelve [0, 0], que es falso. Primero se busca, después se guarda.
Analizar la complejidad de un código en la entrevista
Te muestran esta función y preguntan su complejidad. El candidato responde O(n) porque hay un solo bucle. ¿Está bien?
def unir(palabras):
r = ""
for p in palabras:
r = r + p
return r
Cómo se resuelve
- 1El bucle da n vueltas y de ahí sale la respuesta rápida. Pero Big O cuenta operaciones elementales, no vueltas del bucle: primero hay que preguntarse cuánto cuesta la línea de adentro.
- 2En Python, y también en Java con String, las cadenas son inmutables: r + p no agrega nada al final, crea una cadena nueva y copia en ella todo lo que ya había acumulado.
- 3Si cada palabra mide k caracteres, en la vuelta i se copian i·k caracteres. El total es k·(1 + 2 + … + n) = k·n(n + 1)/2.
- 4Eso es O(n²) en caracteres copiados, aunque el bucle solo dé n vueltas. La operación «barata» de adentro era la cara.
- 5La corrección es acumular las piezas y unirlas una sola vez al final con "".join(palabras), que copia cada carácter exactamente una vez: O(n).
- 6Con 10.000 palabras de 10 caracteres, la versión con + copia unos 500 millones de caracteres; la versión con join copia 100.000.
Respuesta: No está bien: es O(n²). El bucle da n vueltas, pero cada concatenación copia toda la cadena acumulada. Se arregla con "".join(palabras), que sí es O(n).
El error de siempre: Contar solo los bucles visibles y dar por hecho que cada línea de adentro cuesta O(1). Las operaciones que esconden un costo son casi siempre las mismas: concatenar cadenas, insertar al principio de una lista (lista.insert(0, x) corre todos los elementos, O(n)) y preguntar «x in lista» sobre una lista en vez de sobre un conjunto (O(n) en lugar de O(1)). En una entrevista, antes de soltar la complejidad conviene decir en voz alta qué se está suponiendo que cuesta cada operación.
¿Y si tu ejercicio no es ninguno de estos?
No hace falta buscar el ejercicio exacto en internet. Trae el tuyo, o pide los que te falten.
Todo esto es gratis y sin instalar nada. Puedes probar antes de crear cuenta.
Lo que cubre
- Problemas típicos de entrevista
- Analizar la complejidad de un código en la entrevista
Preguntas que le puedes hacer
- Problemas típicos de …Explícame «Problemas típicos de entrevista» con un ejemplo práctico y dime en qué suele equivocarse la gente.
- Analizar la complejid…Explícame «Analizar la complejidad de un código en la entrevista» con un ejemplo práctico y dime en qué suele equivocarse la gente.
Cómo enseña este tutor
Es riguroso y completo: justifica cada paso y nombra el teorema, la norma o la buena práctica que está aplicando, para que puedas citarla en tu trabajo o en el parcial.
- · Te muestra el camino completo, no solo el resultado.
- · Si algo no te cuadra, te lo explica otra vez de otra manera.
- · Con una foto de tu cuaderno te dice dónde está el error.
- · Te arma quizzes de lo que acabas de ver para saber si de verdad quedó.
Otras materias de Universidad y trabajo