Pregunta de entrevista para Desarrollador full stack

¿Cómo cambian los React Server Components la forma de estructurar una aplicación?

Qué evalúa el entrevistador, cómo estructurar tu respuesta y un ejemplo hablado que puedes adaptar.

Respuesta rápida

Los Server Components se ejecutan solo en el servidor, no envían JavaScript al navegador y pueden hacer await de datos directamente, lo que elimina casi toda la fontanería de fetch más useEffect más estados de carga. Los Client Components, marcados con use client, siguen siendo dueños de la interactividad, el estado y las APIs del navegador. Empujas la obtención de datos hacia arriba, a los componentes de servidor, y dejas los de cliente como hojas pequeñas, lo que reduce el bundle y mueve la cascada de datos al servidor.

Por qué lo preguntan los entrevistadores

Es el mayor cambio en React en años, así que el entrevistador comprueba que estás al día y que sabes articular una frontera en vez de repetir el discurso de marketing. Quieren oír que entiendes qué cruza la frontera de serialización, dónde puede y no puede vivir el estado, y cuáles son las compensaciones. El entusiasmo vago queda mal aquí; un candidato que nombra una restricción real suena a alguien que lo ha entregado.

Cómo estructurar tu respuesta

  • Define los dos tipos de componente en una frase cada uno.
  • Explica qué puede y qué no puede cruzar la frontera.
  • Describe la forma resultante del árbol de componentes.
  • Nombra una compensación concreta con la que te hayas topado.

Ejemplo de respuesta

Ejemplo hablado, en primera persona

El modelo mental que me hizo clic es que la frontera es una frontera de serialización, no una carpeta. Los Server Components se renderizan en el servidor y su código nunca llega al navegador, así que una librería pesada de markdown o de fechas usada ahí cuesta cero kilobytes en el cliente. Pueden hacer await de una llamada a base de datos directamente en el cuerpo del componente. Cualquier cosa con estado, efectos o un manejador de eventos tiene que ser un Client Component con use client arriba, y las props que cruzan hacia él deben ser serializables, así que pasas datos y no funciones ni instancias de clase. En la práctica eso significa que mis árboles son componentes de servidor hasta abajo con pequeñas hojas interactivas, y paso los datos obtenidos en servidor como props. La compensación con la que me topé en un proyecto reciente fue la carga mental en la revisión de código, porque la gente seguía añadiendo use client a un padre por un botoncito y arrastraba en silencio todo un subárbol al cliente. Acabamos añadiendo una regla de lint y una comprobación de tamaño de bundle en CI para cazarlo.

¿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 funciona

Preguntas de seguimiento que puedes esperar

  • ¿Dónde encaja el hook use en todo esto?
  • ¿Cómo gestionas un formulario que necesita un viaje al servidor?
  • ¿Cómo cachearías datos obtenidos dentro de un componente de servidor?

Más preguntas para Desarrollador full stack

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

Ensaya las preguntas difíciles antes de que te las hagan

Practica con un copiloto en vivo y entra preparado. Un Session Pass de $29 te lleva a través de la entrevista sin suscripción y sin ataduras.

Consigue GhostPilot