Resumen de la entrevista ByteDance-3.18

Resumen de la entrevista ByteDance

ByteDance es la primera compañía de tecnología del mundo en aplicar inteligencia artificial a sus principales productos. Toda la matriz de productos incluye Toutiao, Douyin, video de sandía, video pequeño de volcán, TopBuzz, estímulo Faceu, Tu Chong, Zhi Che Di y otros productos. A partir de enero de 2019, la línea completa de productos de ByteDance tiene más de 600 millones de actividades diarias y más de mil millones de actividades mensuales. ByteDance también se está desplegando activamente a nivel internacional, con productos que cubren más de 150 países y regiones, 75 idiomas, y ocupa el primer puesto en la lista de tiendas de aplicaciones en más de 40 países y regiones.

Inserte la descripción de la imagen aquí

Información de la entrevista

  • Publicación de la entrevista: pasante de desarrollo en segundo plano de Java
  • Formato de entrevista: entrevista en video de la plataforma Niuke

Contenido de la investigación

  • Examinamos principalmente problemas comerciales generales y experiencia previa en proyectos.
  • Los valores y las habilidades sociales también son factores importantes en nuestra selección de talentos

Primera ronda de entrevista

Comprender la estructura de memoria de Java?

  • El flujo de ejecución del programa Java:

El compilador de Java compilará el archivo de código fuente de Java (.java) en un archivo de código de bytes (.class). El cargador de clases en la máquina virtual Java carga los archivos de código de bytes de cada clase. Después de cargar, la JVM se ejecutará El motor se ejecuta. Durante todo el proceso de ejecución del programa, la JVM utilizará un espacio para almacenar los datos y la información relacionada necesaria durante la ejecución del programa. Este espacio generalmente se denomina Área de datos de tiempo de ejecución (área de datos de tiempo de ejecución), que es lo que a menudo decimos JVM Memoria Por lo tanto, la administración de memoria de la que hablamos a menudo en Java es administrar este espacio (cómo asignar y recuperar espacio de memoria).

Inserte la descripción de la imagen aquí

  • ¿Cómo se dividen los datos de tiempo de ejecución?

Según la especificación JVM, la memoria JVM se divide en cinco partes: pila de máquina virtual, montón, área de método, contador de programa y pila de método local.

El nombre Caracteristicas Efecto
Contador de programa Uso de memoria pequeño, hilo privado, mismo ciclo de vida que el hilo Indicador de número de línea de código de byte
Pila de máquina virtual El subproceso es privado, el ciclo de vida es el mismo que el subproceso y utiliza un espacio de memoria continuo Modelo de memoria para la ejecución de métodos Java, almacenamiento de tabla de variables locales, pila de operaciones, enlace dinámico, salida de métodos y otra información
Montón Uso compartido de subprocesos, el ciclo de vida es el mismo que el de la máquina virtual, no puede usar direcciones de memoria consecutivas Guardar instancias de objetos, todas las instancias de objetos (incluidas las matrices) deben asignarse en el montón
Área de método Uso compartido de subprocesos, el ciclo de vida es el mismo que el de la máquina virtual, no puede usar direcciones de memoria consecutivas Almacene información de clase, constantes, variables estáticas y código compilado por el compilador justo a tiempo que ha sido cargado por la máquina virtual
Grupo constante de tiempo de ejecución Parte del área de método, dinámica Almacenar referencias literales y de símbolos

Inserte la descripción de la imagen aquí

¿Cuáles son los códigos de estado HTTP?

  • HTTP: Protocolo de transferencia de hipertexto, que define el formato de los datos enviados cuando el cliente se comunica con el servidor
  • Características de HTTP
    1. Protocolo avanzado basado en TCP / IP
    2. Número de puerto predeterminado: 80
    3. Basado en el modelo de solicitud / respuesta: una solicitud corresponde a una respuesta
    4. Apatridia: cada solicitud es independiente entre sí y no puede intercambiar datos
  • Diferencia de versión:
    • 1.0: cada solicitud establecerá una nueva conexión
    • 1.1: conexión de multiplexación
  • Código de estado HTTP:
    • Cuando un usuario visita una página web, el navegador envía una solicitud al servidor. Antes de que el navegador reciba y muestre la página web, el servidor donde se encuentra la página web devolverá un encabezado con un código de estado HTTP en respuesta a la solicitud del navegador.
    • 200 solicitudes exitosas
    • 301-Los recursos se transfieren permanentemente a otros servidores
    • 404-El recurso solicitado no existe
    • Error interno de 500 servidores
Clasificación Descripción
1 ** Mensaje, el servidor recibe la solicitud y necesita continuar realizando la operación
2 ** Exitosa, la operación fue recibida y procesada con éxito
3 ** Redirigir, se requieren acciones adicionales para completar la solicitud
4 ** Error del cliente, la solicitud contiene un error de sintaxis o la solicitud no se puede completar
5 ** Error del servidor, el servidor encontró un error en el proceso de procesamiento de la solicitud

