Recorrido por el pequeño libro rojo "Entrevista"

Autor | Existencia de L

Fuente | Soy un programador Xiaojian (ID: Lanj1995Q)

En el artículo anterior, compartí el viaje de la entrevista en la estación B. La respuesta de todos fue buena, pero me instaron a actualizarla y mi mano no pudo evitar temblar. Así que decidí hacer arreglos para las empresas restantes. No, echemos un vistazo al servidor / backend de Xiaohongshu hoy. Por nada más, solo quiero conocer a la hermosa dama de recursos humanos y comenzar a trabajar.

contorno

un lado

Mientras que el entrevistador miraba a la edad de veintisiete y dieciocho años, fue muy gentil, ¿dónde está el código y el cabello flota, de acuerdo? Comencé a trabajar en el proyecto. Dado que los proyectos de cada persona son diferentes, hablaré sobre los problemas que a menudo encuentro durante las entrevistas.

  • Describe el artículo

No puedes comer a un hombre gordo de un bocado. Antes de describir, aguanta la respiración y mide si lo que estás diciendo puede engañarte a ti mismo y luego engañar al entrevistador.

  • Rol en el proyecto

Para la mayoría de nosotros, es el rol del desarrollo. De la misma manera, el rol corresponde al puesto correspondiente. Explicar lo que haces puede atraer al entrevistador al gancho y colgarlo durante cien años.

  • Qué dificultades encontradas en el proyecto

Estas tres preguntas se pueden pensar si puedes sujetar los dedos de los pies, a menos que no las hayas hecho, jajajajaja. Que no cunda el pánico, no es lo que hicimos y no tenemos miedo. Debemos saber que hay un sitio web llamado Github. Hay tantas vacas grandes. No somos vacas grandes. ¿No aprenderíamos de los demás? Clone, configure el entorno y ejecútelo, comience a depurar y modificar, y luego modifique dividiendo los módulos. ¿No es este su proyecto? Por supuesto, no le recomiendo que lo haga.

Casi me preguntaron el proyecto, y comencé a hablar sobre los conocimientos básicos, los cuatro conocimientos básicos antiguos, la red informática, la base de datos, el sistema operativo, la estructura de datos (vamos, esté siempre preparado, realmente no fanfarroneando)

Creo que su currículum dice sobre la restauración del tráfico de la red. ¿Debería estar familiarizado con las redes informáticas? (Atención, lo que está escrito en tu currículum, debes tener un número B en tu corazón), entonces hablemos de redes informáticas.

  • Hable sobre el protocolo de enlace de tres vías de TCP en las redes informáticas.

Primero, el cliente envía un paquete SYN al servidor, el servidor recibe el SYN y responde con SYN + ACK, y luego el cliente responde con ACK para indicar la recepción.

Tu respuesta como esta definitivamente no satisfará al entrevistador, así que agrega algunos ingredientes ¿Cómo sabe bien el plato sin condimento? Entonces organícelo en detalle

Primero, la pila de protocolos del cliente envía un paquete SYN al servidor y, al mismo tiempo, le dice al servidor que el número de serie enviado actualmente es X y el cliente entra en el estado SYNC_SENT;

Una vez que la pila de protocolos del servidor recibe este paquete, responde con ACK. En este momento, el valor de respuesta es X + 1, que indica la confirmación del paquete SYN J. Al mismo tiempo, el servidor también envía un paquete SYN para decirle al cliente mi número de serie actual. Es Y, en este momento el servidor entra en el estado SYNC_RCVD;

Después de que la pila de protocolos del cliente recibe el ACK, la aplicación usa la llamada de conexión para indicar que la conexión unidireccional del servidor es exitosa, el estado es ESTABLECIDO en este momento y la pila de protocolos del cliente responde al SYN del servidor, y los datos son Y + 1 en este momento;

El servidor recibe el paquete de respuesta del cliente y regresa a través de la llamada de bloqueo de aceptación.En este momento, la conexión unidireccional entre el servidor y el cliente también se establece con éxito y el servidor ingresará al estado ESTABLECIDO.

¿No es esto un poco más en forma de B, y más vívido, por supuesto, con el fin de profundizar la impresión de todos sobre este proceso? Déjame darte otro ejemplo.

El primer apretón de manos: Xiaolan le confesó a una chica, diciendo que me gustas, y luego esperé estúpidamente una respuesta;

