Haciendo desarrollo de Java en Beijing durante cinco años y ganando un salario mensual de más de 30.000, ¿qué pila de tecnología necesito dominar o dominar?

En primer lugar, un salario mensual de 30.000 yuanes es demasiado común en BAT, generalmente para puestos de ingeniero senior e ingeniero senior. Es alrededor de p6 en Ali, t5 en Baidu, t2-3 en Tencent, t3-1 en JD y p6 en Meituan. No conozco a los demás. Este nivel es su nivel principal de granjero de código. Trabajan muchas horas extra y pueden resolver la mayoría de los problemas, pero aún necesitan cultivar la capacidad general de la arquitectura del sistema y la capacidad de analizar los cuellos de botella en profundidad.

En segundo lugar, el árbol de habilidades que se domina tiene principalmente tres aspectos: el
primero son los básicos.

Por ejemplo, tiene un conocimiento profundo de las clases de colección, paquetes concurrentes, carga de clases, IO / NIO, JVM, modelos de memoria, genéricos, excepciones, reflexión, etc. Es mejor leer el código fuente para comprender el diseño subyacente. Por ejemplo, las entrevistas generales preguntarán sobre puntos de conocimiento como ConcurrentHashMap, CopyOnWrite, grupo de subprocesos, CAS, AQS, optimización de máquinas virtuales, etc., porque estos son absolutamente importantes para las empresas de Internet. Y la mayoría de la gente no puede pasar este nivel y se quejan de que son inútiles, ¿por qué tienen que entrevistar? Por ejemplo, cuando se usa el grupo de subprocesos, debido a que se usa la cola ilimitada, la capa interna se eleva cuando el servicio remoto es anormal. ¿Cómo solucionarlo? Si ni siquiera conoces el grupo de hilos, ¿cómo puedes jugar? Para dar otro ejemplo, debido a un malentendido de ThreadLocal y su uso para el control seguro de subprocesos, no se logró una seguridad real de subprocesos. Y cómo solucionar problemas de pérdida de memoria y cómo optimizar el rendimiento del sistema. Por lo tanto, como programador de JAVA con 30.000 yuanes, esta base es necesaria.

En segundo lugar, debe tener un conocimiento completo de la tecnología de Internet .

Hablando desde abajo, al menos debe tener un conocimiento profundo de mysql, redis, nginx, tomcat, rpc, jms, etc. Tienes que preguntar cuánto necesitas entender, puedo darte un gran problema. En primer lugar, para MySQL, debe conocer la configuración de los parámetros comunes, cómo elegir el motor de almacenamiento, y también debe comprender los motores de índice comunes y saber cómo elegir. Sepa cómo diseñar tablas, cómo optimizar SQL y cómo ajustar según el plan de ejecución. Para el nivel avanzado, es necesario diseñar y optimizar la sub-base de datos y las sub-tablas. Generalmente, las bases de datos de las empresas de Internet están separadas de la lectura y la escritura, y se dividen vertical y horizontalmente, por lo que este también es un componente experimentado. Entonces redis es casi una habilidad necesaria, y nginx y tomcat son casi necesarios para JAVA Internet. En cuanto al rpc relacionado, hay muchos, varios protocolos de red, tecnologías de serialización, SOA, etc., es necesario tener un conocimiento profundo. Ahora, el marco rpc ampliamente utilizado es dubbo en China. También hay una pila de tecnología relacionada con la nube de primavera que es de código abierto, y puede buscar usted mismo. En cuanto a los relacionados con jms, al menos debes entender el principio. En general, aquellos que no están especializados en el desarrollo de sistemas de middleware y sistemas de soporte no necesitan conocer demasiados detalles. Las empresas nacionales utilizan principalmente activeMQ y kafka. Todo lo que puedes decirme es investigación, y Ali p7 no es demasiado problemático.

El tercero es la capacidad de programación, el pensamiento de programación, la capacidad de algoritmos y la capacidad de arquitectura .

