Compartir las preguntas de la entrevista de reclutamiento de la escuela de apertura de Miha Youce (ya genial)

Las preguntas de la entrevista no son muy difíciles, las preguntas son bastante satisfactorias y no profundicé demasiado. No suelo memorizar estereotipos. Cada día que trabajo es un negocio CRUD específico. Básicamente, confío en los recuerdos de la última año en que cambié de trabajo, así que la respuesta es no. Muy bien, podría hacer frío

Auto presentación

Por qué elegir una posición de prueba, comprender las pruebas de software

Las razones para elegir un rol de prueba pueden variar de persona a persona, pero aquí hay algunas razones comunes:

1. Coincidencia de intereses y habilidades: algunas personas están interesadas en trabajar en pruebas de software y control de calidad y tienen las habilidades para desarrollarse en este campo. Pueden estar interesados ​​en encontrar y resolver problemas, garantizar la calidad del software y la experiencia del usuario, y más.

2. Centrarse en la calidad: los puestos de prueba juegan un papel clave en el ciclo de vida del desarrollo de software. Los probadores son responsables de garantizar la calidad del software, lo que incluye encontrar y reportar defectos, verificar la corrección de la funcionalidad y garantizar que el software satisfaga las necesidades del usuario. Algunas personas creen que la garantía de calidad es crucial para un producto exitoso y, por lo tanto, eligen puestos de prueba.

3. Habilidades analíticas y de resolución de problemas: los evaluadores deben tener la capacidad de analizar y resolver problemas. Necesitan analizar cuidadosamente diferentes aspectos del software e identificar posibles problemas y riesgos. Para alguien que disfruta de los desafíos y la resolución de problemas, un puesto de prueba puede ser una opción ideal.

4. Diversidad y cambio: los trabajos de prueba a menudo implican probar diferentes tipos de software, incluidas aplicaciones web, aplicaciones móviles, aplicaciones de escritorio y más. Esto permite a los probadores ganar experiencia en una variedad de proyectos y tecnologías diferentes, disfrutando de diferentes desafíos y variaciones de trabajo.

Ahora entendamos las pruebas de software.

La prueba de software es el proceso de evaluar y verificar que un producto de software cumple con los requisitos esperados. Su objetivo es encontrar errores y problemas en el software y garantizar que el software cumpla con los estándares de calidad esperados antes de ser entregado al usuario final. Los siguientes son algunos aspectos clave de las pruebas de software:

1. Descubrimiento de defectos: los probadores utilizan varias técnicas y herramientas para encontrar defectos y problemas en el software. Esto puede incluir pruebas funcionales, pruebas de rendimiento, pruebas de seguridad, etc.

2. Verificación y validación: los evaluadores verifican que el software funcione como se espera y verifica que cumpla con las necesidades y especificaciones del usuario.

3. Pruebas automatizadas: las pruebas automatizadas son el proceso de realizar pruebas utilizando scripts y herramientas. Mejora la eficiencia y consistencia de las pruebas y reduce el error humano.

4. Informe y seguimiento de defectos: los evaluadores informan los defectos encontrados al equipo de desarrollo y realizan un seguimiento de su proceso de reparación para garantizar que se resuelvan los defectos.

5. Estrategias y planes de prueba: los evaluadores formulan estrategias y planes de prueba, determinan el alcance de la prueba, los métodos de prueba y los requisitos de recursos, etc.

A través de las pruebas de software, puede mejorar la calidad del software, reducir el riesgo y brindar una mejor experiencia de usuario. La prueba es una parte integral de un proyecto de software exitoso.

Qué partes contiene un caso (puedo decir que no puedo editarlo directamente)