El segundo apretón de manos: La niña miró mi apariencia y respondió en segundos, y naturalmente estuvo de acuerdo conmigo y respondió que también me gusta que tiras;

Estrecharme la mano por tercera vez: Recibí una respuesta de la niña: "Fui a comer estofado, vi una película y tuve fisioterapia esa noche";

Es así, entonces, ¿cuál es el seguimiento? Tienes que mirar hacia abajo y ver lo que agitó cuatro veces (el martillo de piedra macho de escoria), no, todavía está enamorado, ¿de acuerdo? El entrevistador seguirá pidiéndole tres apretones de manos.

El entrevistador dijo: “Entonces les pregunto, si el SYN enviado por el cliente se pierde o el servidor no puede procesarlo por otros motivos, ¿cuál es el motivo?

Esta escena es muy común y no hay nada infalible. En la transmisión confiable de TCP, si el paquete SYN se pierde durante la transmisión, el segmento del cliente activará el mecanismo de retransmisión, pero no se retransmitirá sin pensar. El número de retransmisiones es limitado. Puede pasar tcp_syn_retries Este elemento de configuración está determinado.

Si la configuración de tcp_syn_retries es 3 en este momento, el proceso es el siguiente:

Retransmisión TCP

Después de que el cliente envía el SYN, si no ha recibido una respuesta del servidor después de 1 s, se realiza la primera retransmisión. Si no se recibe ninguna respuesta del servidor para la segunda retransmisión después de 2 segundos, tcp_syn_retries se retransmitirá todo el tiempo.

Las tres retransmisiones aquí significan que después de que el SYN se envía por primera vez, debe esperar (1 + 2 + 4 + 8) segundos. Si aún no hay respuesta, la conexión volverá a través del error ETIMEOUT.

Háblame de agitar tus manos cuatro veces, oye, humilde azul

Saludar con la mano por primera vez: La chica sintió que no era adecuado para este chico, pero era una buena persona y decidió romper y esperar a que el chico respondiera;

Saludando por segunda vez: Este chico, también sabe jugar, solo di: "Score it";

Saludó por tercera vez: Después de un rato, los chicos sintieron que estaban muy mal para la cara: "Soy un hombre grande, debería ser yo quien propuso romper", entonces les dijo a las chicas: Vamos a romper;

Saludó por cuarta vez: La niña vio esta noticia. ¿Eres "franco" o "loco"?

TIMEWAIT entiende, ¿qué debo hacer si hay demasiado TIMEWAIT y qué lo causa?

La forma de responder a la pregunta no es más que qué es, por qué aparece y qué se puede resolver.

Durante las cuatro oleadas de TCP, la parte que inició la desconexión entrará en el estado TIME_WAIT. Por lo general, una conexión TCP proporciona servicios a través del desarrollo externo de puertos. En el caso de alta concurrencia, cada conexión ocupa un puerto, pero el puerto es tan limitado que puede hacer que el puerto se agote, por lo que habrá "" servicio a veces bueno de vez en cuando " Mala situacion".

Como se muestra en la figura a continuación, TCP agitó cuatro veces. Cuando la conexión TCP está a punto de terminar, enviará un mensaje FIN. El Host 2 entra en el estado CLOSE_WAIT y envía una respuesta ACK. El anfitrión 1 permanecerá en TIMEWAIT durante 2MSL.

¿Por qué no ingresar directamente al estado de transición CERRAR, pero primero debe esperar a 2MSL, qué está haciendo durante este tiempo?

La primera razón es asegurarse de que el ACK final se pueda recibir normalmente y, por lo tanto, se apagará con normalidad. Cómo entenderlo, cuando los científicos diseñan TCP, asumen que el mensaje TCP saldrá mal y comenzará a retransmitirse. Si el mensaje del host 1 no se transmite correctamente, el host 2 retransmitirá el mensaje FIN y el host 1 no mantiene TIME_WAIT en este momento. Estado, se perderá el contexto y se restaurará el RST, provocando un error en el lado que apaga el servidor.

Saludar cuatro veces

La segunda razón es dejar que las subsecciones repetidas de enlaces antiguos desaparezcan naturalmente en la red.

Una comunicación de red puede pasar a través de innumerables enrutadores y conmutadores, y no sé qué enlace fallará. Para identificar una conexión, utilizamos un método de cuatro tuplas [IP de origen, puerto de origen, IP de destino, puerto de destino] . Suponga que las dos conexiones A y B en este momento.

