Ese patrón apunta a una fuga o a un crecimiento sin límite. Toma capturas del heap en DevTools en dos momentos tras el mismo flujo de usuario, compara tamaños retenidos y mira qué está reteniendo los nodos del DOM desprendidos. Las causas habituales son listeners y suscripciones que nunca se eliminan, temporizadores que siguen corriendo tras el desmontaje, cachés que nunca desalojan y closures que capturan objetos grandes. Se arregla desmontando todo lo que un componente creó.
Por qué lo preguntan los entrevistadores
El entrevistador quiere alguien metódico depurando, no alguien que adivina. Los problemas de memoria no se arreglan leyendo código, así que comprueban si conoces las herramientas: capturas del heap, líneas de tiempo de asignación, nodos desprendidos y el monitor de rendimiento. También sondea la disciplina de ciclo de vida, ya que casi todas las fugas en single page apps vienen de algo montado sin su limpieza correspondiente.
Cómo estructurar tu respuesta
- Confirma el síntoma con una medición de memoria, no con una corazonada.
- Describe la comparación de tres capturas sobre un flujo repetido.
- Nombra los sospechosos habituales que revisas en el código.
- Explica el patrón de solución: cada suscripción tiene su desmontaje.
Ejemplo de respuesta
Primero confirmaría que es memoria y no otra cosa, así que dejaría abierto el monitor de rendimiento y repetiría el flujo que describen los usuarios, mirando el heap y los contadores de listeners y de nodos. Si suben y nunca bajan tras forzar una recolección, es una fuga. Luego tomo una captura del heap, ejecuto el flujo diez veces, tomo otra y comparo por tamaño retenido. Los nodos del DOM desprendidos son la pista, y la ruta de retención me dice qué los está sujetando. En la práctica casi siempre es algo montado sin su desmontaje correspondiente: un listener de resize o scroll en window, una suscripción a un socket, un intervalo o un observer que sobrevive al componente. Encontré uno donde una librería de gráficas añadía un listener por render y solo quitaba uno al desmontar, así que el contador crecía con cada navegación. El patrón de solución es aburrido pero eficaz: todo lo creado en un efecto devuelve su limpieza, y toda caché tiene un límite de tamaño en vez de crecer para siempre.
¿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
- ¿Qué es un nodo del DOM desprendido y cómo encuentras qué lo retiene?
- ¿Cómo prevendrías esta clase de bug en la revisión de código?
- ¿Cómo distingues una fuga de una caché que simplemente es grande?
Más preguntas para Desarrollador frontend
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