Angular 20 Preguntas y Respuestas 2025 Parte 2 RxJS Detección de Cambios y Rendimiento

Parte 2 de Angular 20 Preguntas y Respuestas 2025: RxJS, Detección de Cambios y Rendimiento. En esta segunda entrega cubrimos desde operadores avanzados de RxJS hasta estrategias de rendimiento y detección de cambios en Angular, con respuestas claras y prácticas para entrevistas y uso en producción.
RxJS Preguntas y Respuestas clave (Q51–Q90)
Q51 Diferencias entre switchMap mergeMap concatMap y exhaustMap
switchMap cancela el observable anterior y se suscribe al más reciente; mergeMap ejecuta todos en paralelo; concatMap ejecuta uno tras otro en orden; exhaustMap ignora nuevas emisiones hasta que el observable actual complete.
Q52 forkJoin vs combineLatest
forkJoin espera a que todos los observables completen y emite una sola vez con los últimos valores. combineLatest emite cada vez que cualquiera emite, una vez que todos han emitido al menos una vez.
Q53 Cómo crear un observable en Angular
Usando new Observable, operadores de creación como of from interval, o a través de HttpClient de Angular.
Q54 Qué es takeUntil
Completa un observable cuando otro observable emite, patrón común para desuscribir y evitar fugas de memoria.
Q55 Cancelar peticiones HTTP
Usar takeUntil con un Subject o AbortSignal en Angular 16 y superiores.
Q56 shareReplay
Repite los últimos valores a nuevos suscriptores, útil para cachear respuestas HTTP y evitar múltiples llamadas.
Q57 Qué es un Subject
Un Subject es a la vez observable y observador, permite multicast a múltiples suscriptores.
Q58 BehaviorSubject ReplaySubject AsyncSubject
BehaviorSubject mantiene el último valor; ReplaySubject repite múltiples valores o todos según configuración; AsyncSubject emite el último valor sólo cuando el stream completa.
Q59 Observables hot vs cold
Cold crea una nueva ejecución por suscriptor; hot comparte la ejecución entre suscriptores.
Q60 Depurar streams RxJS
Usar tap para side effects, RxJS DevTools o console.log para inspeccionar emisiones y tiempos.
Q61 map vs switchMap
map transforma valores emitidos. switchMap transforma y aplana inner observables cancelando anteriores.
Q62 debounceTime
Ignora emisiones hasta que transcurre un periodo sin nuevas emisiones. Muy útil en búsquedas y autocompletados.
Q63 distinctUntilChanged
Evita emitir valores repetidos consecutivos.
Q64 filter
Emite solo valores que cumplen una condición.
Q65 tap
Ejecuta efectos secundarios sin modificar el flujo, ideal para logging y debug.
Q66 startWith
Emite un valor inicial antes de las demás emisiones.
Q67 catchError
Maneja errores y puede devolver un observable alternativo como fallback.
Q68 retry y retryWhen
retry(n) reintenta n veces tras un error. retryWhen permite lógica de reintento personalizada basada en otro observable.
Q69 from vs of
of(1 2 3) emite los valores tal cual. from([1 2 3]) emite cada elemento por separado.
Q70 interval vs timer
interval emite números de forma repetida cada intervalo. timer puede emitir una vez o iniciar un intervalo tras una demora.
Q71 merge
Combina múltiples observables y emite los valores a medida que llegan.
Q72 concat
Ejecuta observables uno tras otro de forma secuencial.
Q73 zip
Combina valores en tuplas y emite cuando todos los observables han emitido correspondiente elemento.
Q74 combineLatestWith
Versión encadenable de combineLatest para flujo más limpio de operadores.
Q75 withLatestFrom
Combina la última emisión de un observable con la emisión de otro.
Q76 Evitar memory leaks
Usar takeUntil async pipe o Subscription.unsubscribe para limpiar suscripciones.
Q77 async pipe
Administra suscripciones automáticamente en templates, suscribe y desuscribe.
Q78 multicast
Comparte una única suscripción entre múltiples observadores evitando ejecuciones redundantes.
Q79 publish vs share
publish devuelve un ConnectableObservable; share es un atajo para multicast con refCount que gestiona referencia automáticamente.
Q80 Observable de orden superior
Un observable que emite otros observables. Se aplana con operadores como switchMap mergeAll concatAll.
Q81 windowTime vs bufferTime
bufferTime acumula valores y emite arrays; windowTime agrupa en observables internos.
Q82 throttleTime vs debounceTime
throttleTime emite el primer valor y ignora los siguientes durante la duración; debounceTime espera silencio antes de emitir.
Q83 auditTime
Ignora valores durante la ventana y luego emite el último valor ocurrido en ese periodo.
Q84 finalize
Ejecuta lógica cuando el observable completa error o se desuscribe.
Q85 pairwise
Emite pares con el valor anterior y el actual.
Q86 scan vs reduce
scan acumula y emite en cada paso; reduce emite solo el resultado final al completar.
Q87 pluck
Extrae una propiedad de objetos en el flujo.
Q88 switchAll
Aplana observables internos manteniendo solo el más reciente, similar a switchMap sin mapeo.
Q89 concatAll mergeAll switchAll
concatAll secuencial, mergeAll paralelo, switchAll mantiene solo el último inner observable.
Q90 backpressure
Situación donde las emisiones sobrepasan la capacidad de procesado. Se maneja con throttleTime debounceTime buffering o estrategias de control de flujo.
Detección de Cambios y Rendimiento en Angular (Q91–Q100)
Q91 Qué es la detección de cambios en Angular
Mecanismo que actualiza el DOM cuando cambia el estado del componente.
Q92 Estrategias de detección
Default revisa siempre. OnPush solo comprueba cuando cambian inputs o cuando un observable ligado emite, reduciendo comprobaciones innecesarias.
Q93 NgZone
Núcleo de Angular que parchea APIs asíncronas y lanza detección de cambios tras completar tareas asíncronas.
Q94 runOutsideAngular
Ejecuta código fuera de la zona de Angular para evitar desencadenar detección de cambios en operaciones que no afectan la vista.
Q95 detectChanges
Forza la detección de cambios inmediata en el subtree del componente donde se invoca.
Q96 markForCheck
Marca un componente OnPush para que sea verificado en el siguiente ciclo de detección.
Q97 trackBy en ngFor
Optimiza el renderizado usando una clave única para identificar elementos y evitar recrearlos innecesariamente.
Q98 Optimizar aplicaciones Angular
Usar OnPush trackBy lazy loading async pipe carga perezosa de módulos y evitar fugas de memoria. Perfilar con herramientas y aplicar caching cuando proceda.
Q99 Angular DevTools
Herramienta para perfilar detección de cambios y localizar cuellos de botella en rendimiento.
Q100 Servicios singleton y rendimiento
Un servicio singleton evita instancias duplicadas y reduce uso de memoria además de mantener estado compartido cuando procede.
Sobre Q2BSTUDIO
En Q2BSTUDIO somos una empresa de desarrollo de software y aplicaciones a medida especializada en soluciones empresariales modernas. Diseñamos software a medida y aplicaciones a medida que integran inteligencia artificial y ciberseguridad para ofrecer soluciones robustas y escalables. Nuestros servicios incluyen implementación y migración a servicios cloud aws y azure, consultoría en servicios inteligencia de negocio y visualización con power bi, y desarrollo de agentes IA y soluciones de ia para empresas.
Si buscas construir una aplicación empresarial personalizada podemos ayudarte a definir arquitectura, seleccionar el stack y entregar una solución completa. Conoce más sobre nuestro desarrollo de aplicaciones y software a medida en software a medida y aplicaciones a medida y descubre nuestras capacidades en inteligencia artificial en servicios de inteligencia artificial para empresas. También ofrecemos servicios de ciberseguridad y pentesting para proteger tus activos digitales y servicios cloud.
Palabras clave estratégicas
Aplicaciones a medida software a medida inteligencia artificial ciberseguridad servicios cloud aws y azure servicios inteligencia de negocio ia para empresas agentes IA power bi.
Conclusión
Esta Parte 2 cubrió operadores avanzados de RxJS y mejores prácticas para detección de cambios y optimización de rendimiento en Angular. Para proyectos que requieran experiencia en Angular, arquitecturas reactivas, integración de IA o seguridad, Q2BSTUDIO ofrece experiencia y servicios completos para llevar su producto desde la idea hasta la producción.
Comentarios