La conexión A se interrumpe en el medio. En este momento, se vuelve a crear la conexión B. El cuádruple de la conexión B es lo mismo que la conexión A. Si la conexión A llega al destino después de un período de tiempo, es probable que la conexión B se considere parte de la conexión A , Esto causará confusión.

Por lo tanto, TCP establece un mecanismo de este tipo para que los paquetes en ambas direcciones se descarten.

Entonces, ¿cuáles son los daños de TIME_WAIT?

¡Demasiadas conexiones causarán inevitablemente un desperdicio de recursos de memoria!

Ocupación de puertos. Los puertos que se pueden abrir son 32768 ~ 61000.

¿Ha optimizado TCP?

Es broma, esto ha sido revisado, solo pregunte, el martillo no tiene miedo. Hay muchos puntos de optimización, solo mencione un poco, describamos el proceso de una manera más profunda, como ajustar qué parámetros serán óptimos bajo ciertas condiciones

Todos debemos conocer la semiconexión, es decir, la conexión que no responde SYN + ACK después de recibir el SYN, luego, cada vez que el servidor recibe un nuevo paquete SYN, creará una semiconexión y luego agregará esta semiconexión a la cola de semiconexión (cola de sincronización ), la longitud de la cola de sincronización es limitada, la cual se puede configurar a través de tcp_max_syn_backlog.Cuando el número de medias conexiones en la cola excede el valor configurado, el nuevo paquete SYN será descartado.

Para el servidor, puede haber muchas conexiones nuevas en un instante, así que aumente el valor para evitar que el paquete SYN se descarte y el Cliente no reciba SYN + ACK.

¿Esto hace que el entrevistador sienta que este joven tiene algo? ¿Cómo configurarlo?

Configurar la cola de sincronización

¿Crees que el entrevistador es un tonto? Por supuesto que no, en caso de que el entrevistador le pregunte: hay más retrasos semi-conectados, ¿hay otras razones?

Jajaja, esto demuestra que el entrevistador mordió el anzuelo, vamos, ¡veamos qué más está mal!

También puede deberse a que un Cliente malintencionado está llevando a cabo un ataque SYN Flood.

¿Cuál es el proceso del ataque SYN Flood?

Primero, el Cliente envía paquetes SYN a una frecuencia más alta, y la IP de origen de este paquete SYN cambia constantemente. Para el Servidor, este es un nuevo enlace y se le asignará una semiconexión.

El SYN + ACK del servidor encontrará la IP basada en el paquete SYN anterior y encontrará que no es la IP original, por lo que no puede recibir el paquete ACK del cliente, lo que conduce a la imposibilidad de establecer una conexión correctamente. Naturalmente, la cola de semiconexión del servidor está agotada y no puede responder. Paquete SYN normal.

¿Hay alguna solución a este problema?

Eso debe ser, después de todo, para una entrevista, necesitamos preguntarle al entrevistador qué sabemos. El mecanismo de cookies SYN se introduce en el kernel de Linux, ¿qué significa este mecanismo?

Primero, el servidor recibe el paquete SYN, no asigna recursos para guardar la información del cliente, sino que calcula el valor de la cookie en base al SYN, y luego registra la cookie en SYN ACK y la envía;

Si es normal, el valor de las Cookies se recuperará con el mensaje ACK del Cliente;

El servidor comprobará la legitimidad del paquete ACK basado en esta cookie y creará una conexión si es legal;

Entonces, ¿cómo activar las cookies SYN?

Cookies SYN

Cuando me preguntan por Internet, eso es todo, es bastante bueno, y jugué las cartas exactamente de acuerdo con mi rutina. ¡Empiece a jugar con mi sistema operativo!

  • ¿Qué es la memoria de página grande?

Lo borré, casi no reaccioné, "Uncle Memory", pero es realmente impresionante, memoria de página enorme, recuerda, es memoria de página enorme.

Sabemos que la gestión de la memoria del montón del sistema operativo se gestiona mediante paginación y tablas de páginas de varios niveles . El tamaño predeterminado de cada página proporcionado por el sistema operativo es de 4 KB.

Suponiendo que la memoria utilizada por el proceso actual es mayor que 1GB, entonces 1GB / 4KB = 26211 entradas de la tabla de páginas estarán ocupadas en la tabla de páginas en este momento, pero las entradas de la tabla de páginas que puede acomodar el sistema TLB son mucho menores que este número.