Un caso de prueba (test case) generalmente incluye las siguientes partes:

  1. ID de caso de prueba: cada caso de prueba debe tener un identificador o número único para facilitar el seguimiento y la gestión.
  2. Escenario de prueba: un escenario de prueba describe el contexto y las condiciones de la función o el proceso comercial que se está probando.
  3. Pasos de prueba: Un paso de prueba es una secuencia específica de operaciones que describe cómo ejecutar un caso de prueba. Cada paso debe estar claramente definido y contener los datos de entrada y las acciones necesarias.
  4. Resultados esperados (
    Resultados esperados): los resultados esperados son la descripción de la salida, el comportamiento o el estado esperados después de ejecutar cada paso de la prueba. Indica cómo el probador espera que el sistema se comporte bajo ciertas condiciones.
  5. Resultados reales
    : los resultados reales son el comportamiento observado o la salida del sistema después de la ejecución de los pasos de prueba. Los probadores comparan los resultados reales con los resultados esperados para determinar si la prueba pasó o falló.
  6. Datos de prueba: Los datos de prueba son los datos de entrada utilizados para ejecutar los casos de prueba. Debe cubrir todos los casos posibles, incluidos valores límite, datos no válidos, caracteres especiales, etc.
  7. Precondiciones: Las precondiciones son condiciones o estados que deben cumplirse antes de que se ejecute un caso de prueba. Asegura que el sistema está en el entorno adecuado para realizar las pruebas.
  8. Postcondiciones: Las postcondiciones se refieren al estado o resultado deseado del sistema después de la ejecución del caso de prueba. Describe el estado en el que debe estar el sistema después de que se complete la ejecución del caso de prueba.
  9. Prioridad: Prioridad identifica la importancia y el orden de ejecución de los casos de prueba. Según los requisitos del proyecto y las limitaciones de tiempo, se pueden asignar niveles de prioridad alta, media o baja a los casos de prueba.
  10. Estado de la prueba: el estado de la prueba rastrea la ejecución del caso de prueba, como "Aprobado", "Error", "Bloqueado", etc.

Lo anterior es la parte común del caso de prueba. De acuerdo con el proceso de prueba específico y los requisitos del proyecto, a veces puede contener otra información, como el entorno de prueba, comentarios y defectos asociados. Escribir casos de prueba claros, precisos y completos es muy importante para realizar pruebas de software de manera efectiva.

La diferencia entre tcp y udp

TCP (Protocolo de control de transmisión) y UDP (Protocolo de datagramas de usuario) son dos protocolos de capa de transporte comunes en la pila de protocolos de Internet. Tienen las siguientes diferencias:

1. Orientado a la conexión frente a sin conexión: TCP es un protocolo orientado a la conexión que requiere que se establezca una conexión antes de la comunicación y proporciona una transmisión fiable orientada al flujo de bytes. UDP es un protocolo sin conexión, no necesita establecer una conexión, cada datagrama es independiente.

2. Fiabilidad: TCP proporciona una transmisión de datos fiable, que utiliza mecanismos de número de secuencia, confirmación y retransmisión para garantizar la integridad y la secuencia de los datos. Si los datos se pierden o dañan, TCP retransmite automáticamente los datos perdidos. UDP no proporciona garantías de confiabilidad, envía datagramas, pero no le importa si los datos llegan al destino y no los retransmite.

3. Según. UDP no garantiza el orden de los datos y el receptor puede procesarlos en cualquier orden después de recibir el datagrama.

4. Control de flujo y control de congestión: TCP tiene un mecanismo de control de flujo y control de congestión, que puede ajustar la tasa de envío del remitente para adaptarse a la carga de la red y evitar la congestión de la red. UDP no tiene un mecanismo integrado de control de flujo y control de congestión, y la aplicación determina la velocidad de envío del paquete de datos.

5. Sobrecarga: Las funciones adicionales del protocolo TCP y el mecanismo para garantizar la confiabilidad aumentan la sobrecarga del protocolo. UDP es relativamente simple y no tiene sobrecarga adicional, lo que lo hace más común en ciertas aplicaciones sensibles a la latencia y en tiempo real.

6. Escenarios aplicables: TCP es adecuado para aplicaciones que requieren confiabilidad y secuencia, como transferencia de archivos, correo electrónico, navegación web, etc. UDP es adecuado para aplicaciones con altos requisitos de tiempo real y sensibles a la demora, como transmisión de audio/video, juegos en tiempo real, etc.

En resumen, TCP proporciona una comunicación confiable y orientada a la conexión, mientras que UDP proporciona una comunicación simple y sin conexión. La elección entre usar TCP o UDP depende de las necesidades de la aplicación y del compromiso entre rendimiento y confiabilidad.

código de estado http

Proceso de resolución de DNS

La resolución de DNS (Domain Name System) es el proceso de convertir nombres de dominio (como www.example.com) en direcciones IP correspondientes. El siguiente es el proceso básico de resolución de DNS:

Enviar consulta de DNS: cuando el usuario ingresa un nombre de dominio en el navegador, la resolución de DNS del sistema operativo primero verifica el caché de DNS local y devuelve el resultado directamente si hay una dirección IP correspondiente en el caché. Si no hay ningún registro en la memoria caché o ha caducado, el resolutor enviará una solicitud de consulta de DNS.

Servidor DNS local: si el resolutor no tiene registro de caché o el caché caduca, enviará una solicitud de consulta al servidor DNS local. Los servidores DNS locales generalmente los proporciona su proveedor de servicios de Internet (ISP) y están determinados por los ajustes de configuración de su resolutor. El servidor DNS local mantiene registros de caché de algunos nombres de dominio comunes. Puede devolver la dirección IP en el caché como respuesta. Si no hay ningún registro en el caché, continuará consultando el servidor DNS de nivel superior.

Consulta recursiva: después de que el servidor DNS local reciba la solicitud de consulta, si no tiene un registro de caché, realizará una consulta recursiva de acuerdo con su propia configuración. Envía una solicitud de consulta al servidor de nombres de dominio de nivel superior (como el servidor de nombres de dominio de nivel superior del dominio .com) y les solicita la dirección IP del servidor de nombres de dominio de siguiente nivel a cargo.

Consulta iterativa: después de que el servidor de nombres de dominio de nivel superior reciba la solicitud de consulta, devolverá la dirección IP del servidor de nombres de dominio de nivel inferior al servidor DNS local. El servidor DNS local iniciará una consulta al servidor de nombres de dominio del siguiente nivel y continuará este proceso hasta que encuentre el servidor de nombres de dominio autorizado responsable de resolver el nombre de dominio de destino.

Servidor de nombres de dominio autorizado: cuando el servidor DNS local encuentra el servidor de nombres de dominio autorizado responsable de resolver el nombre de dominio de destino, enviará una solicitud de consulta al servidor.

Devolver el resultado de la consulta: después de que el servidor de nombres de dominio autorizado reciba la solicitud de consulta, devolverá la dirección IP resuelta al servidor DNS local.

Retorno de respuesta: después de que el servidor DNS local reciba el resultado de la resolución, almacenará el resultado en el caché y enviará el resultado de la resolución al sistema de resolución de DNS del sistema operativo. El analizador pasa el resultado a la aplicación, como un navegador, lo que le permite establecer una conexión con el servidor de destino.

En el proceso anterior, la resolución de DNS puede pasar por múltiples niveles de servidores de nombres de dominio, desde servidores de nombres de dominio de nivel superior hasta servidores de nombres de dominio autorizados. Con el fin de mejorar la eficiencia de la resolución, los resultados de la resolución de DNS generalmente se almacenan en caché en el servidor DNS local y en el sistema de resolución de DNS del sistema operativo, para responder rápidamente en consultas futuras.

¿Por qué el apretón de manos de tres vías?

El protocolo de enlace de tres vías es el proceso de TCP (Protocolo de control de transmisión) que establece una conexión. Su propósito de diseño es garantizar que las dos partes puedan comunicarse normalmente y sincronizar el número de secuencia inicial. Las siguientes son las razones y funciones del apretón de manos de tres vías:

1. Las dos partes confirman que pueden comunicarse: a través del protocolo de enlace de tres vías, el cliente y el servidor pueden confirmar la existencia del otro y pueden comunicarse entre sí. Cada apretón de manos requiere la confirmación de la otra parte para garantizar que se pueda acceder a la ruta de comunicación entre las dos partes.

2. Número de secuencia inicial síncrono (ISN): cuando se establece una conexión TCP, cada punto final seleccionará un número de secuencia inicial. A través del protocolo de enlace de tres vías, el cliente y el servidor pueden intercambiar los números de secuencia iniciales de cada uno para que los datos puedan identificarse correctamente y volver a ensamblarse durante la transmisión de datos.

3. Evite la influencia de conexiones antiguas: en la red, es posible que aún existan conexiones antiguas en la red. Si no hay un protocolo de enlace de tres vías, las solicitudes de conexión nuevas pueden confundirse con paquetes retrasados ​​de conexiones antiguas. A través del protocolo de enlace de tres vías, puede asegurarse de que la conexión anterior haya terminado y evitar interferencias con la nueva conexión.

