La Red de Conocimientos Pedagógicos - Conocimientos universitarios - Preguntas de la entrevista de 2021 para ingenieros de redes

Preguntas de la entrevista de 2021 para ingenieros de redes

El propósito de la entrevista es determinar cómo el entrevistado aborda los problemas en el campo de estudio elegido y cómo piensa críticamente sobre los problemas. A continuación les traeré una pregunta de referencia para la entrevista de 2021 para ingenieros de redes. Espero que pueda ayudarlos

Preguntas de entrevista sobre subprocesos múltiples de Java

. 1. ¿Qué es Thread?

Thread es la unidad más pequeña que el sistema operativo puede realizar y programar. Está incluida en el proceso y es la unidad operativa real en el proceso. Los programadores pueden usarlo para programación multiprocesador y usted puede usar subprocesos múltiples para acelerar tareas computacionales intensivas. Por ejemplo, si un subproceso tarda 100 milisegundos en completar una tarea, entonces solo se necesitan 10 milisegundos para utilizar diez subprocesos para completar la tarea.

2. ¿Cuál es la diferencia entre subprocesos y procesos?

Los subprocesos son un subconjunto de procesos. Un proceso puede tener muchos subprocesos y cada subproceso realiza diferentes tareas en paralelo. Diferentes procesos utilizan diferentes espacios de memoria y todos los subprocesos comparten el mismo espacio de memoria. Cada hilo tiene una memoria de pila separada para almacenar datos locales.

3. ¿Cómo implementar subprocesos en Java?

Dos formas: una instancia de la clase java.lang.Thread es un subproceso pero necesita llamar a java.lang.Runnable. interfaz para ejecutar, dado que la clase de subproceso en sí llama a la interfaz Runnable, puede heredar la clase java.lang.Thread o llamar directamente a la interfaz Runnable para anular el método run() para implementar subprocesos.

4. ¿Cuáles son las funciones y diferencias entre las palabras clave de Java volátil y sincronizada?

Volátil:

Las variables que modifica no retienen copias y acceden directamente. las variables en la memoria principal.

En el modelo de memoria Java, hay memoria principal y cada hilo también tiene su propia memoria (como registros). Para mejorar el rendimiento, un hilo mantiene una copia de las variables a las que accede en su propia memoria. De esta forma, habrá situaciones en las que el valor de una misma variable en la memoria de un hilo puede ser inconsistente con el valor en la memoria de otro hilo o con el valor en la memoria principal en un momento determinado. Declarar una variable como volátil significa que otros subprocesos pueden modificar la variable en cualquier momento, por lo que no se puede almacenar en caché en la memoria del subproceso.

sincronizado:

Cuando se utiliza para modificar un método o un bloque de código, puede garantizar que como máximo un hilo ejecute el código al mismo tiempo.

1. Cuando dos subprocesos simultáneos acceden al bloque de código de sincronización sincronizado (este) en el mismo objeto, solo se puede ejecutar un subproceso a la vez. Otro subproceso debe esperar a que el subproceso actual termine de ejecutar este bloque de código antes de poder ejecutar este bloque de código.

2. Sin embargo, cuando un hilo accede a un bloque de código sincronizado (este) de un objeto sincronizado, otro hilo aún puede acceder al bloque de código sincronizado (este) no sincronizado en el objeto.

3. Lo que es particularmente crítico es que cuando un hilo accede a un bloque de código sincronizado (este) de un objeto, se bloqueará el acceso de otros hilos a todos los demás bloques de código sincronizados (este) del objeto.

4. Cuando un hilo accede a un bloque de código sincronizado (este) de un objeto, obtiene el bloqueo de objeto de este objeto.

Como resultado, el acceso de otros subprocesos a todas las partes del código sincronizado del objeto se bloquea temporalmente.

5. Las reglas anteriores también se aplican a otros bloqueos de objetos.

5. ¿Cuáles son los diferentes ciclos de vida de los hilos?