Por lo tanto, cuando varias aplicaciones que utilizan mucha memoria acceden a la memoria, se producirán demasiados fallos de TLB. Por lo tanto, en determinadas circunstancias, es necesario reducir el número de fallos. Una forma viable es aumentar el tamaño de cada página.

La página grande admitida por el sistema operativo es de 2 MB de forma predeterminada. Cuando se utiliza 1 GB de memoria, la tabla de páginas ocupará 512 entradas de la tabla de páginas, lo que mejora en gran medida la tasa de aciertos de TLB y mejora el rendimiento.

Además, debe tenerse en cuenta que la memoria de página grande se asigna a la memoria física, por lo que no habrá intercambio fuera del disco, por lo que no habrá interrupción por fallas de página y no se introducirá ningún retraso en el acceso al disco.

Bien, casi es hora, escribe un código simple para lograr la subcadena más larga sin caracteres repetidos.

Idea: Utilice ventanas deslizantes para asegurarse de que las letras de cada ventana sean únicas.

  • Use vectorm para registrar la nueva posición a la que debo ajustarme cuando se repite una letra

  • Entonces, cada vez que actualice, se guardará j + 1, que es la posición detrás de la letra

  • j representa la última letra de la subcadena, y la longitud de la subcadena se calcula como j-i + 1

La subcadena más larga sin caracteres repetidos

Dos lados

Por un lado, me siento bastante bien, y de hecho, el otro lado está aquí. La señorita HR llamó para informar a las dos partes el miércoles, está bien, para el azul cálido que nunca llega tarde, debe ser puntual. Sostenga el té y espere hasta las 2:30. En cuanto a por qué sostener el té, este es mi hábito. Beber una taza de té antes de la entrevista y esperar los aplausos del entrevistador (los entrevistadores en realidad son muy amables).

Ten paciencia, el entrevistador no ha venido cuando llego. No puedo esperar para llamar a RR.HH.HH dijo que lo siento, tengo que esperar unos minutos, está bien, tengo que soportar esta dulce voz, pero no he esperado diez minutos. Noticias, todavía tengo un examen escrito por la tarde, pero no tengo más remedio que decirle a RR.HH. que tengo algo que hacer esta tarde, ¿debo cambiar de cara?

No sé cuál es la situación, solo diga, cambiaré el entrevistador por usted de inmediato, lo limpiaré, y hay cosas así, ¿el bebé en mi ciudad de Kaká tiene este tipo de tratamiento? ¿Mi esposa es sobresaliente? No, amo a Xiaohongshu de todos modos.

"Quédate conmigo" sonó, este es exactamente el tono de mi teléfono. .

"Hola"

"Hola, ¿es XX?"

"Hmm, hola entrevistador"

"Soy tu segundo entrevistador, preséntate primero"

Mi nombre es XX, vengo de Universidad XX, pregrado XX, master XXX, e hice XX durante el período, gracias entrevistador. No es necesario que se presente tan elegante, elija el punto clave y diga, no le importan sus citas de pregrado un par de veces y no le importa XXXX, simplemente termine las cosas de manera simple y clara, y comience con dos lados.

  • Deberías haber aprendido C. ¿Cuál es la idea de usar C para lograr polimorfismo?

En cuanto a esta pregunta, me sorprendió bastante. ¿Por qué de repente pregunté acerca de C? Después de pensarlo, todavía podría considerar la comprensión del polimorfismo y la herencia en la orientación a objetos.

El polimorfismo no es más que polimorfismo en tiempo de compilación y polimorfismo en tiempo de ejecución. El polimorfismo en tiempo de compilación se entiende como sobrecarga y el polimorfismo en tiempo de ejecución se entiende como reescritura. Luego, para implementar la sobrecarga, debe usar la macro en c, V_ARGS.

c implementar sobrecarga

Comprender los métodos anteriores facilita la implementación del polimorfismo:

c realizar polimorfismo

Parece que no hay nada que preguntar, primero escribe un código y fusiona los dos.

Jaja, me recuerda a la letra "Ven a la izquierda y pasa un dragón conmigo, y dibuja un arcoíris a tu derecha" (imagen del suplemento del cerebro).