Modelo TCP / IP de cuatro capas

Numero El nombre Descripción Acuerdo
4 4 Capa de aplicación Proporcionar comunicación entre aplicaciones. HTTP, FTP, SMTP
3 Capa de transporte Establecer conexiones de extremo a extremo entre hosts TCP, UDP
2 Capa de red Direccionamiento y enrutamiento IP, ICMPARP
1 Capa de interfaz de red Proporcionar acceso a los medios y gestión de enlaces Varias interfaces de comunicación física.

La diferencia entre TCP y UDP

Diferencia TCP UDP
Acuerdo Protocolo de transmisión orientado a bytes Protocolo de transmisión de mensajes
Fiabilidad Confiable Poco confiable
Conectividad Orientado a la conexión Sin conexión
Mensaje Orientado a bytes Orientado a mensajes
Duplex Dúplex completo Uno a uno, uno a muchos, muchos a uno, muchos a muchos
Control de flujo Ventana corredera Ninguno
Control de la congestión Inicio completo, evitación de congestión; retransmisión rápida, recuperación rápida Ninguno

Motor de base de datos MySQL

El motor de almacenamiento de la base de datos es la organización de software subyacente de la base de datos.El sistema de administración de la base de datos utiliza el motor de datos para crear, actualizar, consultar y eliminar datos. Los diferentes motores de almacenamiento proporcionan diferentes mecanismos de almacenamiento, técnicas de indexación y niveles de bloqueo.

  • Motor de almacenamiento InnoDB

    InnoDB es el motor preferido para las bases de datos transaccionales, admite tablas seguras de transacciones (ACID), admite el bloqueo de filas y las claves externas, e InnoDB es el motor MySQL predeterminado.

    Las características principales de InnoDB son:

    1. InnoDB proporciona a MySQL un motor de almacenamiento de seguridad de transacciones (compatible con ACID) con capacidades de confirmación, reversión y recuperación de fallos. InnoDB se bloquea a nivel de fila y también proporciona una lectura sin bloqueo similar a Oracle en la instrucción SELECT . Estas características aumentan la implementación y el rendimiento multiusuario. En consultas SQL, puede mezclar libremente tablas de tipos InnoDB con otros tipos de tablas MySQL, incluso en la misma consulta

    2, InnoDB es enorme procesamiento de grandes datos de cantidad que el diseño de máximo rendimiento. Su eficiencia de CPU puede ser incomparable con cualquier otro bloqueo de motor de base de datos relacional basado en disco

    3. El motor de almacenamiento de InnoDB está completamente integrado con el servidor MySQL y mantiene su propio grupo de búferes para almacenar en caché los datos e índices en la memoria principal. InnoDB mantiene sus tablas e índices en un espacio de tablas lógico, que puede contener varios archivos (o archivos de disco originales). Esto es diferente de la tabla MyISAM. Por ejemplo, en la tabla MyISAM, cada tabla se almacena en un archivo separado. Las tablas de InnoDB pueden ser de cualquier tamaño, incluso en sistemas operativos donde el tamaño del archivo está limitado a 2 GB

    4. InnoDB admite restricciones de integridad de clave externa. Al almacenar datos en una tabla, cada tabla se almacena en el orden de la clave primaria. Si la clave primaria no se especifica en la definición de la tabla, InnoDB generará un ROWID de 6 bytes para cada fila Y use esto como la clave principal

    5. InnoDB se usa en muchos sitios de bases de datos grandes que requieren un alto rendimiento

    InnoDB no crea un directorio. Al usar InnoDB, MySQL creará un archivo de datos de 10 MB ampliado automáticamente llamado ibdata1 en el directorio de datos de MySQL y dos archivos de registro de 5 MB llamados ib_logfile0 e ib_logfile1

  • Motor de almacenamiento MyISAM

    MyISAM se basa en el motor de almacenamiento ISAM y lo expande. Es uno de los motores de almacenamiento más utilizados en la Web, el almacenamiento de datos y otros entornos de aplicaciones. MyISAM tiene una alta velocidad de inserción y consulta, pero no admite transacciones .

    Las características principales de MyISAM son:

    1. Los archivos grandes (longitud de archivo de hasta 63 bits) son compatibles con los sistemas de archivos y sistemas operativos que admiten archivos grandes

    2. Cuando las operaciones de eliminación, actualización e inserción se usan juntas, las filas de tamaño dinámico producen menos fragmentación. Esto se hace automáticamente al fusionar los bloques eliminados adyacentes, y si se elimina el siguiente bloque, la expansión al siguiente bloque se realiza automáticamente

    3. El número máximo de índices en cada tabla MyISAM es 64, que se puede cambiar volviendo a compilar. El número máximo de columnas por índice es 16

    4. La longitud máxima de la clave es de 1000 bytes, que también se puede cambiar mediante compilación. Para la longitud de la clave superior a 250 bytes, se utilizará una clave superior a 1024 bytes

    5. Las columnas BLOB y TEXT pueden indexarse

    6, NULL está permitido en la columna de índice, este valor representa 0 ~ 1 bytes de cada clave

    7. Todos los valores de las teclas numéricas se almacenan primero en bytes altos para permitir una mayor compresión del índice

    8. Cada tabla MyISAM tiene una columna interna de AUTO_INCREMENT. Esta columna se actualiza durante las operaciones INSERT y UPDATE, y la columna AUTO_INCREMENT se actualiza. Entonces, la columna AUTO_INCREMENT de la tabla de tipos MyISAM se actualiza más rápido que la AUTO_INCREMENT del tipo InnoDB

    9. Los archivos de datos y los archivos de índice se pueden colocar en diferentes directorios

    10. Cada columna de caracteres puede tener un conjunto de caracteres diferente

    11. Las tablas con VARCHAR pueden tener una longitud de registro fija o dinámica

    12. Las columnas VARCHAR y CHAR pueden tener hasta 64 KB

    Usando el motor MyISAM para crear la base de datos, se generarán 3 archivos. El nombre del archivo comienza con el nombre de la tabla y el tipo de archivo donde está la extensión:

    definición de la tabla de almacenamiento de archivos frm, extensión del archivo de datos. MYD (MYData), extensión del archivo de índice. MYI (MYIndex)

  • Motor de almacenamiento de memoria

    El motor de almacenamiento MEMORY almacena los datos de la tabla en la memoria y proporciona acceso rápido sin consultar ni hacer referencia a otros datos de la tabla.

    Las características principales de MEMORY son:

    1. Cada tabla en la tabla MEMORY puede tener hasta 32 índices, 16 columnas por índice y una longitud máxima de clave de 500 bytes

    2. El motor de almacenamiento MEMORY realiza la miniatura HASH y BTREE

    3. Puede haber valores clave no únicos en una tabla MEMORY

    4. La tabla MEMORY usa un formato de longitud de registro fijo

    5. MEMORY no admite columnas BLOB o TEXT

    6. MEMORY admite columnas AUTO_INCREMENT e índices en columnas que pueden contener valores NULL

    7. La tabla MEMORY se comparte entre todos los clientes (como cualquier otra tabla no TEMPORAL)

    8. La memoria de la tabla MEMORY se almacena en la memoria La memoria es la tabla interna creada por la tabla MEMORY y el servidor en el tiempo inactivo durante el procesamiento de la consulta.

    9. Cuando el contenido de la tabla MEMORY ya no sea necesario, para liberar la memoria utilizada por la tabla MEMORY, debe ejecutar DELETE FROM o TRUNCATE TABLE, o eliminar toda la tabla (usando DROP TABLE)