Cuando creamos un nuevo hilo en un programa Java, su estado es Nuevo. Cuando llamamos al método start() del hilo, el estado cambia a Runnable. El programador de subprocesos asigna tiempo de CPU a los subprocesos en el grupo de subprocesos ejecutables y cambia su estado a En ejecución. Otros estados del hilo incluyen Esperando, Bloqueado y Muerto.

6. ¿Qué entiendes por prioridad de subprocesos?

Cada subproceso tiene una prioridad. En términos generales, un subproceso de alta prioridad tendrá una prioridad cuando se ejecute, pero esto depende. en la implementación de la programación de subprocesos, que depende del sistema operativo.

Podemos definir la prioridad de los subprocesos, pero esto no garantiza que los subprocesos de alta prioridad se ejecuten antes que los de baja prioridad. La prioridad del subproceso es una variable int (de 1 a 10), 1 representa la prioridad más baja y 10 representa la prioridad más alta.

7. ¿Qué es el punto muerto? ¿Cómo analizar y evitar el punto muerto?

El punto muerto se refiere a una situación en la que más de dos subprocesos están bloqueados para siempre. Esta situación produce al menos más de dos. hilos y más de dos recursos.

Para analizar el punto muerto, debemos mirar el volcado de subprocesos de la aplicación Java. Necesitamos averiguar qué subprocesos están en estado BLOQUEADO y los recursos que están esperando. Cada recurso tiene una identificación única; usando esta identificación podemos averiguar qué subprocesos ya poseen su bloqueo de objeto.

Evitar bloqueos anidados, utilizar bloqueos solo cuando sea necesario y evitar esperas indefinidas son formas comunes de evitar interbloqueos.

8. ¿Qué es la seguridad de subprocesos? ¿Vector es una clase segura para subprocesos?

Si hay varios subprocesos ejecutándose al mismo tiempo en el proceso donde se encuentra su código, estos subprocesos se ejecutarán al mismo tiempo. También puede ejecutar este código. Si los resultados de cada ejecución son los mismos que los de las ejecuciones de un solo subproceso y los valores de otras variables son los mismos que los esperados, es seguro para subprocesos.

Una clase de contador segura para subprocesos no provocará errores de cálculo cuando varios subprocesos utilicen el mismo objeto de instancia. Obviamente, puede dividir las clases de colección en dos grupos, seguras para subprocesos y no seguras para subprocesos. Vector utiliza métodos sincronizados para lograr la seguridad de los subprocesos, mientras que ArrayList, que es similar a él, no es seguro para los subprocesos.

9. ¿Cómo detener un hilo en Java?

Java proporciona una API rica pero no proporciona una API para detener hilos. JDK 1.0 originalmente tenía algunos métodos de control como stop(), suspend() y resume() pero quedaron obsoletos en versiones posteriores de JDK debido a posibles amenazas de interbloqueo. Después de eso, los diseñadores de la API de Java no proporcionaron una API compatible y de subprocesos. forma segura de detener un hilo.

Cuando se ejecuta el método run() o call(), el hilo finalizará automáticamente. Si desea finalizar un hilo manualmente, puede utilizar la variable booleana volátil para salir del bucle del método run(). o cancelar la tarea para interrumpir el hilo.

10. ¿Qué es ThreadLocal?

ThreadLocal se utiliza para crear variables locales de hilos. Sabemos que todos los hilos de un objeto compartirán sus variables globales, por lo que estas variables no son To. Para ser seguro para subprocesos, podemos utilizar técnicas de sincronización. Pero cuando no queremos utilizar la sincronización, podemos elegir variables ThreadLocal.

Cada hilo tendrá sus propias variables de hilo, y pueden usar el método get()set() para obtener sus valores predeterminados o cambiar sus valores dentro del hilo. Las instancias ThreadLocal normalmente quieren que el estado de su hilo asociado sea propiedades estáticas privadas.

Resumen de las preguntas de la entrevista de Kubernetes