¡detener! ! Este es uno de los algoritmos probados con frecuencia que mencioné antes. La idea central es dividir y conquistar, que se puede dividir todo el tiempo mediante recursividad. La condición final de la recursividad no es una división adicional, es decir, se detiene cuando se divide en una.

Desde el primero, trate cada módulo como una matriz ordenada, como un puntero doble, configure punteros en las cabezas de las dos matrices, compare los valores y luego insértelos en la nueva matriz y agregue el código.

Combinar ordenación

¿Entiendes el índice invertido?

Suponga que aquí tengo decenas de documentos y el título de cada documento es diferente, si le doy el título del documento, pronto encontrará el documento correspondiente. Pero si le pido que busque las dos palabras "cálido" y "azul" en el papel, puede darme directamente "liangerba".

Porque a menudo es difícil averiguarlo rápidamente. Desde una perspectiva ligeramente profesional, el primero es un índice a plazo y el segundo es un índice invertido.

Primero veamos un índice de avance simple. En este momento, asigne a cada documento un ID único y luego use la tabla hash para usar el ID del documento como clave y el contenido del documento como el valor correspondiente a la clave.

De esta manera, podemos completar la recuperación de claves en el tiempo O (1). Este es exactamente el índice positivo:

Índice frontal

Aquí, el costo de tiempo de recorrer la tabla hash es O (n). Cada vez que recorre un documento, debe recorrer cada carácter para determinar si contiene dos caracteres. Suponiendo que la longitud promedio de cada documento es k, el costo de tiempo de recorrer un documento es O (K).

¿Existe algún método de optimización?

De hecho, las anteriores son dos soluciones, una es buscar el contenido en función del tema y la otra es encontrar el tema en función de la palabra clave. Este es el plan completamente opuesto, así que intentemos lo contrario.

Tratamos la palabra clave como la clave y la lista de documentos que contienen esta palabra clave como el contenido almacenado. También construya una tabla hash, en O (1) tiempo puedo encontrar una lista de documentos que contienen la palabra clave.

Esta estructura de índice invertido se basa en el contenido o campo.

¿Cómo crear un índice invertido?

  • Primero, numere el documento para indicar una representación única y luego clasifique y recorra los documentos;

  • Analice las palabras clave de cada documento y genere <palabra clave, ID de documento, posición de palabra clave>. La posición de la palabra clave aquí es principalmente para mostrar la información antes y después de la palabra clave durante la búsqueda;

  • Inserte la clave de la palabra clave en la tabla hash. Si la clave ya existe en la tabla hash, agregue un nodo a la lista de publicación correspondiente y registre el ID del documento. Si la tabla hash no tiene una clave de respuesta, inserte la clave y cree una lista de publicación y el nodo correspondiente;

  • Repita los pasos 2 y 3 para procesar todos los documentos.

Crea un índice invertido

¿Qué pasa si la consulta contiene teclas "cálidas" y "azules"?

Siga la vid, use dos teclas para buscar en el índice invertido, por lo que se usan dos listas diferentes: A y B. Todos los documentos de A contienen la palabra "cálido" y todos los documentos de B contienen la palabra "azul".

Si el documento aparece tanto "cálido" como "azul", ¿solo contiene dos palabras? Así que busca el elemento público AB.

¿Cómo encontrar los elementos comunes de las dos listas enlazadas de AB? Espero que mis amigos lo piensen y se les pregunte a menudo en el algoritmo de desgarro.

  • Primero use dos punteros P1 y P2 para apuntar al primer elemento de la lista enlazada ordenada AB;

  • Luego compare si los nodos apuntados por los dos punteros son los mismos, puede haber tres situaciones;

  • Si los dos ID son iguales, es un elemento común, que puede fusionarse directamente, y luego P1 P2 se mueve hacia atrás;

  • El elemento p1 es más pequeño que el elemento p2, y el descendiente de p1 apunta al siguiente elemento de la lista vinculada A;

  • El elemento p1 es mayor que el elemento p2, y el descendiente de p2 apunta al siguiente elemento de la lista enlazada B;

  • Repita el segundo paso hasta que p1 y p2 se muevan al final de la lista vinculada.

Elementos comunes de la lista vinculada

Dijiste que habías usado Kafka, entonces, ¿cómo te aseguras de consumirlo solo una vez cuando usas la cola de mensajes?

En primer lugar, se introducen colas de mensajes como kafka para reducir el tráfico máximo de escritura y desacoplar diferentes sistemas.