Pregunta de programación 1

Dada una lista vinculada, cada N vueltas independientes

Entrada de caso: a-> b-> c-> d-> e-> f-> g 3

Salida de caja: c-> b-> a-> f-> e-> d-> g

Segunda ronda de entrevista

Pregunta de programación 2

Hay un tablero de anuncios, que puede mostrar 2 anuncios diferentes al mismo tiempo. 4 creatividades existentes, la frecuencia de visualización debe ser 1: 2: 3: 4. Diseñe el algoritmo de visualización

Pregunta de programación 3

Dado el tiempo de inicio y finalización de un grupo de procesos, encuentre el número máximo de procesos que se ejecutan al mismo tiempo

inicio [] int64

end [] int64

1-10 5-15 16-20

Pregunta de programación 4

Hay una caja negra con bolas blancas y negras de la misma sensación, M bolas blancas y N bolas negras. Cada vez que no lo vuelva a colocar, puede tocar una bola blanca + 1 y una bola negra-1. Puede optar por detenerse a la mitad y preguntar cuál es el puntaje máximo esperado

Pregunta de programación 5

Para lograr la función de obtener la siguiente disposición, el algoritmo necesita reorganizar la secuencia numérica dada en la siguiente disposición más grande en orden lexicográfico.

Si no hay una disposición siguiente más grande, los números se reorganizan a la disposición más pequeña (es decir, orden ascendente).

Debe modificarse in situ, solo permitiendo el uso de espacio constante adicional.

Estos son algunos ejemplos: la entrada está en la columna izquierda y la salida correspondiente está en la columna derecha.
1,2,3 → 1,3,2
3,2,1 → 1,2,3

1,1,5 → 1,5,1

1,4,3,2

Publicado 395 artículos originales · ganó 130 · 200,000 vistas +

Supongo que te gusta

Origin blog.csdn.net/qq_40507857/article/details/104957050
Recomendado
Clasificación