¿Cómo puede un programador desarrollador Java novato ganar 20.000 al mes?

El primero es la base, como una comprensión profunda de las clases de recopilación, subcontratación, IO/NIO, JVM, modelo de memoria, genéricos, excepciones, reflexión, etc. Lo mejor es leer el código fuente para comprender el diseño subyacente. Por ejemplo, las entrevistas generales preguntarán sobre ConcurrentHashMap, CopyOnWrite, grupo de subprocesos, CAS, AQS, optimización de máquinas virtuales y otros puntos de conocimiento, porque son absolutamente importantes para las empresas de Internet. Y la mayoría de la gente no puede pasar este nivel y aun así hacer escándalo por ello. No sirve de nada decir esto. ¿Por qué entrevista? Por ejemplo, cuando se utiliza un grupo de subprocesos, debido a que se utiliza una cola ilimitada, la capa interna aumentará cuando el servicio remoto sea anormal. ¿Cómo solucionarlo? ¿Ni siquiera sabes cómo utilizar el grupo de subprocesos? Para otro ejemplo, debido a una mala comprensión de ThreadLocal, su uso para el control de seguridad de subprocesos no logra lograr una verdadera seguridad de subprocesos. ¿Me culpas? Entonces, como programador de JAVA con 20.000 personas, esta base es necesaria.

En segundo lugar, es necesario tener un conocimiento exhaustivo de la tecnología de Internet. Desde el nivel inferior, al menos debe tener un conocimiento profundo de mysql, redis, mongodb, nginx, tomcat, rpc, jms, etc. Si me preguntas cuánto necesitas saber, puedo darte una gran idea. Primero, para MySQL, debe comprender la configuración de parámetros comunes y cómo elegir un motor de almacenamiento. También es necesario comprender los motores de indexación comunes y saber cómo elegirlos. Sepa cómo diseñar tablas, cómo optimizar SQL y cómo ajustar según los planes de ejecución. Avanzado necesitas hacer el diseño y optimización de subbases de datos y subtablas. Generalmente, las bases de datos de las empresas de Internet están separadas de la lectura y la escritura, y se dividirán vertical y horizontalmente, por lo que también se incluye este componente de experiencia. Entonces redis y mongodb necesitan comprender los principios y ajustar los parámetros, mientras que nginx y tomcat son casi necesarios para JAVA Internet. De hecho, tiene algo que ver con la elección de la pila tecnológica por parte de Alibaba. En cuanto a rpc, hay mucho por hacer. Debe tener un conocimiento profundo de varios protocolos de red, tecnologías de serialización, SOA, etc. El marco rpc ampliamente utilizado en China ahora es dubbo, que usted mismo puede buscar. En cuanto a jms, al menos debes comprender los principios. Generalmente, las personas que no están especializadas en el desarrollo de sistemas middleware y sistemas de soporte no necesitan conocer demasiados detalles. activeMQ y kafka son comúnmente utilizados por empresas nacionales. Todo lo que puedas decirme lo he investigado en profundidad. Creo que Ali p6 está bien. Por supuesto, esto depende de su desempeño en la entrevista en términos de sus habilidades arquitectónicas.

El tercero es la consideración de las capacidades de programación, las ideas de programación, las capacidades de los algoritmos y las capacidades arquitectónicas. En primer lugar, creo que los programadores de 2W tienen requisitos de algoritmos relativamente bajos. Los más avanzados son los árboles rojo-negro, pero los algoritmos básicos para ordenar y consultar siguen siendo buenos. Las ideas de programación son imprescindibles. Me gustaría preguntarle sobre AOP y COI. Al menos lo sabes. No dices que has utilizado todos los patrones de diseño, pero también puedes comprender profundamente 14 o 15 tipos. Creo que no es fácil evaluar la capacidad de programación, pero es fácil pedirle a un usuario de 2000 W que clasifique por nombre y edad. Finalmente, está la capacidad de la arquitectura. Esto no significa que deba diseñar un sistema de alta concurrencia, al menos le permite crear un sistema de venta flash, y el diseño para evitar solicitudes repetidas se puede completar rápidamente sin usarlo.