Por ejemplo, hemos desarrollado un sistema de comercio electrónico, una de las funciones es enviar un sobre rojo cuando un usuario compra 5 copias de un producto para animar a los usuarios a consumir. Pero si el mensaje se pierde en el proceso de entrega, es probable que el usuario no esté satisfecho porque no recibió el sobre rojo, o incluso canceló el pedido ¿Cómo se asegura de que el mensaje se consuma una vez?

Veamos cuántas etapas se escribe este mensaje en la cola de mensajes. Primero, el mensaje se escribe desde el productor en la cola. El mensaje se almacena en la cola de mensajes. En esta etapa, el consumidor consume el mensaje. Se puede perder cualquier etapa. Analizamos estas etapas por separado

Tres posibilidades de pérdida

La primera etapa: producción de mensajes

La producción de mensajes suele ser el servidor empresarial. El servidor empresarial y el servidor de cola de mensajes implementado de forma independiente se comunican a través de la red interna. Es probable que el mensaje se pierda debido a la fluctuación de la red. De esta manera, el mecanismo de retransmisión de mensajes se puede utilizar para garantizar la entrega del mensaje. Sin embargo, es probable que se produzca un consumo repetido, lo que significa que el usuario está contento después de recibir dos sobres rojos, pero ...

La segunda etapa: perdido en la cola

Para reducir la E / S aleatoria del almacenamiento de mensajes en el disco, Kafka utiliza el método de flasheo asincrónico para almacenar el mensaje en el disco.

Creo que ha escrito acm en su currículum. Cuénteme sobre su estrategia o experiencia.

Jajaja, finalmente es hora de que sople agua. ¡El discreto es el espectáculo más impresionante!

Escribe una verificación de correo electrónico regular

No lo escribí en ese momento, realmente no lo recuerdo. Lo revisé cada vez que lo usé. ¿Quién sabe a quién conocí durante la entrevista, rompiendo el KMP? Aquí hay una respuesta para todos, y organizaré una rutina regular en detalle más adelante:

Darse cuenta de la regularidad del buzón de verificación

¿Conoces el mapa de memoria? Habla, trata de hablar

Desde que hice mi mejor esfuerzo, no soy bienvenido. Desde qué es la memoria hasta cómo ver la memoria del servidor y, finalmente, cómo hacer un mejor uso de la memoria para responder a la pregunta.

En primer lugar, la memoria se utiliza para almacenar instrucciones, datos, etc. del sistema y de la aplicación. En Linux, la asignación de memoria se usa para administrar la memoria.

La capacidad de memoria de la que solemos hablar se refiere principalmente a la memoria física, también llamada memoria principal. Solo el kernel puede acceder directamente a él, por lo que la pregunta es, ¿qué debo hacer si quiero acceder a la memoria en la ciudad?

El kernel de Linux proporciona un espacio de direcciones virtuales para cada proceso y los espacios de direcciones son continuos, de esta forma es muy conveniente que el proceso acceda a la memoria virtual.

Las direcciones virtuales se dividen en espacio de kernel y espacio de usuario, y los rangos de direcciones de procesador con diferentes longitudes de palabra también son diferentes. Echemos un vistazo a los espacios de direcciones virtuales de 32 bits y 64 bits respectivamente:

Espacio de kernel y espacio de usuario

A partir de esta figura, es obvio que el espacio del kernel de un sistema de 32 bits es 1G, mientras que el espacio del kernel de 64 bits y el espacio del usuario son 128T.

El mapeo de memoria significa que las direcciones de memoria virtual se asignan a direcciones de memoria física. Una vez que el mapeo se completa con éxito, se debe mantener una tabla de páginas para cada proceso para registrar la relación entre los dos.

Conversión de dirección virtual a dirección física

De esta manera, si la dirección virtual a la que accede el proceso no está presente, ingresa al espacio del kernel para asignar memoria física a través de una excepción de falla de página, actualiza la tabla de páginas del proceso y finalmente regresa al espacio de usuario.

Cuando se trata de memoria virtual, tengo que hablar de los distintos segmentos del espacio de usuario:

Segmentos de espacio de usuario

No pude evitar preguntarle en voz baja a RR.HH. La evaluación que me hizo el segundo entrevistador, la habilidad básica y de código es buena, y la descripción del proyecto no es clara.

  • Puede que no entienda claramente las cosas más esenciales del proyecto.

  • Las diferentes direcciones en las que está involucrado, la comprensión de algunos términos profesionales es diferente)