1. ¿Qué es Kubernetes?

Kubernetes es una herramienta de gestión de contenedores de código abierto responsable de la implementación, expansión y contracción de contenedores. y equilibrio de carga. Al ser una creación de Google, ofrece una gran comunidad y trabaja con todos los proveedores de la nube. Por tanto, podemos decir que Kubernetes no es una plataforma de contenerización sino una solución de gestión de múltiples contenedores.

2. ¿Cuál es la relación entre Kubernetes y Docker?

Como todos sabemos, Docker proporciona gestión del ciclo de vida de los contenedores y las imágenes de Docker crean contenedores de tiempo de ejecución. Sin embargo, dado que estos contenedores individuales deben comunicarse, se utiliza Kubernetes. Entonces, decimos que Docker crea contenedores y estos contenedores se comunican entre sí a través de Kubernetes. Por lo tanto, los contenedores que se ejecutan en varios hosts se pueden asociar y orquestar manualmente mediante Kubernetes.

3. ¿Qué es la orquestación de contenedores?

Considere un escenario en el que una aplicación tiene entre 5 y 6 microservicios. Ahora, estos microservicios se colocan en contenedores separados pero no pueden comunicarse sin la orquestación de contenedores. Entonces, así como la orquestación significa que todos los instrumentos trabajan juntos armoniosamente en la música, de manera similar la orquestación en contenedores significa que todos los servicios en los contenedores individuales trabajan juntos para satisfacer las necesidades de un único servidor.

4. ¿Cómo simplifica Kubernetes la implementación en contenedores?

Dado que una aplicación típica tendrá un clúster de contenedores ejecutándose en varios hosts, todos estos contenedores deben comunicarse entre sí. Entonces, para hacer esto, necesita algo que pueda equilibrar la carga, escalar y monitorear los contenedores. Dado que Kubernetes es independiente de la nube y puede ejecutarse en cualquier proveedor público/privado, debe ser su elección simplificar las implementaciones en contenedores.

5. ¿Cuánto sabes sobre los clústeres de Kubernetes?

La base detrás de Kubernetes es que podemos implementar la gestión del estado requerida, es decir, podemos proporcionar servicios de clúster con configuraciones específicas. y el servicio de clúster se ejecutará en la infraestructura y ejecutará esa configuración.

Entonces, como puede ver, el archivo de implementación tendrá toda la configuración necesaria para proporcionar el servicio de clúster. Ahora, el archivo de implementación se proporcionará a la API y luego dependerá del servicio de clúster decidir cómo programar estos pods en el entorno y garantizar que se esté ejecutando la cantidad correcta de pods.

Por lo tanto, la API frente al servicio, los nodos trabajadores y los procesos de Kubelet que se ejecutan en los nodos constituyen juntos el clúster de Kubernetes.

6. ¿Cuáles son los diferentes componentes de la arquitectura de Kubernetes?

La arquitectura de Kubernetes tiene dos componentes principales: el nodo maestro y el nodo trabajador. Como se muestra en la figura siguiente, hay muchos componentes integrados incluidos en los nodos maestro y trabajador. El nodo maestro tiene kube-controller-manager, kube-apiserver, kube-scheduler, etc. Mientras que los nodos trabajadores tienen kubelet y kube-proxy ejecutándose en cada nodo.

7. ¿Puedes presentar la situación de trabajo del nodo maestro en Kubernetes?

El maestro de Kubernetes controla los nodos donde existe el contenedor y el interior del nodo.

Ahora, estos contenedores individuales están contenidos dentro del contenedor y dentro de cada contenedor, puede tener una cantidad diferente de contenedores según la configuración y los requisitos.

Por lo tanto, si debe implementar pods, puede hacerlo utilizando la interfaz de usuario o la interfaz de línea de comandos. Luego, estos pods se programan en los nodos y se asignan a estos nodos según los requisitos de recursos. kube-apiserver garantiza la comunicación entre los nodos de Kubernetes y los componentes maestros.

