At a recent party with friends, I asked a question about how a Java programmer can earn 30,000 yuan a month and what level of skill he needs to achieve. The answer is that only engineers in big companies or Internet companies can get it. Perhaps yes, small companies or non-internet enterprises with twenty thousand 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 3W, 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 are up to what I said, the starting salary will be $3 to $40 million, plus other outstanding achievements. But the pure JAVA aspect of the treatment is more consistent. SSH is really not my fault. 3W level interviews rarely ask about SSH knowledge, but they also ask about architecture level and design patterns and underlying principles. 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?
In fact, Internet related knowledge to the Internet company is very easy to contact, not what difficult. If you are in a front-line business, the points I mentioned are with you almost all the time, so don’t worry. Many new college students in our company can understand some middleware systems very well within half a year. It is not that it is difficult, but that they have little contact with them and are afraid and confused about unknown things.
I am here to those who want to reach this height to even higher programmers to provide a advanced map, mainly aimed at 2 to 5 years or above working experience in Java developer, from the span to depth is relatively comprehensive, the inside of the Java technology includes high concurrency, micro service, source code analysis, high performance, such as distributed technology, In fact, these technologies must have been exposed to everyone, so let’s take a look in detail.
Distributed project
High concurrency/high performance
Performance Optimization Topics
Source Code Analysis topics
Recommend an exchange learning group: 697579751, which will share some veteran architects recorded video: Spring, MyBatis, Netty source code analysis, high concurrency, high performance, distributed, microservice architecture principle, JVM performance optimization these become the architect’s necessary knowledge system. I can also get free learning resources, which I benefit a lot from now
First of all, the monthly salary of 30,000 yuan is too common in BAT. Generally, it is the position of senior engineer or senior engineer, which 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 about other things. 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 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.
It’s not for you to master all the technology, but there are a lot of things the interviewer will have to ask for, so you can’t help but know and want to help those who need the information. For those of you who doubt me, go to the interview to see if I’m right. If you have the opportunity to share again, let’s talk about the JAVA interview questions on the Internet. I can list 90% of the questions for you. I don’t really doubt that it’s possible to get 25K or 30K+ on any of these skill trees, but the Internet is still relatively bubbly right now.
That’s the 2W level I said above. If you are lucky and perform well in the interview, 4W+ is also possible!