Averigua cómo crece el tiempo de ejecución según crece la entrada, y luego descarta constantes y términos de orden inferior. Lee la estructura del código: los bloques secuenciales se suman, los bucles anidados se multiplican y las llamadas recursivas siguen la recurrencia. El espacio es la memoria extra que reservas más allá de la entrada, incluida la pila de llamadas. Enuncia el peor caso por defecto y menciona el caso medio aparte si difieren de forma significativa.
Por qué lo preguntan los entrevistadores
El análisis de complejidad es el vocabulario común para hablar de rendimiento, así que el entrevistador quiere saber si puedes razonar sobre escala antes de escribir código y no después de perfilar en producción. Comprueba que separas la tasa de crecimiento de las microoptimizaciones, que te acuerdas del espacio además del tiempo, y que detectas el coste escondido en cosas como ordenar dentro de un bucle o copiar una lista en cada iteración.
Cómo estructurar tu respuesta
- Nombra la entrada y di qué mide realmente n.
- Recorre el código de arriba abajo, sumando el trabajo secuencial y multiplicando el anidado.
- Enuncia tiempo y espacio por separado, descartando constantes.
- Señala el peor caso y la entrada que lo provoca.
Ejemplo de respuesta
Empiezo nombrando n, porque la mitad de la confusión en estas conversaciones viene de que dos personas están midiendo cosas distintas. Después leo el código de forma estructural. Los bloques secuenciales se suman, así que gana el más grande; los bucles anidados se multiplican; una llamada recursiva se convierte en una recurrencia que puedo expandir o reconocer. Para el espacio cuento todo lo que reservo más allá de la entrada, y siempre incluyo la pila de llamadas, que es la parte que la gente olvida con la recursión. Un ejemplo concreto: tenía una función que parecía lineal porque era un bucle sobre una lista de pedidos, pero dentro llamábamos a un helper que buscaba un registro por id en una lista. Esa búsqueda era lineal, así que el coste real era cuadrático, y solo se notó cuando un cliente llegó a unos cuarenta mil pedidos. Cambiamos la lista por un diccionario indexado por id y el endpoint pasó de unos nueve segundos a menos de doscientos milisegundos. Así que mi regla es mirar dentro de cada llamada, no solo los bucles que veo.
¿Tienes esta entrevista a la vuelta de la esquina? GhostPilot escucha tu llamada en vivo, detecta la pregunta en cuanto la hacen y pone una respuesta estructurada en tu pantalla en tiempo real. Pruébalo en tu próxima entrevista de práctica, o coge un Session Pass de $29, sin suscripción, para la de verdad.
Mira cómo funcionaPreguntas de seguimiento que puedes esperar
- ¿Cuál es la complejidad si la entrada ya viene ordenada?
- ¿Cómo cambiaría tu respuesta un análisis amortizado para un array dinámico?
- ¿Cuándo aceptarías un big O peor a cambio de una constante mejor en el mundo real?
Más preguntas para Ingeniero de software
Tu entrevistador hará su propia versión de esta. Pega la descripción real del puesto en el Question Predictor gratuito y obtén las 20 preguntas que ese puesto tiene más probabilidades de hacerte, con lo que cada una busca en realidad.
Predecir mis preguntas