8. ¿Cuáles son las funciones de kube-apiserver y kube-scheduler?

kube-apiserver sigue la arquitectura de expansión horizontal y es la parte frontal del panel de control del nodo maestro. Esto expondrá todas las API del componente maestro de Kubernetes y será responsable de establecer la comunicación entre los nodos de Kubernetes y el componente maestro de Kubernetes.

kube-scheduler es responsable de la distribución y gestión de cargas de trabajo en los nodos trabajadores. Por lo tanto, selecciona el nodo más apropiado para ejecutar pods no programados en función de los requisitos de recursos y realiza un seguimiento de la utilización de los recursos. Garantiza que las cargas de trabajo no se programen en nodos que estén llenos.

9. ¿Qué sabes sobre los balanceadores de carga de Kubernetes?

Los balanceadores de carga son una de las formas más comunes y estándar de exponer servicios. Se utilizan dos tipos de balanceadores de carga según el entorno de trabajo, es decir, balanceador de carga interno o balanceador de carga externo. El balanceador de carga interno equilibra automáticamente la carga y distribuye los contenedores con la configuración requerida, mientras que el balanceador de carga externo dirige el tráfico desde la carga externa a los contenedores backend.

10. ¿Cuál es la diferencia entre el conjunto de réplicas y el controlador de replicación?

El conjunto de réplicas y el controlador de replicación son casi idénticos. Ambos garantizan que se esté ejecutando una cantidad específica de réplicas de pod en un momento dado. La diferencia es el selector utilizado por el pod copiado. El conjunto de réplicas usa selectores basados ​​en conjuntos, mientras que el controlador de replicación usa selectores basados ​​en permisos.

Selector basado en acciones: Este tipo de selector permite filtrar por clave de etiqueta y valor. Entonces, en términos sencillos, un selector basado en Equity solo encontrará grupos que tengan exactamente la misma frase que la etiqueta.

Ejemplo: Supongamos que su clave de etiqueta significa app = nginx, entonces, usando este selector, solo podrá encontrar aquellos pods con la etiqueta app igual a nginx.

Selector basado en selector: Este tipo de selector permite filtrar claves en función de un conjunto de valores. En otras palabras, un selector basado en Selector buscará pods cuyas etiquetas se hayan mencionado en la colección.

Ejemplo: Supongamos que su clave de etiqueta muestra una aplicación en (nginx, NPS, Apache). Luego, usando este selector, si su aplicación es igual a cualquier nginx, NPS o Apache, el selector lo considera como un resultado real.

Pasos de prueba para ataques de penetración

1. Si el valor original es 2, usamos (1 1) o (3-1), y el programa responde lo mismo, indicando que es vulnerable

2. Si se filtran las comillas simples, podemos usar el comando ASCII para que devuelva el código digitalizado del carácter, como 51-ASCII(1)

3. En la codificación de URL, amp y = se usan para vincular pares de nombre/valor, y la cadena de consulta debe codificarse usando 26 y 3d respectivamente

4. Si la cadena de consulta no permite espacios , use o codificación 20

5. El punto y coma se usa para separar las cookies para la lectura automática, usando codificación 3D

Artículos relacionados sobre preguntas de entrevistas para ingenieros de redes en 2021:

★ ¿Cuáles son las preguntas de la entrevista para ingenieros de redes?

★ Una colección de preguntas y respuestas de la entrevista para administradores de red

★ Las últimas preguntas de la entrevista para ingenieros de operación y mantenimiento

★ Preguntas y respuestas de la entrevista para ingenieros de pruebas de red

★ Preguntas y respuestas de referencia de la entrevista para redes informáticas

★ Cinco ejemplos de ensayos de presentación personal para entrevistas para ingenieros de redes

★ Preguntas que se deben hacer al entrevistar a ingenieros de tecnología de redes

★ Recopilación de las últimas preguntas de la entrevista para ingenieros de operación y mantenimiento de TI