Ingeniero Java de Internet Conocimiento avanzado Alfabetización completa
La mayor parte del contenido de este proyecto proviene del chino Hushan y los derechos de autor pertenecen al autor. El contenido cubre conocimientos en los campos de alta concurrencia, distribución, alta disponibilidad, microservicios y procesamiento masivo de datos. Hemos organizado sistemáticamente esta parte del conocimiento para facilitar el aprendizaje y la referencia de los lectores.
¡También estamos trabajando duro para actualizar el proyecto del algoritmo! Si se está preparando para algoritmos de entrevistas escritas o desea mejorar aún más sus habilidades de codificación, puede participar en Star y seguir doocs/leetcode.
Antes de estudiar este proyecto, echemos un vistazo a lo que dijeron los entrevistadores técnicos en el foro de Discusiones. Este proyecto da la bienvenida a todos los amigos desarrolladores para que compartan algunas de sus ideas y experiencias prácticas en el foro de Discusiones. También es posible que desee seguir doocs/advanced-java con Star para realizar un seguimiento de los últimos desarrollos del proyecto.
Arquitectura de alta concurrencia
cola de mensajes
- ¿Por qué utilizar la cola de mensajes? ¿Cuáles son las ventajas y desventajas de las colas de mensajes? ¿Cuáles son las ventajas y desventajas de Kafka, ActiveMQ, RabbitMQ y RocketMQ?
- ¿Cómo garantizar la alta disponibilidad de la cola de mensajes?
- ¿Cómo garantizar que los mensajes no se consuman repetidamente? (Cómo asegurar la idempotencia del consumo de mensajes)
- ¿Cómo garantizar la transmisión confiable de mensajes? (Cómo afrontar el problema de la pérdida de mensajes)
- ¿Cómo asegurar el orden de los mensajes?
- ¿Cómo solucionar los problemas de retraso y caducidad de la cola de mensajes? ¿Qué hacer cuando la cola de mensajes está llena? Hay millones de mensajes que llevan varias horas atrasados ¿Cómo podemos solucionarlos?
- Si te pidieran que escribieras una cola de mensajes, ¿cómo diseñarías la arquitectura? Cuéntame tu opinión.
motor de búsqueda
- ¿Puede explicar el principio de la arquitectura distribuida de ES (cómo logra ES la distribución)?
- ¿Cómo funciona ES escribir datos? ¿Cómo funcionan los datos de consulta de ES? ¿Puedes presentarnos el Lucene subyacente? ¿Conoces el índice invertido?
- ¿Cómo puede ES mejorar la eficiencia de las consultas cuando la cantidad de datos es grande (miles de millones de niveles)?
- ¿Cuál es la arquitectura de implementación del clúster de producción de ES? ¿Aproximadamente cuántos datos tiene cada índice? ¿Aproximadamente cuántos fragmentos hay por índice?
cache
- ¿Cómo se utiliza el almacenamiento en caché en el proyecto? ¿Cuáles son las consecuencias del almacenamiento en caché si se usa incorrectamente?
- ¿Cuál es la diferencia entre Redis y Memcached? ¿Cuál es el modelo de subprocesamiento de Redis? ¿Por qué Redis de un solo subproceso es mucho más eficiente que Memcached de múltiples subprocesos?
- ¿Qué tipos de datos tiene Redis? ¿En qué escenarios es más adecuado utilizarlo?
- ¿Cuáles son las estrategias de vencimiento de Redis? ¿Puedes escribir el código LRU a mano?
- ¿Cómo garantizar una alta concurrencia y alta disponibilidad de Redis? ¿Puedes presentar el principio de replicación maestro-esclavo de Redis? ¿Puedes presentar el principio centinela de Redis?
- ¿Cuál es la arquitectura maestro-esclavo de Redis?
- ¿Cómo logra Redis Sentinel Cluster una alta disponibilidad?
- ¿Cuáles son los métodos de persistencia de Redis? ¿Cuáles son las ventajas y desventajas de los diferentes mecanismos de persistencia? ¿Cómo se implementa el mecanismo de persistencia subyacente?
- ¿Puedes explicar cómo funciona el modo de clúster de Redis? En modo clúster, ¿cómo se aborda la clave Redis? ¿Cuáles son los algoritmos para el direccionamiento distribuido? ¿Entiendes el algoritmo hash consistente? ¿Cómo agregar y eliminar dinámicamente un nodo?
- ¿Entiendes qué es la avalancha, la penetración y la avería de Redis? ¿Qué sucede después de que Redis falla? ¿Cómo debería afrontar el sistema esta situación? ¿Cómo lidiar con la penetración de Redis?
- ¿Cómo garantizar la coherencia de doble escritura entre el caché y la base de datos?
- ¿Cuál es el problema de contención de concurrencia en Redis? ¿Cómo solucionar este problema? ¿Conoce la solución CAS para transacciones de Redis?
- ¿Cómo se implementa Redis en el entorno de producción?
- ¿Alguna vez has entendido el proceso de repetición de Redis?
Subbase de datos y subtabla
- ¿Por qué deberíamos dividir bases de datos y tablas (al diseñar un sistema de alta concurrencia, cómo debería diseñarse el nivel de la base de datos)? ¿Qué middleware de fragmentación de tablas y bases de datos ha utilizado? ¿Cuáles son las ventajas y desventajas de los diferentes middleware de subbases de datos y subtablas? ¿Cómo se divide la base de datos vertical u horizontalmente?
- Actualmente, existe un sistema que no está dividido en bases de datos y tablas. En el futuro, se dividirá en bases de datos y tablas. ¿Cómo diseñarlo para que el sistema pueda cambiar dinámicamente de bases de datos y tablas no divididas a bases de datos y tablas divididas?
- ¿Cómo diseñar una subbase de datos y un esquema de tabla que pueda expandirse y reducirse dinámicamente?
- Después de dividir la base de datos en tablas, ¿cómo lidiar con la clave primaria de identificación?
Separación de lectura y escritura.
- ¿Cómo realizar la separación de lectura y escritura en MySQL? ¿Cuál es el principio de replicación maestro-esclavo de MySQL? ¿Cómo resolver el problema del retraso en la sincronización maestro-esclavo de MySQL?
Sistema de alta concurrencia
- ¿Cómo diseñar un sistema de alta concurrencia?
sistema distribuido
Bombardeo en serie de entrevistas
División del sistema
- ¿Por qué el sistema está dividido? ¿Cómo realizar la división del sistema? ¿Está bien no usar Dubbo después de dividir?
Marco de servicio distribuido
- Dime ¿cómo funciona Dubbo? ¿Puede continuar la comunicación si el centro de registro no funciona?
- ¿Qué protocolos de serialización admite Dubbo? ¿Cuéntame sobre la estructura de datos de Hessian? ¿Lo sabe PB? ¿Por qué PB es el más eficiente?
- ¿Cuáles son las estrategias de equilibrio de carga y las estrategias de tolerancia a fallas del clúster de Dubbo? ¿Qué pasa con las estrategias de proxy dinámicas?
- ¿Cuál es la idea espía de Dubbo?
- ¿Cómo realizar la gobernanza del servicio, la degradación del servicio, el reintento de falla y el reintento de tiempo de espera basado en Dubbo?
- ¿Cómo diseñar la idempotencia de las interfaces de servicios distribuidos (por ejemplo, sin deducciones repetidas)?
- ¿Cómo garantizar el orden de las solicitudes de interfaz de servicios distribuidos?
- ¿Cómo diseñar usted mismo un marco RPC similar a Dubbo?
- ¿Cuál es la P del teorema CAP?
Cerradura distribuida
- ¿Cuáles son los escenarios de aplicación de Zookeeper?
- ¿Cómo diseñar cerraduras distribuidas usando Redis? ¿Es posible utilizar Zookeeper para diseñar cerraduras distribuidas? ¿Cuál de los dos métodos de implementación de bloqueo distribuido anteriores es más eficiente?
Transacciones distribuidas
- ¿Entiendes las transacciones distribuidas? ¿Cómo se resuelve el problema de las transacciones distribuidas? TCC ¿Qué debo hacer si la red no se puede conectar? ¿Cómo garantizar la coherencia de XA?
sesión distribuida
- ¿Cómo implementar una sesión distribuida durante la implementación del clúster?
Arquitectura de alta disponibilidad
- Introducción a Hystrix
- Arquitectura del sistema de la página de detalles del sitio web de comercio electrónico
- La tecnología de grupo de subprocesos de Hystrix implementa el aislamiento de recursos
- El mecanismo de semáforo de Hystrix implementa el aislamiento de recursos
- Control detallado de las políticas de aislamiento de Hystrix
- Profundización en los aspectos internos de ejecución de Hystrix
- Optimice la interfaz de consulta de datos de productos por lotes según la tecnología de almacenamiento en caché de solicitudes de caché
- Mecanismo de degradación alternativo basado en caché local
- Una mirada en profundidad a los principios operativos de los disyuntores Hystrix
- Profundice en el aislamiento del grupo de subprocesos de Hystrix y la limitación de corriente de la interfaz
- Proporciona protección de seguridad para el tiempo de espera de llamada de la interfaz de servicio según el mecanismo de tiempo de espera
Sistema de alta disponibilidad
- ¿Cómo diseñar un sistema de alta disponibilidad?
Limitación de corriente
- ¿Cómo limitar el flujo? ¿Cómo lo haces en el trabajo? ¿Cuénteme sobre la implementación específica?
fusible
- ¿Cómo realizar el disyuntor?
- ¿Qué son los marcos de fusibles? ¿Conoce el principio de implementación específico?
- ¿Cómo hacer la selección técnica del marco del fusible? ¿Centinela o Hystrix?
Degradar
- ¿Cómo bajar de categoría?
Arquitectura de microservicio
- El capítulo completo sobre arquitectura de microservicios es una adición adicional y se actualizará más adelante. Los lectores también pueden participar en mejoras adicionales.
- Descripción de la arquitectura de microservicios.
- Migrar de una arquitectura monolítica a una arquitectura de microservicios
- Gestión de datos basada en eventos para microservicios
- Elija una estrategia de implementación de microservicios
- Ventajas y desventajas de la arquitectura de microservicios.
Arquitectura de microservicios Spring Cloud
- ¿Qué son los microservicios? ¿Cómo se comunican los microservicios de forma independiente?
- ¿Cuáles son las diferencias entre Spring Cloud y Dubbo?
- Spring Boot y Spring Cloud, ¿habla sobre tu comprensión de ellos?
- ¿Qué es un disyuntor de servicio? ¿Qué es la degradación del servicio?
- ¿Cuáles son las ventajas y desventajas de los microservicios? Cuéntenos sobre los obstáculos que encontró durante el desarrollo del proyecto.
- ¿Qué pilas de tecnología de microservicios conoces?
- Estrategia de gobernanza de microservicios
- Tanto Eureka como Zookeeper pueden proporcionar funciones de registro y descubrimiento de servicios. ¿Cuál es la diferencia entre ellos?
- ¿Hablemos del proceso de llamada principal del componente de descubrimiento de servicios Eureka?
- ...
Procesamiento masivo de datos
- ¿Cómo encontrar la misma URL entre una gran cantidad de URL?
- ¿Cómo encontrar palabras de alta frecuencia a partir de grandes cantidades de datos?
- ¿Cómo saber la IP que más visita el sitio web de Baidu en un día determinado?
- ¿Cómo encontrar números enteros únicos en una gran cantidad de datos?
- ¿Cómo determinar si existe un número en una gran cantidad de datos?
- ¿Cómo consultar las cadenas de consulta más populares?
- ¿Cómo contar la cantidad de números de teléfono diferentes?
- ¿Cómo encontrar la mediana de 500 millones de números?
- ¿Cómo ordenar por frecuencia de consulta?
- ¿Cómo encontrar los 500 números principales?
- ¿Cuéntame sobre las rutinas comunes para los problemas de TopK en big data?
Tendencias de las estrellas
Nota: este gráfico de tendencias se actualiza automáticamente y periódicamente mediante action-starcharts, autor @MaoLongLong
Proyectos comunitarios de calidad de Doocs.
¡La comunidad tecnológica de Doocs está comprometida a crear un ecosistema de aprendizaje completo y en continuo crecimiento para los desarrolladores de Internet! Los siguientes son algunos proyectos excelentes en Doocs. Los amigos desarrolladores pueden seguir prestando atención.
# | proyecto | describir | calor |
---|
1 | java avanzado | Los ingenieros de Internet Java tienen conocimientos completos de conocimientos avanzados: abarcan conocimientos en áreas como alta concurrencia, distribución, alta disponibilidad, microservicios y procesamiento masivo de datos. |
|
2 | código leet | Una variedad de lenguajes de programación implementan soluciones a problemas como LeetCode, "Sword Pointer Offer (segunda edición)" y "Programmer Interview Code (sexta edición)". |
|
3 | cazador de código fuente | Análisis de código fuente de marcos de componentes comunes de Internet. |
|
4 | jvm | Resumen de conocimientos sobre los principios subyacentes de la máquina virtual Java. |
|
5 | entrevista-de-codificación | Una colección de preguntas de entrevistas de codificación, que incluyen "Los puntos de espada que se pueden ofrecer", "La belleza de la programación", etc. |
|
6 | Maryland | Un editor WeChat Markdown muy conciso. |
|
7 | libros-tecnicos | Una lista de libros técnicos que vale la pena leer. |
|
Contribuyente
Gracias a todos los siguientes amigos por sus contribuciones a la comunidad técnica de Doocs. Haga clic aquí para participar en el mantenimiento del proyecto.
cuenta oficial
La única cuenta pública " Doocs " en la comunidad tecnológica de Doocs, bienvenido a escanear el código QR para seguirla, enfocándose en compartir conocimientos relevantes en el campo técnico y la información más reciente de la industria . Por supuesto, también puedes agregar mi cuenta personal de WeChat (nota: GitHub) para ingresar al grupo de intercambio técnico.
Siga la cuenta pública " Doocs " y responda el PDF para obtener el documento PDF sin conexión de este proyecto (283 páginas en esencia), ¡lo que hace que el aprendizaje sea más conveniente!