Entrevista de desarrollo de ByteDance-Backend

  • Resumen de la entrevista:
    1. Debido a que la votación se retrasó, un lado, dos lados y tres lados se llevaron a cabo en la tarde del 8 de octubre. La experiencia general de la entrevista es excelente. Además de discutir la experiencia del proyecto, los problemas involucrados: proceso / subproceso, programación de CPU, diferencia de cadenas C / C ++, protocolo de enlace de red de tres vías, cuatro manos agitadas; experiencia en el proyecto; análisis de requisitos del proyecto; dos bases de datos MySQL Motor y comparación. Los temas de programación incluyen: raíz número 2 con 10 posiciones decimales; cómo determinar rápidamente si una determinada IP le pertenece entre cientos de miles de segmentos de direcciones IP; la ruta cuya suma en el árbol binario es un valor determinado; no se repite del 1 al 10 Elija cuatro números e imprima toda la secuencia de cálculos que cumplan con la regla del juego de 24 puntos.
  1. La diferencia entre proceso e hilo
  • Durante el inicio del sistema operativo Linux, el primer proceso que se inicia es el proceso init, y todos los demás procesos son sus procesos secundarios;
  • Los procesos y subprocesos son una descripción de un período de tiempo, que es una descripción del período de tiempo de trabajo de la CPU. La principal diferencia entre procesos y subprocesos es que son diferentes métodos de gestión de recursos del sistema operativo.
  • Desde la perspectiva de la CPU, todas las tareas se ejecutan una a una. El método de rotación específico es: primero cargar el contexto del programa A, luego comenzar a ejecutar A, guardar el contexto del programa A y transferir al siguiente programa B para ejecutarlo. Programa el contexto, y luego comienza a ejecutar B, guarda el contexto del programa B;
  • El proceso es la suma del tiempo de ejecución del programa, incluido el cambio de contexto = contexto de carga de CPU + ejecución de CPU + contexto de ahorro de CPU;
  • Un subproceso es un período de tiempo de CPU más pequeño que comparte el contexto del proceso, y el proceso tiene una unidad de memoria independiente durante la ejecución y varios subprocesos comparten memoria;
  • Hay varios procesos en el sistema operativo y cada proceso puede tener 1 o más subprocesos
  1. La unidad más pequeña de programación de recursos del sistema es
  • Thread es la unidad básica de programación de CPU. La programación de la CPU también se denomina programación de intervalos de tiempo. La unidad de programación es un intervalo de tiempo.
  1. La diferencia y la conexión entre la cadena de caracteres en la cadena C y C ++
  • Char es definir un carácter, almacenar un carácter, ocupar un byte. Strign en C ++ es una clase de cadena encapsulada;
  • Hay un '\ 0' invisible al final de la cadena de caracteres;
  • cadena es parte de la biblioteca estándar de C ++ (biblioteca estándar de C ++), necesita
#include <string>
  • El string.h en C proporciona una serie de funciones para manipular cadenas de caracteres como strcat, strncat, strcmp, strcpy, strstr, etc.
  • La clase de cadena C ++ proporciona una interfaz para devolver una cadena de caracteres: c_str ()
  1. Apretón de manos de tres vías de la red, proceso de cuatro ondas
  • TCP es un protocolo de unidifusión orientado a la conexión. Antes de enviar datos, ambas partes en comunicación deben establecer una conexión entre sí. La llamada "conexión" es en realidad un dato de cada uno almacenado en la memoria del cliente y del servidor, como la dirección IP y el número de puerto.
  • TCP puede considerarse como un flujo de bytes, que se ocupará de la pérdida, duplicación y errores de paquetes en la capa IP o por debajo de ella. Durante el establecimiento de la conexión, las dos partes deben intercambiar algunos parámetros de conexión. Estos parámetros se pueden colocar en el encabezado TCP.
  • TCP proporciona un servicio de capa de transporte y flujo de bytes orientado a la conexión confiable que utiliza un protocolo de enlace de tres vías para establecer una conexión. Utilice 4 ondas para cerrar una conexión.
  • El primer apretón de manos: el cliente envía un paquete de red y el servidor lo recibe. De esta manera, el servidor puede concluir que la capacidad de envío del cliente y la capacidad de recepción del servidor son normales.
  • El segundo apretón de manos: el servidor envía el paquete y el cliente lo recibe. De esta manera, el cliente puede concluir que las capacidades de recepción y envío del servidor y las capacidades de recepción y envío del cliente son normales. Desde la perspectiva del cliente, recibí el paquete de respuesta enviado por el servidor, que indica que el servidor recibió el paquete de red que envié durante el primer protocolo de enlace y envió con éxito el paquete de respuesta, lo que muestra que el servidor Las capacidades de recepción y envío son normales. Por otro lado, recibí un paquete de respuesta del servidor, indicando que el paquete de red que envié por primera vez llegó exitosamente al servidor, de esta manera mis propias capacidades de envío y recepción también son normales.
  • El tercer apretón de manos: el cliente envía el paquete y el servidor lo recibe. De esta manera, el servidor puede concluir que las capacidades de recepción y envío del cliente y las capacidades de envío y recepción del servidor son normales. Primero, después del segundo apretón de manos, el servidor no sabe si la capacidad de recepción del cliente y su propia capacidad de envío son normales. En el tercer protocolo de enlace, el servidor recibió la respuesta del cliente al segundo protocolo de enlace. Desde la perspectiva del servidor, los datos de respuesta que recibí durante el segundo apretón de manos fueron enviados y recibidos por el cliente. Entonces, mi capacidad de envío es normal. La capacidad de recepción del cliente también es normal.
  • Ondas cuatro veces: la conexión TCP es un modo de transmisión bidireccional de igual a igual, lo que significa que ambas partes pueden enviarse o recibir datos entre sí al mismo tiempo. Cuando una de las partes quiera cerrar la conexión, enviará una instrucción para informar a la otra parte que quiero cerrar la conexión. En este momento, la otra parte devolverá un ACK y la conexión en una dirección se cerrará. Pero la otra dirección aún puede continuar transmitiendo datos. Después de que se envíen todos los datos, se enviará un segmento FIN para cerrar la conexión en esta dirección. El receptor envía un ACK para confirmar que la conexión está cerrada.
  1. ¿Cuáles son los motores de base de datos MySQL, presentados y comparados por separado?
  • La base de datos MySQL tiene una variedad de motores de almacenamiento: Por ejemplo: MyISAM, InnoDB, MERGE, MEMORY (HEAP), BDB (BerkeleyDB), EXAMPLE, FEDERATED, ARCHIVE, CSV, BLACKHOLE, etc., los más comunes son MyISAM e InnoDB
  • MyISAM no admite transacciones, no admite recuperación rápida después de un bloqueo, el uso de bloqueos de tabla no es adecuado para alta concurrencia, búsqueda de rendimiento, confiando en el sistema operativo para administrar el caché para lectura y escritura, solo el índice no almacena en caché los datos reales, admite compresión
  • InnoDB admite transacciones, admite claves externas, admite recuperación automática ante desastres, utiliza bloqueos de filas para admitir lecturas de alta concurrencia, admite copia de seguridad en caliente y recuperación rápida después de fallas, y admite recuperación de texto completo (compatible solo en la versión 5.6.4, por lo que algunas preguntas de la entrevista Puede que aquí no sea riguroso debido a razones de tiempo), tiene su propio mecanismo de administración de caché de lectura y escritura, es decir, los índices de caché también almacenan datos en caché y no se admite la compresión

Supongo que te gusta

Origin blog.csdn.net/u013894391/article/details/102408357
Recomendado
Clasificación