A lot of people are asking me, how programmers get high salary, how to achieve an annual salary of 40W+, in fact, summed up in a word, your skills determine your ability has been paid.
So what kind of technical talent can get a high salary in the Java industry? Here’s my summary technique.
Required Knowledge of Java technology
-
To master the Java programming language, including the IO/nio/socket/multi threads/collection/concurrency functions such as the use of;
-
Proficient in JVM (Sun hotspot and IBM J9) memory model, GC garbage collection tuning, etc.
-
Proficient in JVM,JMM,MVC architecture and struts2.
-
Proficient in using Spring, Struts and IBatis to build application systems.
-
Proficient in Servlet, JSP, Freemark and other front-end technologies.
-
Proficient in using Axis to build WebService interface based on SOAP protocol.
-
Proficient in using MAVEN to build projects.
-
Proficient in web services such as Tomcat.
-
Familiar with mysql and other relational databases, familiar with mysql cluster construction.
-
Proficient in NOSQL technology such as Redis.
-
Familiar with TCP and HTTP.
-
Be familiar with nginx and HaProxy configurations.
-
Familiar with javascript, Ajax and other technologies.
-
Familiar with FastDFS and other mainstream distributed file systems.
-
Familiar with JMS, can skillfully use ActiveMQ.
The underlying computer understands memory management/data mining systems
-
How to understand reliability and availability
-
JSP and Sever Lap comparison
-
Database to interface, character set conversion
-
Base stack
-
The JVM optimizes CPU high when analyzing and monitoring
-
Java Curb highlights the details
-
How are distributed cached documents distributed
-
Migrate database vertical split
-
High concurrency How to deal with the front-end high concurrency application layer
-
LB Design Load Balance
-
Load balancing
-
Anti-network attack
-
Notification after data log events are monitored
-
The underlying mechanism for database transaction implementation
-
String space for network attack input
-
Underlying principles of the Quartz framework
-
During database synchronization, data is synchronized without using the database engine to read logs
Some people say that only engineers in big companies or Internet companies can get it. Perhaps yes, small companies or non-internet enterprises with 20,000 is unlikely to be code farmers, should have been transferred to management. There are also regional issues, which are not in my consideration, because other places besides Beijing, Shanghai, Guangzhou, Shenzhen and Hangzhou are also difficult to reach.
Some people mentioned that this level is more than 2W, in fact, the salary is related to the interview performance, but also related to other comprehensive level, such as you are 985, top10, or graduate degree, or know some node, know some big data and so on, or strong expression ability, hit the interviewer pain point will be extra points.
A: If you reach my level, the starting salary will be $20,000, plus additional points for other outstanding performances. But the pure JAVA aspect of the treatment is more consistent. SSH and I really don’t want to hack, 2W level interviews rarely ask about SSH knowledge, should ask about architecture level and design patterns. For example, mybatis manages session and cache. What are the design patterns you are familiar with in Spring, and how do you understand and apply them?
First of all, the monthly salary of 20,000 yuan is too common in BAT, which is usually senior engineer or senior engineer. It is around P6 ~ P7 in Ali, T5 in Baidu, T2-3 in Tencent, T3-1 in JINGdong, AND P6 in Meituan. I don’t know anything else. This level is their main coder level. They work overtime and can solve most problems. However, they still need to cultivate their ability of overall system architecture and in-depth analysis of bottlenecks.
Secondly, there are three main aspects to master the skill tree
The first one is the foundation. For example, I have a deep understanding of collection classes and packages, IO/NIO, JVM, memory model, generics, exceptions, reflection, etc. It is best to read the source code to understand the underlying design. For example, the general interview will ask ConcurrentHashMap, CopyOnWrite, thread pool, CAS, AQS, virtual machine optimization and other knowledge points, because these are absolutely important to the Internet enterprise. Besides, most people can’t get past that, and then they make a scene and say it’s useless. Why interview?
For example, when using a thread pool, the inner layer of the thread pool will surge due to the use of unbounded queues in the case of remote service exceptions. How can you play if you don’t know the thread pool? Another example is the failure to implement true thread-safety because of a misunderstanding of ThreadLocal and using it for thread-safety control. So as a $20,000 JAVA programmer, you have to have this foundation.
Second, you need to have a comprehensive knowledge of Internet technology. Starting at the bottom, you should have a thorough knowledge of mysql, Redis, mongodb, Nginx, Tomcat, RPC, JMS, etc. You want to ask what you need to know, I can give you a big idea.
First of all, for MySQL, you need to know the common parameter Settings, how to select the storage engine, also need to know the common index engine, know how to select. Know how to design tables, how to optimize SQL, and how to tune according to the execution plan. Advanced you need to do sub-database sub-table design and optimization, the general Internet enterprise database is read and write separation, but also vertical and horizontal split, so there is experience in this component.
Then Redis, mongodb are need to understand the principle, need to adjust the parameters, and Nginx and Tomcat are almost all JAVA Internet must match, in fact, very Ali technology stack selection has a little relationship. As far as RPC is concerned, you must have a deep understanding of various network protocols, serialization technologies, SOA, etc. Now widely used RPC framework, in China is Dubbo, you can search by yourself.
As for the JMS related at least to understand the principle of it, generally not specialized in the development of middleware system and support system do not need to know too many details, domestic enterprises are mainly used to activeMQ and Kafka. What you can say to me is more in-depth, Ali P7 is not too big a problem, of course, this also needs to see your architecture ability of the interview performance.
The third is programming ability, programming ideas, algorithm ability, architecture ability. First of all, 2W programmers on the algorithm requirements I think is still relatively low, and then the most advanced red black tree bar, but the sorting and query of the basic algorithm will. Programming philosophy is a must, ask you an AOP and IOC you at least clear, not every design pattern used, but can also understand several. Programming ability this I feel bad to evaluate, but take a 2000W users according to the name and age of the sort of questions can also be handy.
Finally is the architecture ability, this is not to say that you design a high concurrency system, at least let you do a second kill system, the design of rerequest can be quickly done without pit.
That’s the 2W level I said above. If you are lucky and do well in the interview, 3W + is also possible (ಡωಡ).
Source: blog.csdn.net/qq_41790443/article/details/80615421