Tres lados

Entrevistadores de tres caras, realmente no puedo usar "calvo" para describir, siento que mis ojos brillaron por un minuto, ¡cómo decir, cara!

¿Qué son los bloqueos de hilo? Hablé sobre el bloqueo de lectura-escritura, me interrumpió y me pregunté qué problemas tendría el bloqueo de lectura-escritura. No era más que el problema de la falta de bloqueo de escritura. Dije que no había leído el código fuente del kernel, y si me dejaba implementarlo, ¿Cómo puedo evitarlo?

Tabla Hash distribuida, al expandir (tomará mucho tiempo), dije que P debe estar garantizado, CA solo puede elegir uno, pero podemos usar una consistencia débil para asegurar su disponibilidad.

Varias solicitudes de solicitud aleatorias, y luego diferentes solicitudes tienen diferentes pesos, se realiza un muestreo aleatorio y es más probable que se extraiga el peso de la solicitud.

¿Conoces RPC?

RPC se traduce en una llamada a procedimiento remoto. Ayúdenos a proteger los detalles de la red y obtener la misma experiencia de llamar a métodos remotos que llamar a local. Por ejemplo, si no hay puente, tenemos que andar en bote y desvíos para cruzar el río, si hay puente podemos llegar al destino tan fácilmente como caminando por la carretera.

¿Cuál es el proceso de comunicación de RPC?

Acabo de decir que RPC protege los detalles de la red, lo que significa que maneja la parte de la red. Para garantizar la confiabilidad, utiliza la transmisión TCP de forma predeterminada. Los datos transmitidos por la red son binarios, pero el parámetro solicitado por la llamada es el objeto, por lo que el objeto debe ser Convierta a binario, que requiere tecnología de serialización.

Una vez que el proveedor de servicios recibe los datos, no sabe dónde está el final, por lo que se necesitan algunas condiciones de límite para identificar dónde comienzan y dónde terminan los datos solicitados, al igual que varias señales en la carretera que nos llevan hacia adelante. Esta convención de formato se llama "acuerdo".

De acuerdo con el formato especificado en el acuerdo, la solicitud correspondiente se puede extraer correctamente y el cuerpo del mensaje binario se puede restaurar de forma inversa al objeto de la solicitud de acuerdo con el tipo de solicitud y el tipo de serialización, lo que se denomina deserialización.

El proveedor de servicios encuentra la clase de implementación correspondiente a través del objeto deserializado para completar la llamada rectificada, que es una llamada rcp. Haz un dibujo para profundizar la impresión:

Proceso RPC

Algunas otras preguntas que hice en la entrevista anterior no estaban escritas en esta parte del contenido. También hice algunas preguntas de la base de datos. Fue muy regular. Escribí el artículo anterior, que es demasiado largo y parece cansado. ¿Qué tal tres veces consecutivas, nos vemos la próxima? muah


para resumir

Tenga en cuenta los siguientes puntos:

  • La empresa lo contrata para trabajar y no bajará los estándares requeridos para usted debido a lo que hace.

  • El código escrito en la herramienta es completamente diferente del código triturado.

  • Aprecie cada oportunidad de entrevista y aprenda a revisar.

  • Para los recién graduados, la investigación principal es el dominio de los conocimientos informáticos básicos. Los requisitos del proyecto no son tan altos. Si lo hace usted mismo, trabajará duro para desenterrar los detalles y hacer las pruebas. Solo así podrá saber qué problemas encontrará, qué dificultades encontrará y cómo resolverlos. . Para que pueda hablar libremente.

  • No tengas miedo de las clases no disciplinarias, ¡perderás si tienes miedo! Asegúrate de probar más.


更多精彩推荐
☞北京 10 年,难说再见!
☞致敬所有的程序员们~ | 每日趣闻
☞腾讯否认微信测试语音消息进度调节;监证会同意蚂蚁集团科创板IPO注册;React 17 正式版发布|极客头条
☞韩辉:国产操作系统的最大难题在于解决“生产关系”
☞蓝色巨人IBM全力奔赴的混合云之旅能顺利吗?
☞区块链赋能供应链金融|应用优势与四类常见模式
点分享点点赞点在看

Supongo que te gusta

Origin blog.csdn.net/csdnsevenn/article/details/109233554
Recomendado
Clasificación