4. Garantice la confiabilidad: el protocolo de enlace de tres vías puede ayudar a detectar errores o problemas en el proceso de establecimiento de la conexión, como demoras en la red, pérdida de paquetes o hosts de destino inalcanzables. Si ocurre un error durante el protocolo de enlace, el cliente y el servidor pueden volver a intentar establecer la conexión para garantizar la confiabilidad de la conexión.

En resumen, a través del protocolo de enlace de tres vías, TCP puede establecer una conexión confiable, garantizar que las dos partes en comunicación puedan intercambiar datos normalmente y garantizar la confiabilidad y corrección de la conexión. Cada etapa de protocolo de enlace lleva a cabo funciones importantes para garantizar el establecimiento exitoso de la conexión y la precisión del número de secuencia de sincronización.

¿Por qué saludar cuatro veces?

El agitar a cuatro manos es el proceso de desconexión de TCP (Protocolo de control de transmisión), que está diseñado para garantizar que ambas partes puedan finalizar la conexión correctamente y liberar los recursos relacionados. Aquí están las razones y los efectos de las cuatro olas:

1. Las dos partes completan la transmisión de datos: antes de que se desconecte la conexión, las dos partes aún pueden tener datos restantes para transmitir. Al agitar cuatro veces, las dos partes pueden confirmar que la transmisión de datos se ha completado para evitar la pérdida o el truncamiento de datos.

2. Garantizar un cierre fiable: TCP es un protocolo de transmisión fiable que garantiza la fiabilidad y el orden de los datos. Con cuatro ondas, puede asegurarse de que el cierre de la conexión también sea confiable y evitar la pérdida o duplicación de datos durante el proceso de cierre.

3. Procesamiento de paquetes retrasados: antes de que se cierre la conexión, aún puede haber paquetes retrasados ​​que no se hayan transmitido en la red. Al agitar las manos cuatro veces, ambas partes pueden esperar un período de tiempo para asegurarse de que todos los paquetes retrasados ​​en la red hayan sido procesados, evitando así confusiones o conflictos posteriores.

4. Liberar recursos de conexión: al agitar cuatro veces, ambas partes pueden informarse mutuamente que ya no necesitan conectarse y liberar recursos relacionados, como búfer TCP, números de serie, etc. De esta forma, los recursos de la red pueden recuperarse y reutilizarse en el tiempo.

Cabe señalar que la onda de cuatro vías la inicia la parte que cierra la conexión de forma activa (normalmente el cliente), mientras que la parte que cierra la conexión de forma pasiva (normalmente el servidor) solo responde a la solicitud de cierre. Cada etapa de las cuatro manos agitadas tiene una función importante para garantizar el cierre normal de la conexión y la liberación de recursos.

En resumen, a través de cuatro manos agitadas, TCP puede lograr un proceso de desconexión de conexión confiable, garantizar la integridad y corrección de los datos y liberar recursos relacionados con la conexión, para que la red pueda administrar de manera eficiente las conexiones y la asignación de recursos.

Por qué la transmisión TCP es confiable (basada en la transmisión de bloques de datos)

TCP (Protocolo de control de transmisión) se denomina protocolo de transmisión confiable porque proporciona una variedad de mecanismos para garantizar la confiabilidad y el orden de los datos durante la transmisión de datos.

Los siguientes son los principales mecanismos por los cuales TCP logra una transmisión confiable:

Número de secuencia y respuesta de reconocimiento: TCP asigna a cada paquete de datos un número de secuencia único y confirma el paquete de datos recibido a través del mecanismo de respuesta de reconocimiento del receptor. El remitente puede usar el acuse de recibo para determinar qué paquetes de datos han llegado con éxito al receptor y qué paquetes de datos deben retransmitirse.

Retransmisión de segmento: si el remitente no recibe un acuse de recibo para un segmento en particular, lo considera perdido y lo retransmite. El receptor puede juzgar si se reciben segmentos de datos duplicados según el número de secuencia y descartar los datos duplicados.

Protocolo de ventana deslizante: TCP utiliza un protocolo de ventana deslizante para administrar los segmentos de datos enviados y recibidos. Con una ventana deslizante, el remitente puede controlar la cantidad de datos enviados y ajustarlos de acuerdo con la potencia de procesamiento del receptor. El protocolo de ventana deslizante también permite que el remitente continúe enviando otros datos mientras espera una respuesta de reconocimiento, lo que mejora la eficiencia de la transmisión.