En primer lugar, creo que los programadores de 2W tienen requisitos relativamente bajos para los algoritmos. No importa lo avanzados que sean, son la mayoría de árboles rojo-negro, pero los algoritmos básicos para ordenar y consultar deben ser buenos. El pensamiento de programación es imprescindible. Pregúntale sobre AOP y IOC. Al menos lo tienes claro. El patrón de diseño no dice que hayas usado cada uno de ellos, pero también puedes entender algunos. No creo que sea fácil evaluar la capacidad de programación, pero es fácil clasificar a un usuario de 2000 W por nombre y edad. Por último, está la capacidad arquitectónica. Este tipo de sistema no significa que tengas que diseñar un sistema lo más potente posible. Al menos te permite construir un sistema de picos. Debes tener una idea y una dirección claras.

En vista de los tres puntos anteriores, el editor ha compilado un conjunto completo de notas de estudio de Java, ¡suficiente para que su salario mensual alcance aproximadamente 3W! (¡Para no afectar la experiencia de lectura de todos, el método gratuito para obtener esta nota se encuentra al final del artículo!)

Artículos de JVM

Hilo

Área de memoria JVM ( contador de programa (subproceso privado), pila de máquina virtual (subproceso privado), área de método local (subproceso privado), montón (intercambio de heap-subproceso) -área de datos en tiempo de ejecución, área de método / generación permanente (intercambio de subprocesos)

¿Cómo obtener un salario mensual de 30.000 yuanes para el desarrollo de Java en Beijing, Shanghai, Shenzhen y Hangzhou, y qué nivel de tecnología se necesita?

 

Memoria en tiempo de ejecución de JVM ( nueva generación, antigua generación, generación permanente )

Recolección de basura y algoritmos ( cómo determinar basura, algoritmo de barrido de marcas (Mark-Sweep), algoritmo de copia (copia), algoritmo de clasificación de marcas (Mark-Compact), algoritmo de recolección generacional )

¿Cómo obtener un salario mensual de 30.000 yuanes para el desarrollo de Java en Beijing, Shanghai, Shenzhen y Hangzhou, y qué nivel de tecnología se necesita?

 

JAVA cuatro tipos de referencia (referencia fuerte, referencia suave, referencia débil, referencia virtual )

Algoritmo de recopilación generacional de GC VS algoritmo de recopilación de particiones ( algoritmo de recopilación generacional, algoritmo de recopilación de particiones )

¿Cómo obtener un salario mensual de 30.000 yuanes para el desarrollo de Java en Beijing, Shanghai, Shenzhen y Hangzhou, y qué nivel de tecnología se necesita?

 

Recolector de basura de GC (recolector de basura serial (un solo hilo, algoritmo de copia), recolector de basura ParNew (serial + multihilo), recolector de basura en paralelo (algoritmo de replicación multiproceso, alta eficiencia), recolector Serial Old (algoritmo de clasificación de marcas de un solo subproceso) ), Colector antiguo paralelo (algoritmo de borrado de marcas de subprocesos múltiples), recopilador CMS (algoritmo de borrado de marcas de subprocesos múltiples) )

¿Cómo obtener un salario mensual de 30.000 yuanes para el desarrollo de Java en Beijing, Shanghai, Shenzhen y Hangzhou, y qué nivel de tecnología se necesita?

 

JAVA IO / NIO ( modelo IO con bloqueo, modelo IO sin bloqueo, modelo IO multiplexado, modelo IO controlado por señal, modelo IO asíncrono, paquete JAVA IO, JAVA NIO, canal, búfer, selector )

¿Cómo obtener un salario mensual de 30.000 yuanes para el desarrollo de Java en Beijing, Shanghai, Shenzhen y Hangzhou, y qué nivel de tecnología se necesita?

 

Mecanismo de carga de clases de JVM ( carga, verificación, preparación, resolución, referencia de símbolo, referencia directa, inicialización, constructor de clase <cliente>, dispositivo de adición y recorte de clase, delegación de padres, OSGI (sistema de modelo dinámico) )

¿Cómo obtener un salario mensual de 30.000 yuanes para el desarrollo de Java en Beijing, Shanghai, Shenzhen y Hangzhou, y qué nivel de tecnología se necesita?

 

Colección JAVA

Herencia e implementación de la interfaz

