¿Cuáles son algunas buenas preguntas para la entrevista sobre la programación de sockets de Linux?

Los zócalos funcionan esencialmente igual en la mayoría de las plataformas. La pila TCP / IP en Linux se implementa de manera ligeramente diferente ya que el código se escribió desde cero, pero la API pública es la misma (está estandarizada). Aquí hay algunas sugerencias:

  • ¿Qué es un zócalo? ¿Para qué se usa esto?
  • ¿Cómo se resuelven las direcciones IP? ¿Cuál es la diferencia entre una dirección IP4 e IP6? ¿Cómo afecta eso a las llamadas de socket?
  • ¿Cómo se determina a qué puerto conectarse? ¿Cuáles son algunos de los más comunes? ¿Qué puertos no usarías?
  • ¿Cuál es la diferencia entre un socket TCP y un socket UDP? ¿Por qué usarías uno u otro?
  • ¿Qué lista de llamadas se utilizan para establecer una conexión de socket TCP y / o UDP? ¿Qué información se necesita?
  • ¿En qué se diferencian las llamadas de socket si está estableciendo un socket del lado del servidor?
  • ¿Cómo se prueba si un socket está listo para ser leído o escrito?
  • Si un enchufe se cierra inesperadamente, ¿cómo lo sabrías y cómo lo manejarías?
  • ¿Qué sucede con la conexión, el hilo, el proceso si un zócalo no se cierra correctamente?
  • ¿Cuánto tiempo permanece abierta una conexión de socket cuando está inactiva? ¿Cómo cambiarías ese comportamiento?
  • ¿Cómo establecería un socket en modo sin bloqueo? ¿En qué situaciones harías eso?
  • ¿Cómo manejaría escribir una aplicación de socket multiproceso y / o multiproceso? ¿Qué consideraciones hay? ¿Hay más de una forma de manejarlo?

Si su candidato puede responder todas estas preguntas correctamente, es probable que tenga experiencia con sockets.

Si rechazan cualquiera de las primeras 5 o 6 preguntas, puede descartarlas y pasar al siguiente candidato.

Como referencia, puede usar la Programación de red Unix, 3a edición , de Stevens, Fenner y Rudoff .