Control de congestión: TCP utiliza algoritmos de control de congestión para evitar la congestión de la red. Ajusta la tasa de envío monitoreando la carga de la red y los acuses de recibo recibidos. Los algoritmos de control de la congestión incluyen mecanismos como el inicio lento, la evitación de la congestión y la recuperación de la congestión para mantener la estabilidad y equidad de la red.

Entrega ordenada: TCP garantiza que los datos lleguen al receptor en el orden en que fueron enviados y vuelve a ensamblar los datos en el receptor para que las aplicaciones de capa superior puedan procesar los datos correctamente.

A través de estos mecanismos, TCP puede hacer frente a problemas como la pérdida de paquetes, el retraso, la repetición y el desorden en la red y proporcionar una transmisión de datos fiable. Puede retransmitir automáticamente los datos perdidos, ajustar la velocidad de envío para adaptarse a las condiciones de la red y garantizar el orden de los datos. Esto hace que TCP sea un protocolo ampliamente utilizado para la transmisión confiable de datos, como transferencia de archivos, correo electrónico, navegación web, etc.

¿Entiendes el protocolo NAT y los dominios cruzados?

Entiendo el concepto de protocolo NAT y dominio cruzado, aquí hay una breve descripción de ellos:

NAT (traducción de direcciones de red, traducción de direcciones de red): NAT es un protocolo de red que se utiliza para asignar direcciones IP y puertos internos en una red privada a direcciones IP y puertos públicos en una red pública. Permite que múltiples dispositivos compartan una sola dirección IP pública, brindando una solución a la escasez de direcciones IPv4. NAT funciona en la capa de red. Modifica la dirección IP de origen y la dirección IP de destino cuando el paquete de datos pasa a través del dispositivo de borde de red (como un enrutador) para realizar la conversión entre la dirección privada interna y la dirección de red pública externa.

Origen cruzado: el origen cruzado se refiere a que en un navegador, cuando un script de una página web intenta acceder a recursos de diferentes fuentes (nombre de dominio, puerto, protocolo), se produce una solicitud de origen cruzado. Por motivos de seguridad, los navegadores restringen el acceso a las solicitudes de origen cruzado de forma predeterminada, lo que se debe a la política del mismo origen del navegador. Para comunicarse en solicitudes entre dominios, se deben utilizar algunas tecnologías y medidas de seguridad específicas, como el mecanismo de uso compartido de recursos entre dominios (CORS), JSONP (JSON con relleno), servidor proxy, etc.

Cabe señalar que el protocolo NAT y el dominio cruzado son dos conceptos diferentes, que involucran diferentes campos de red y seguridad. NAT se usa principalmente para la traducción de direcciones en la comunicación de red para resolver la escasez de direcciones IPv4; mientras que el dominio cruzado es parte de la política de seguridad del navegador para limitar la comunicación de scripts entre diferentes fuentes.

La diferencia entre obtener y publicar

GET y POST son dos métodos de solicitud comúnmente utilizados en el protocolo HTTP, y existen las siguientes diferencias entre ellos:

Ubicación de los datos: las solicitudes GET incluyen parámetros en la cadena de consulta de la URL, mientras que las solicitudes POST incluyen parámetros en el cuerpo del mensaje de la solicitud. En una solicitud GET, los parámetros estarán expuestos en la URL y pueden ser visibles directamente por caché, marcadores, etc., mientras que los parámetros de la solicitud POST no se mostrarán directamente en la URL.

Límite de longitud de datos: dado que la solicitud GET incluye parámetros en la URL, la longitud de la URL es limitada, por lo que la solicitud GET tiene un límite en la longitud de los datos transmitidos (generalmente dentro de unos pocos miles de caracteres). Sin embargo, las solicitudes POST incluyen parámetros en el cuerpo del mensaje y, por lo general, no hay un límite estricto de longitud.

Seguridad: Los parámetros de la solicitud GET están visibles en la URL y son fácilmente obtenidos por terceros, incluida la información sensible, por lo que no es adecuado para transmitir datos sensibles. Las solicitudes POST colocan parámetros en el cuerpo del mensaje, lo que es más seguro que las solicitudes GET y es adecuado para transmitir datos confidenciales.

