socket programming programing program how geeksforgeeks c++ multithreading sockets

c++ - programming - Preguntas de la entrevista sobre la programación de socket y multi-threading



socket tcp udp c++ (8)

¿Estás preguntando porque has sido arrastrado para entrevistar a alguien que estará en tu equipo? Haga preguntas basadas en problemas reales que haya tenido que enfrentar en sus operaciones cotidianas. Piensa en el último error que has relacionado con la programación de socket, y conviértelo en una pregunta de entrevista.

La teoría es agradable, pero quieres saber que la persona que se une al equipo tiene experiencia en las trincheras.

Por favor, cualquiera me puede decir las preguntas, que se pueden hacer en una entrevista para los temas a continuación

  • Programación de zócalos
  • Multi-Threading

Un agradecimiento anticipado para todos los que brindan su tiempo



Como gerente de contratación, mi pregunta de red favorita fue esta:

Imagine un usuario sentado en una PC conectada a Ethernet. Él tiene un navegador abierto. Teclea "www.google.com" en la barra de direcciones y pulsa "enter".

Ahora dime qué es el primer paquete que aparece en la Ethernet.

Las posibles respuestas (de variabilidad) incluyen:

  • No lo sé.
  • Un paquete de solicitud HTTP.
  • Un paquete syn TCP.
  • Un paquete de solicitud DNS.
  • Un paquete ARP.
  • Depende.

Cada una de las respuestas revela algo acerca de la comprensión de la red en general, y de IP y TCP en particular. La discusión posterior puede revelar volúmenes sobre su comprensión. (Suponiendo, por supuesto, que el interlocutor tenga cierta experiencia en esta área).


Un par de preguntas de ejemplo:

  • E / S asíncrona, un enfoque es hacer una pregunta donde diferentes clientes pueden consultar el servidor y puede dar como resultado condiciones de carrera si se implementa a través de múltiples hilos (por ejemplo, el almacenamiento en caché de los resultados). Si el entrevistado recurre a múltiples hilos, abra las condiciones de carrera y vea si mencionan las E / S asíncronas como una opción.
  • ¿Cuál es la diferencia entre dead-lock y live-lock
  • Prototipo de un servidor web
  • Prototipo de un cliente web
  • ¿Qué son los puertos efímeros? alternativamente, describe una aplicación de carga de carga que golpea un servidor con 1000s de solicitudes por segundo pero después de varios segundos deja de realizar solicitudes al servidor; después de 2-4 minutos, la aplicación comienza de nuevo a golpear el servidor con miles de solicitudes.
  • Escriba un buffer productor / consumidor seguro para subprocesos al que puedan acceder uno o más productores / consumidores
  • Cuál es la diferencia entre cliente / servidor y p2p
  • Se trata más de redes, pero es útil saber qué ocurre debajo de las llamadas de socket: describa el protocolo de enlace TCP de 3 vías
  • ¿Cuál es el algoritmo de Nagle? ¿Cuándo es deseable? ¿Cómo apagarías esto?
  • Variante de Linux: al escribir un daemon, ¿cuáles son los componentes básicos (es decir, bifurcar a un hijo y matar al padre, cerrar stdin / stdout / stderr, etc.)?
  • Variante de Windows: al escribir un servicio de Windows, ¿cuáles son los componentes básicos?
  • Diseñe un protocolo para comunicarse entre un cliente y un servidor para enviar audio / video. ¿Cómo se extiende para la próxima característica más reciente / mejor.
  • ¿Cómo funciona Windows TCP y qué puedo hacer para optimizar el rendimiento de una aplicación que realiza muchas lecturas grandes en todos los continentes?

Preguntas sobre el socket

  • ¿Qué es un socket?
  • ¿Cuáles son las diferencias entre accept y connect ?
  • ¿Cuáles son las diferencias entre close y shutdown ?
  • ¿Cómo se connect a www.google.com forma asíncrona?

Preguntas multi-threading

  • ¿Qué es un hilo y cómo es diferente de un proceso?
  • ¿Cuándo podría elegir usar hilos en un solo sistema de CPU?
  • ¿Cómo medirías la sobrecarga del cambio de contexto entre hilos?
  • ¿Cómo harías una tabla hash segura de MT, mientras permites la máxima concurrencia?

Programación de zócalos

  • Diferencia entre UDP y TCP.
  • Diferencia entre enchufes asíncronos y síncronos.
  • Que es un paquete
  • ¿Cómo determinaste si el paquete no llegó mal formado?
  • ¿Cómo determinó dónde termina un paquete y dónde comienza otro?
  • ¿Qué es un puerto?

Multi-Threading

  • Qué primitivas de sincronización conoces, diferencia entre ellas.
  • ¿Qué es un punto muerto y qué es un bloqueo en vivo?
  • ¿Cuál es una condición de carrera?
  • ¿Qué significa el término "sin bloqueo"?
  • ¿Cuál es la mejor manera de finalizar un hilo?
  • Por qué no deberías usar las funciones TerminateThread-esque.

  • ¿Por qué un programa de socket típico necesita multi threading?
  • ¿Cómo se habla con un montón de diferentes conexiones de red a la vez, desde el mismo proceso / hilo? Sugerencia: toma asincrónica
  • Explica cómo funciona la transferencia de datos a Internet o ¿Explica cómo funciona un servidor web? Responda basado en los conceptos de programación de socket, Hint TCP Http, etc.

  • Nombra algunas ventajas y desventajas de Java Sockets.
  • ¿Cuál es la diferencia entre la instancia de URL y la instancia de URLConnection?
  • ¿Cómo hago una conexión a la URL?
  • ¿Qué es un socket en Java Networking y RMI?
  • ¿Qué información se necesita para crear un socket TCP?
  • ¿Cuáles son las dos clases de Socket TCP más importantes?
  • Cuando se lanza MalformedURLException y UnknownHostException?
  • ¿Qué significa RMI?
  • ¿Qué es RMI?
  • ¿Cuál es la diferencia entre las clases File y RandomAccessFile?
  • ¿Qué interfaz debe implementar un objeto antes de que se pueda escribir en una secuencia como un objeto?
  • Explicar Buscar puertos locales
  • ¿Cuáles son las dos clases de Socket TCP más importantes?