Pregunta de entrevista para Ingeniero de software

Explica la diferencia entre un proceso y un hilo.

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

Respuesta rápida

Un proceso es una unidad de ejecución aislada con su propio espacio de direcciones virtual; un hilo es una unidad de planificación dentro de un proceso que comparte ese espacio con sus hermanos. Los hilos son baratos de crear y pueden compartir datos directamente, que es justo por lo que necesitan locks. Los procesos cuestan más y necesitan comunicación entre procesos explícita, pero una caída o un fallo de memoria en uno no puede corromper a otro.

Por qué lo preguntan los entrevistadores

Esta es la base de toda conversación sobre concurrencia, y los entrevistadores la usan para ver hasta dónde llega el modelo mental. Quieren el punto del aislamiento de memoria, la diferencia de coste y la consecuencia: memoria compartida significa estado mutable compartido, que significa sincronización. Puntos extra si lo conectas con cómo planifica el trabajo tu runtime, porque eso decide si los hilos te ayudan o no.

Cómo estructurar tu respuesta

  • Ánclate en el espacio de direcciones: aislado frente a compartido.
  • Compara el coste de creación y el de cambio de contexto.
  • Saca la consecuencia para la sincronización y el aislamiento ante caídas.
  • Conéctalo con cómo planifica el trabajo el runtime de tu lenguaje.

Ejemplo de respuesta

Ejemplo hablado, en primera persona

La diferencia que importa es la memoria. Cada proceso tiene su propio espacio de direcciones, así que uno que se caiga o que pise un puntero no puede llevarse a los demás por delante, pero solo pueden hablar por pipes, sockets o un segmento de memoria compartida que montes a propósito. Los hilos viven dentro de un proceso y comparten el heap, así que pasar datos entre ellos es solo un puntero, lo que es rápido y también justo la razón por la que necesitas locks. El coste de creación va en la misma línea: lanzar un hilo es barato, hacer fork de un proceso no. En la práctica dejo que el runtime decida mi estrategia. En Python, el trabajo intensivo de CPU va a varios procesos, porque el global interpreter lock impide que los hilos ejecuten bytecode en paralelo, mientras que el trabajo de IO va bien con hilos o async. En Go o Java tiraría primero de hilos o goroutines. Hacerlo al revés es como acabas con ocho hilos de trabajo encolados detrás de un intérprete y sin idea de por qué la máquina está ociosa.

¿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

  • ¿Qué pasa realmente durante un cambio de contexto?
  • ¿Cuándo elegirías IO asíncrono en lugar de hilos por completo?
  • ¿Cómo evita un pool de hilos el coste que has descrito?

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

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