Almacenamiento en caché: las solicitudes GET se pueden almacenar en caché, mientras que las solicitudes POST no se almacenan en caché de forma predeterminada. Dado que los parámetros de la solicitud GET están directamente expuestos en la URL, el resultado de la respuesta también se puede almacenar en caché, lo cual es razonable para algunas solicitudes idempotentes (sin efectos secundarios). Las solicitudes POST se utilizan a menudo para enviar formularios o modificar datos. Cada solicitud debe enviar los datos más recientes al servidor para evitar efectos secundarios.

Idempotencia: las solicitudes GET son idempotentes, es decir, varias solicitudes GET idénticas deberían producir los mismos resultados sin efectos secundarios en los recursos. Sin embargo, las solicitudes POST se utilizan a menudo para modificar o crear recursos, lo que puede tener efectos secundarios y no son idempotentes.

En general, las solicitudes GET son adecuadas para obtener datos y solicitudes sin efectos secundarios, mientras que las solicitudes POST son adecuadas para enviar datos, modificar datos y operar recursos. De acuerdo con los escenarios y necesidades específicos, elija el método de solicitud adecuado.

estado del hilo

Los subprocesos pasan por varios estados durante la ejecución. Los estados de subprocesos comunes incluyen:

New (Nuevo): El hilo está creado pero aún no ha comenzado a ejecutarse.

Ejecutable (Runnable): después de que se inicia el subproceso, ingresa al estado ejecutable. Significa que el subproceso se puede programar para su ejecución, pero no necesariamente se está ejecutando y puede estar esperando el tiempo de asignación de la CPU.

En ejecución (Running): El subproceso ha obtenido recursos de CPU y está realizando tareas.

Bloqueado: un subproceso se suspende bajo ciertas condiciones, deteniendo temporalmente la ejecución. Por ejemplo, un subproceso está esperando que se libere un bloqueo o esperando que se complete la entrada/salida.

En espera: se pide a los subprocesos que esperen hasta que otros subprocesos emitan notificaciones específicas. Esperará hasta que reciba una notificación o se interrumpa.

Espera temporizada (Timed Waiting): similar al estado de espera, pero se puede despertar automáticamente dentro del tiempo especificado. El subproceso esperará un período de tiempo hasta que se alcance el tiempo o se reciba una notificación o se interrumpa.

Terminado: el subproceso finaliza después de ejecutar la tarea o se produce una excepción.

Cabe señalar que diferentes lenguajes de programación y sistemas operativos pueden implementar diferentes estados de subprocesos, y los estados anteriores son solo conceptos de estado de subprocesos comunes. Además, los estados de subprocesos se pueden convertir entre sí, como de estado ejecutable a estado de ejecución, o de estado de ejecución a estado bloqueado, según la programación del subproceso y el flujo de ejecución del programa.

¿Qué es el interbloqueo y las condiciones de interbloqueo?

El punto muerto (Deadlock) es una situación común en la programación concurrente de múltiples subprocesos o multiprocesos. Se refiere al estado en el que dos o más subprocesos (o procesos) no pueden continuar ejecutándose porque están esperando el uno al otro para liberar recursos, lo que hace que el sistema no puede avanzar o completar tareas. En un estado de interbloqueo, los subprocesos esperarán eternamente a menos que se produzca una intervención externa.

Un interbloqueo generalmente ocurre cuando se cumplen las siguientes cuatro condiciones necesarias:

Exclusión mutua: al menos un recurso solo puede estar ocupado por un subproceso (o proceso) al mismo tiempo, y otros subprocesos no pueden acceder al recurso al mismo tiempo.

Solicitar y mantener condiciones (Hold and Wait): mientras que un subproceso contiene al menos un recurso, también solicita recursos actualmente ocupados por otros subprocesos.

Sin preferencia: el recurso solo puede ser adquirido por otros subprocesos cuando el subproceso lo libera voluntariamente y no puede ser privado por la fuerza.

Condición de espera circular (Circular Wait): Hay un grupo de subprocesos, y cada subproceso está esperando el recurso ocupado por el siguiente subproceso, formando un ciclo cerrado de espera circular.

