Apariencia
🎓 Evaluación 1 — Servicios, HTTP y RxJS
Curso Angular · 2026-08-12 · 15 preguntas de opción múltiple ⬅️ Volver al índice de evaluaciones
📋 Datos de la evaluación
| Dato | Detalle |
|---|---|
| Fecha | 2026-08-12 |
| Modalidad | Teórica — 15 preguntas de opción múltiple |
| Temas que evaluó | Inyección de dependencias, servicios, HTTP e interceptores, environment.ts, Observables y operadores RxJS, NgRx |
| Resultado | (por confirmar) |
🗺️ Qué evaluó (mapa de temas)
Evaluación 1 (15 preguntas)
├── 🧰 Servicios e inyección de dependencias .... preguntas 1-2
├── 🌐 HTTP, interceptores y environments ....... preguntas 3-7
├── 🔄 Observables y operadores RxJS ............ preguntas 8-14
└── 🗃️ NgRx (manejo de estado) .................. pregunta 15💡 Para re-rendir la evaluación: lee cada pregunta, elige tu alternativa y recién ahí abre "Ver respuesta". Cada respuesta explica el porqué en una o dos líneas.
❓ Preguntas con solución
1. ¿Qué mecanismo usa Angular para proporcionar servicios a los componentes?
- Herencia
- Inyección de dependencias
- Property Binding
- Directivas
Ver respuesta
Inyección de dependencias. Angular crea la instancia del servicio y se la "entrega" al componente que la pide (por constructor o con inject()), en vez de que el componente la construya con new. Es lo que hiciste en la Clase 11 al inyectar Productoservice en ListaProductos.
2. ¿Qué decorador marca una clase como servicio inyectable?
@Component@NgModule@Injectable@Directive
Ver respuesta
@Injectable. Con @Injectable({ providedIn: 'root' }) el servicio queda disponible en toda la app como instancia única (singleton), sin registrarlo a mano en ningún módulo.
3. ¿Qué clase se usa para hacer peticiones HTTP?
HttpModuleRestClientFetchService
Ver respuesta
La alternativa marcada como correcta fue HttpModule (las otras dos no existen en Angular).
📝 Ojo con la nomenclatura:
HttpModulees la API antigua (del paquete@angular/http, retirada hace años). Lo actual es la claseHttpClient, que en proyectos standalone como el tuyo se activa conprovideHttpClient()enapp.config.ts— exactamente como lo tienes en la Clase 11. Si esta pregunta cae en una entrevista, la respuesta moderna esHttpClient.
4. ¿Qué método HTTP se usa para actualizar un recurso completo?
GETPOSTPUTDELETE
Ver respuesta
PUT. Reemplaza el recurso entero con lo que envías. La versión "parcial" (cambiar solo algunos campos) es PATCH; POST crea, GET lee y DELETE elimina.
5. ¿Cuál es la función de un interceptor HTTP?
- Crear componentes
- Modificar peticiones/respuestas
- Generar rutas
- Validar formularios
Ver respuesta
Interceptar y modificar peticiones o respuestas HTTP. Es un "peaje" por el que pasa toda petición que sale y toda respuesta que llega: sirve para agregar headers, manejar errores globalmente o mostrar un spinner de carga, sin repetir ese código en cada servicio.
6. ¿Dónde se suele colocar el token de autenticación de las peticiones?
angular.json- Headers mediante interceptor
- Componente raíz
tsconfig.json
Ver respuesta
En los headers, mediante un interceptor. El interceptor agrega automáticamente Authorization: Bearer <token> a cada petición saliente — un solo lugar en vez de repetirlo en cada llamada. (angular.json y tsconfig.json son archivos de configuración del build, no viajan al servidor.)
7. ¿Cuál es la función de environment.ts?
- Definir estilos
- Configuración por entorno
- Crear componentes
- Definir rutas
Ver respuesta
Guardar variables de configuración según el entorno. Por ejemplo, la URL de la API: environment.ts apunta a desarrollo y environment.prod.ts a producción, y el build usa el archivo correcto sin tocar el código.
8. ¿Qué es un Observable?
- Una función que se ejecuta una sola vez
- Una fuente de datos a la que uno se puede suscribir
- Una directiva
- Un componente
Ver respuesta
Una fuente de datos suscribible. Puede emitir 0, 1 o muchos valores a lo largo del tiempo, y no hace nada hasta que alguien se suscribe con .subscribe() — es "frío". Lo viste a fondo en Conceptos (secciones de Observable y .subscribe()) y en la Clase 11.
9. ¿Qué operador de RxJS transforma los valores que emite un Observable?
filtermaptapmerge
Ver respuesta
map. Aplica una función a cada valor emitido y emite el resultado (igual que el .map() de los arrays, pero sobre emisiones). filter deja pasar o no, tap "espía" sin modificar, merge combina varios Observables.
10. ¿Qué operador se usa para evitar procesar emisiones demasiado rápidas (p. ej. tecleo en un buscador)?
switchMapdebounceTimecombineLatestforkJoin
Ver respuesta
debounceTime. Espera N milisegundos de silencio antes de emitir el último valor: si el usuario teclea "angular", no se disparan 7 peticiones sino 1, cuando deja de escribir. Clásico en buscadores con autocompletado.
11. ¿Qué operador cancela la petición anterior cuando llega un valor nuevo?
switchMaptapfilterforkJoin
Ver respuesta
switchMap. "Se cambia" (switch) al Observable nuevo y cancela el anterior si seguía en vuelo. Combinado con debounceTime es el dúo estándar de un buscador: solo importa la respuesta de la última búsqueda, las anteriores se descartan.
12. ¿Qué operador espera a que varios Observables terminen y entrega todos los resultados juntos?
debounceTimeforkJoinmapBehaviorSubject
Ver respuesta
forkJoin. Es el Promise.all de RxJS: espera a que todos completen y emite un único valor con los resultados combinados. Útil para cargar varias APIs antes de pintar una pantalla.
13. ¿Qué distingue a un BehaviorSubject de otros Subjects?
- No emite valores
- Requiere valor inicial y conserva el último valor
- Solo funciona con HttpClient
- Admite un solo suscriptor
Ver respuesta
Requiere un valor inicial y conserva el último valor emitido. Quien se suscribe tarde recibe inmediatamente el último valor (no se pierde la "foto" actual). Por eso se usa para estado compartido entre componentes, como el usuario logueado o un carrito.
14. ¿Cuál es la ventaja del pipe async en el template?
- Suscripción automática
- Convertir el Observable a Promise
- Eliminar servicios
- Reemplazar
ngFor
Ver respuesta
Se suscribe y se desuscribe automáticamente. {{ datos$ | async }} en el template evita el .subscribe() manual en la clase y, más importante, la desuscripción al destruir el componente — adiós fugas de memoria por suscripciones olvidadas.
15. En NgRx, ¿qué representa el evento que dispara un cambio de estado?
ReducerStoreActionSelector
Ver respuesta
Action. Es el evento que describe qué pasó (p. ej. [Carrito] Agregar producto). El Reducer calcula el estado nuevo a partir de la Action, el Store guarda el estado y el Selector lee pedazos de él. Flujo: Action → Reducer → Store → Selector.
🧠 Repaso — qué cubren mis apuntes y qué falta
| Tema | Preguntas | ¿Dónde repasarlo? |
|---|---|---|
Inyección de dependencias y @Injectable | 1-2 | Clase 11 — Servicios |
HttpClient / provideHttpClient() | 3 | Clase 11 — Servicios |
Observables y .subscribe() | 8 | Conceptos y Clase 11 |
Métodos HTTP (PUT, PATCH…) | 4 | Sin apunte propio aún — 🔜 pendiente |
| Interceptores y token en headers | 5-6 | Sin apunte aún — 🔜 pendiente |
environment.ts | 7 | Sin apunte aún — 🔜 pendiente |
Operadores RxJS (map, debounceTime, switchMap, forkJoin) | 9-12 | Sin apunte aún — 🔜 pendiente |
BehaviorSubject y pipe async | 13-14 | Sin apunte aún — 🔜 pendiente |
| NgRx (Action/Reducer/Store/Selector) | 15 | Sin apunte aún — 🔜 pendiente |
⚠️ La evaluación se adelantó a las clases: interceptores, operadores RxJS y NgRx todavía no tienen nota propia en los apuntes. Son los candidatos naturales para las próximas clases o para una nota de conceptos dedicada a RxJS.
🧪 Estas 15 preguntas son casi un cuestionario de entrevista estándar de Angular (DI,
switchMapvsdebounceTime,BehaviorSubject, pipeasync, NgRx). Vale la pena repasarlas también desde Entrevistas.