List ( ArrayList (matriz), Vector (implementación de matriz, sincronización de subprocesos), LinkList (lista vinculada) )

¿Cómo obtener un salario mensual de 30.000 yuanes para el desarrollo de Java en Beijing, Shanghai, Shenzhen y Hangzhou, y qué nivel de tecnología se necesita?

 

Establecer ( HashSet (Hash 表) 、 TreeSet (二叉树) 、 LinkHashSet (HashSet + LinkedHashMap)

¿Cómo obtener un salario mensual de 30.000 yuanes para el desarrollo de Java en Beijing, Shanghai, Shenzhen y Hangzhou, y qué nivel de tecnología se necesita?

 

Mapa ( HashMap (matriz + lista vinculada + árbol rojo-negro), ConcurrentHashMap, HashTable (seguro para subprocesos), TreeMap (ordenable), LinkHashMap (orden de inserción de registros) )

¿Cómo obtener un salario mensual de 30.000 yuanes para el desarrollo de Java en Beijing, Shanghai, Shenzhen y Hangzhou, y qué nivel de tecnología se necesita?

 

Múltiples subprocesos y alta concurrencia

Base de conocimientos concurrente de JAVA

Método de implementación / creación de subprocesos JAVA ( heredando la clase Thread, implementando la interfaz Runnable, ExecutorService, Callable <Class>, subproceso futuro con valor de retorno, basado en el grupo de subprocesos )

¿Cómo obtener un salario mensual de 30.000 yuanes para el desarrollo de Java en Beijing, Shanghai, Shenzhen y Hangzhou, y qué nivel de tecnología se necesita?

 

4 tipos de grupos de subprocesos ( newCachedThreadPool, newFixedThreadPool, newScheduledThreadPool, newSingleThreadExecutor )

Ciclo de vida del hilo ( nuevo estado (NUEVO), estado listo (RUNNABLE), estado en ejecución (EJECUTANDO), estado bloqueado (BLOQUEADO), muerte del hilo (MUERTO) )

¿Cómo obtener un salario mensual de 30.000 yuanes para el desarrollo de Java en Beijing, Shanghai, Shenzhen y Hangzhou, y qué nivel de tecnología se necesita?

 

4 formas de terminar el hilo ( fin de la operación normal, use la bandera de salida para salir del hilo, el método de interrupción para terminar el hilo, el método de parada para terminar el hilo (el hilo no es seguro) )

¿Cómo obtener un salario mensual de 30.000 yuanes para el desarrollo de Java en Beijing, Shanghai, Shenzhen y Hangzhou, y qué nivel de tecnología se necesita?

 

La diferencia entre dormir y esperar

La diferencia entre empezar y correr

Subproceso de fondo JAVA

¿Cómo obtener un salario mensual de 30.000 yuanes para el desarrollo de Java en Beijing, Shanghai, Shenzhen y Hangzhou, y qué nivel de tecnología se necesita?

 

Bloqueo JAVA (bloqueo optimista, bloqueo pesimista, bloqueo de giro, bloqueo de sincronización sincronizada, ReentrantLock, semáforo semáforo, AtomicInteger, bloqueo reentrante (bloqueo recursivo), bloqueo justo y bloqueo injusto, bloqueo de lectura-escritura ReadWriteLock, bloqueo compartido y exclusivo Cerraduras, cerraduras de peso pesado (Bloqueo Mutex), cerraduras ligeras, cerraduras sesgadas, cerraduras segmentadas, optimización de cerraduras )

¿Cómo obtener un salario mensual de 30.000 yuanes para el desarrollo de Java en Beijing, Shanghai, Shenzhen y Hangzhou, y qué nivel de tecnología se necesita?

 

Métodos básicos de subproceso ( subproceso en espera (esperar), subproceso inactivo (suspensión), ceder subproceso (rendimiento), interrupción del subproceso (interrumpir), unirse a la espera de que terminen otros subprocesos, ¿por qué usar el método join0 ?, activación del subproceso (notiy), otros métodos )

¿Cómo obtener un salario mensual de 30.000 yuanes para el desarrollo de Java en Beijing, Shanghai, Shenzhen y Hangzhou, y qué nivel de tecnología se necesita?

 

Cambio de contexto de hilo ( proceso, contexto, registro, contador de programa, PCB- "marco de cambio", actividad de cambio de contexto, causa del cambio de contexto de hilo )

Sincronización y punto muerto

Principio del grupo de subprocesos ( reutilización de subprocesos, composición del grupo de subprocesos, estrategia de rechazo, proceso de trabajo del grupo de subprocesos de Java )

¿Cómo obtener un salario mensual de 30.000 yuanes para el desarrollo de Java en Beijing, Shanghai, Shenzhen y Hangzhou, y qué nivel de tecnología se necesita?

 

Principio de cola de bloqueo de JAVA ( el método principal de cola de bloqueo, cola de bloqueo en Java, ArrayBlockingQueue (justo, injusto), LinkedBlockingQueue (dos bloqueos independientes para mejorar la concurrencia), PriorityBlockingQueue (compare con la prioridad de implementación de clasificación), DelayQueue (invalidación de caché, tareas de sincronización ), SynchronousQueue (no almacena datos, se puede utilizar para transferir datos), LinkedTransferQueue, LinkedBlockingDeque )

¿Cómo obtener un salario mensual de 30.000 yuanes para el desarrollo de Java en Beijing, Shanghai, Shenzhen y Hangzhou, y qué nivel de tecnología se necesita?

 

CyclicBarrier. CountDownLatch. Uso de Semaphore

El rol de la palabra clave volátil (visibilidad variable, reordenamiento prohibido)

Cómo compartir datos entre dos hilos

¿Cómo obtener un salario mensual de 30.000 yuanes para el desarrollo de Java en Beijing, Shanghai, Shenzhen y Hangzhou, y qué nivel de tecnología se necesita?

 

Rol ThreadLocal (almacenamiento local de subprocesos)

La diferencia entre sincronizado y ReentrantLock

ConcurrentHashMap concurrencia ( reducir la granularidad de bloqueo, bloqueo de segmento ConcurrentHashMap )

¿Cómo obtener un salario mensual de 30.000 yuanes para el desarrollo de Java en Beijing, Shanghai, Shenzhen y Hangzhou, y qué nivel de tecnología se necesita?

 

Programación de subprocesos utilizada en Java ( programación preventiva, programación cooperativa, implementación de la programación de subprocesos JVM (programación preventiva), abandono de la CPU )

Algoritmo de programación de procesos (algoritmo de programación de prioridad, algoritmo de programación de prioridad alta, algoritmo de programación por turnos basado en el intervalo de tiempo )

¿Qué es CAS (mecanismo de bloqueo optimista de comparación e intercambio-giro de bloqueo)?

¿Qué es AQS (Abstract Queue Synchronizer)?

¿Cómo obtener un salario mensual de 30.000 yuanes para el desarrollo de Java en Beijing, Shanghai, Shenzhen y Hangzhou, y qué nivel de tecnología se necesita?

 

Principios de primavera

Características del resorte ( ligero, inversión de control, orientado al aspecto, contenedor )

Componentes del núcleo del resorte

Módulos comunes de Spring

Paquete principal de primavera

Anotaciones comunes de primavera

¿Cómo obtener un salario mensual de 30.000 yuanes para el desarrollo de Java en Beijing, Shanghai, Shenzhen y Hangzhou, y qué nivel de tecnología se necesita?

 

Integración de terceros de Spring

Principio de Spring IOC ( concepto, vista de alto nivel del contenedor Spring, implementación del contenedor IOC, alcance de Spring Bean, ciclo de vida de Spring Bean, inyección de dependencia de Spring de cuatro formas, 5 formas diferentes de ensamblaje automático )

¿Cómo obtener un salario mensual de 30.000 yuanes para el desarrollo de Java en Beijing, Shanghai, Shenzhen y Hangzhou, y qué nivel de tecnología se necesita?

 

Principio Spring APO ( concepto, concepto central AOP, dos modos proxy AOP, principio de realización )

¿Cómo obtener un salario mensual de 30.000 yuanes para el desarrollo de Java en Beijing, Shanghai, Shenzhen y Hangzhou, y qué nivel de tecnología se necesita?

 

Principio de Spring MVC

Principios de Spring Boot ( crear aplicaciones Spring independientes, Tomcat integrado, no es necesario implementar archivos WAR, simplificar la configuración de Maven, configurar Spring automáticamente, proporcionar funciones listas para producción, como indicadores, controles de estado y configuración externa, absolutamente sin generación de código y XML No se requiere configuración )

¿Cómo obtener un salario mensual de 30.000 yuanes para el desarrollo de Java en Beijing, Shanghai, Shenzhen y Hangzhou, y qué nivel de tecnología se necesita?

 

Principios de JPA ( transacciones, transacciones locales, transacciones distribuidas, compromiso de dos fases )

Caché de mybatis (primer nivel, segundo nivel)

Arquitectura Tomcat

¿Cómo obtener un salario mensual de 30.000 yuanes para el desarrollo de Java en Beijing, Shanghai, Shenzhen y Hangzhou, y qué nivel de tecnología se necesita?

 

Artículos de base de datos

Motor de almacenamiento ( concepto, InnoDB (árbol B +), TokuDB (nodo Fratal Tree con datos), MyIASM, memoria )

índice

Base de datos de tres paradigmas . Primer paradigma (las primeras columnas NF no están subdivididas), segundo paradigma (segundo NF: cada tabla solo describe algo, tercer paradigma (tercero NF: no hay dependencia transitiva en columnas de claves no primarias) )

¿Cómo obtener un salario mensual de 30.000 yuanes para el desarrollo de Java en Beijing, Shanghai, Shenzhen y Hangzhou, y qué nivel de tecnología se necesita?

 

La base de datos es una transacción ( Atomicidad, Consistencia, Aislamiento, Durabilidad )

Procedimientos almacenados (conjunto de sentencias SQL para funciones específicas)

Trigger (un programa que se puede ejecutar automáticamente)

¿Cómo obtener un salario mensual de 30.000 yuanes para el desarrollo de Java en Beijing, Shanghai, Shenzhen y Hangzhou, y qué nivel de tecnología se necesita?

 

Estrategia de concurrencia de la base de datos ( bloqueo optimista, bloqueo pesimista, marca de tiempo )

Bloqueos de base de datos (bloqueos a nivel de fila, bloqueos a nivel de tabla, bloqueos a nivel de página )

Bloqueo distribuido basado en Redis

Tabla de clasificación ( segmentación vertical (según módulos funcionales), segmentación horizontal (según reglas de almacenamiento) )

Acuerdo de presentación en dos fases ( fase de preparación, fase de presentación, deficiencias )

¿Cómo obtener un salario mensual de 30.000 yuanes para el desarrollo de Java en Beijing, Shanghai, Shenzhen y Hangzhou, y qué nivel de tecnología se necesita?

 

Protocolo de compromiso trifásico ( fase CanCommit, fase PreCommit, fase doCommit )

Transacción flexible

CAP ( consistencia, disponibilidad, tolerancia de partición )

¿Cómo obtener un salario mensual de 30.000 yuanes para el desarrollo de Java en Beijing, Shanghai, Shenzhen y Hangzhou, y qué nivel de tecnología se necesita?

 

El contenido de este punto de conocimiento es realmente demasiado y un artículo no se puede escribir en absoluto. Permítanme mostrarles el contenido de esta nota.

¿Cómo obtener un salario mensual de 30.000 yuanes para el desarrollo de Java en Beijing, Shanghai, Shenzhen y Hangzhou, y qué nivel de tecnología se necesita?

Cada parte de esta nota cubre una gran cantidad de contenido, desde básico hasta avanzado. Al mismo tiempo, esta nota tiene casi 1000 páginas, todas las cuales son el resumen de las partes más esenciales del propio autor de la nota. Hoy es un regalo gratis y debe recibirse gratis. Amigo, ayúdame con un clic y tres enlaces a este artículo + sígueme, escanea el código para obtenerlo.

Supongo que te gusta

Origin blog.csdn.net/weixin_45825082/article/details/109135090
Recomendado
Clasificación