Cuando estas cuatro condiciones se cumplen simultáneamente, puede ocurrir un interbloqueo. Una vez que ocurre un interbloqueo, el sistema no podrá eliminar automáticamente el estado de interbloqueo, lo que requerirá la intervención humana o un mecanismo de manejo de interbloqueo correspondiente.

Para evitar interbloqueos, los métodos comunes de manejo de interbloqueos incluyen:

Asignación ordenada de recursos: defina un orden global para los recursos y requiera subprocesos para solicitar recursos en el mismo orden, evitando la ocurrencia de condiciones de espera circulares.

Evite solicitar y mantener: cuando un subproceso solicita recursos, primero libera los recursos que ya tiene y luego solicita nuevos recursos para evitar conflictos en la retención de recursos.

Introducir un mecanismo de preferencia: permitir que el sistema prive por la fuerza a un subproceso de recursos en determinadas circunstancias para satisfacer las necesidades de otros subprocesos.

Detección y recuperación de puntos muertos: se utilizan algoritmos para detectar si hay un punto muerto en el sistema. Si se detecta un punto muerto, se adoptan las estrategias correspondientes para la recuperación, como privar de recursos a ciertos subprocesos o reasignar recursos.

Comprender los interbloqueos y sus condiciones ayuda a evitar los interbloqueos al escribir programas concurrentes y a poder elegir una estrategia de manejo de interbloqueos adecuada.

¿Cuáles son las formas de comunicación de procesos?

En la programación multiproceso, se requiere comunicación entre procesos para intercambiar datos y coordinar el trabajo. Los métodos comunes de comunicación de procesos incluyen:

Pipeline (Pipe): Pipeline es el mecanismo de comunicación entre procesos más simple, dividido en tuberías sin nombre y tuberías con nombre. Las canalizaciones sin nombre solo se pueden usar entre procesos que tienen una relación padre-hijo, mientras que las canalizaciones con nombre permiten que se comuniquen procesos no relacionados.

Tubería con nombre (Named Pipe): también conocido como FIFO (First-In-First-Out), es un tipo especial de archivo que permite que se comuniquen procesos no relacionados. A diferencia de las canalizaciones sin nombre, las canalizaciones con nombre se pueden utilizar entre procesos no relacionados.

Semáforo: Semáforo se utiliza para controlar el acceso de múltiples procesos a los recursos compartidos. Se puede utilizar para lograr la exclusión mutua y la sincronización de procesos.

Señal: Una señal es un mecanismo de comunicación asincrónica que se utiliza para notificar a un proceso que se ha producido un determinado evento. Un proceso puede enviar una señal a otro proceso y el proceso que recibe la señal puede tomar la acción correspondiente.

Cola de mensajes (Message Queue): Message Queue es una forma de comunicación entre procesos a través de la cual los procesos pueden enviar y recibir mensajes. Los mensajes en una cola de mensajes se pueden clasificar según una prioridad específica.

Memoria compartida: la memoria compartida es el método de comunicación entre procesos más rápido, que permite que múltiples procesos compartan la misma área de memoria física, y los procesos pueden leer y escribir datos directamente en la memoria compartida.

Socket (Socket): Un socket es un mecanismo de comunicación entre procesos que proporciona capacidades de comunicación de red y puede comunicarse entre procesos en diferentes hosts.

Estos métodos de comunicación de procesos tienen sus propias ventajas y desventajas, y son aplicables a diferentes escenarios y requisitos. Al elegir un método de comunicación de procesos, se deben considerar varios factores de manera integral según la situación específica, como los requisitos de rendimiento, el tamaño de los datos, la seguridad, etc.

Finalmente: para retribuir a los fanáticos acérrimos, he compilado un video tutorial de aprendizaje de prueba de software completo para usted. Si lo necesita, puede obtenerlo gratis【保证100%免费】
inserte la descripción de la imagen aquí

Documentación de la entrevista de prueba de software

Debemos estudiar para encontrar un trabajo bien remunerado. Las siguientes preguntas de la entrevista son los materiales de entrevista más recientes de empresas de Internet de primer nivel como Ali, Tencent y Byte, y algunos jefes de Byte han dado respuestas autorizadas. Termine este conjunto Los materiales de la entrevista creen que todo el mundo puede encontrar un trabajo satisfactorio.

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/m0_67695717/article/details/131326239
Recomendado
Clasificación