Java 30, 000 programmers a month, What level of technology is needed?
When I was at a party with my friends recently, Asked a question, sayJava How can programmers earn 20000 yuan a month, To what extent does the technical level need to be achieved? People replied that this can only be obtained by engineers of large enterprises or Internet enterprises. Maybe yes. It's not likely that small companies or non internet companies will get 20000 yuan from the market, It should have been transferred to management. And regional issues, This is out of my consideration, Because in addition to beishangguangshenhang, It's hard to get anywhere else.
Others say that this level is more than2w, In fact, salary is related to interview performance, It's also related to other comprehensive levels, For example, you are985,top10, Or graduate degree, Or understandnode, Understand big data, etc, Or strong expression ability, If you hit the interviewer's pain point, you will get more points. If you are up to my standard, The starting salary is2w, Other excellent performances will be added on this basis. But pureJAVA The treatment is quite consistent. AlsoSSH I really don't want black,2w Level interviews are rarely askedSSH Knowledge, It is also about the architecture level, including design patterns and underlying principles. for examplemybatis How to managesession andcache Of.spring What are the familiar design patterns in it, How do you understand and apply it.
In fact, Internet related knowledge is easy to access after going to Internet companies, It's not that difficult. If you're in a front line business, Some of the points I said are almost always with you, Don't worry about it. Many new college students in our company can understand some middleware systems in half a year, It's not about how hard it is, Just less contact, I'm afraid of the unknown. I'm just confused.
I'm here to provide an advanced roadmap for programmers who want to reach this level or even higher, Mainly aimed at2 reach5 Years and above working experienceJava Developer, From breadth to depth, things are more comprehensive, The technology in it includesJava High concurrence, Micro service, Source code analysis, High performance, Distributed technology, In fact, all of these technologies must have been touched, Let's take a look at it in detail.（ Pictures can be saved）
First of all, the monthly salary of 20000 yuan isBAT It's so common, Generally senior engineer and senior engineer positions, Ali isp6~p7 About, In Baidu ist5 About, Tencent ist2-3 About, Jingdong ist3-1, The American regiment isp6 About, I don't know anything else. This level is their main code farming level, Overtime, Can solve most problems, However, the ability of overall system architecture and in-depth analysis of bottlenecks still need to be cultivated.
Secondly, there are three aspects to master the skill tree：
The first is the foundation. For example, for a collection class, Contract issuance,IO/NIO,JVM, Memory model, generic paradigm, abnormal, reflex, Wait for further understanding, It's better to read the source code to understand the underlying design. For example, the general interview will askConcurrentHashMap,CopyOnWrite, Thread pool,CAS,AQS, Knowledge points of virtual machine optimization, Because these are absolutely important for Internet companies. And the average person can't get through it, It's no use talking about it, Why interview. Let me give you an example. When using thread pools, Because unbounded queues are used, Internal surge caused by remote service exception, How to solve it? If you don't know the connection, How do you play? Let me give you another example. Due toThreadLocal Error understanding, Use it for thread safety control, Which leads to the failure to achieve real thread safety. So as a man, he took 20000 yuanJAVA The basis of programmer is.
Second, you need to have a comprehensive knowledge of Internet technology. From the bottom, You need to know moremysql,redis,mongodb,nginx,tomcat,rpc,jms Etc. You have to ask how much you need to know, I can give you a big sigh. First, forMySQL, You need to know the common parameter settings, How to choose storage engine, You also need to understand the common indexing engines, Know how to choose. Know how to design tables, How to optimizesql, How to optimize according to the execution plan. Advanced you need to do the design and optimization of sub database and sub table, Generally, the database of Internet enterprises is read-write separation, It also splits vertically and horizontally, So this is also an experienced component. Then?redis,mongodb All need to understand the principle, Need to adjust parameters, andnginx andtomcat Almost all of them areJAVA Internet must match, In fact, the choice of Ali's technology stack has something to do with it. As forrpc There's more to it, Various network protocols are required, Serialization technology,SOA Wait, You need to have a deep understanding. Now it is widely usedrpc frame, At homedubbo 了, Search by yourself. As forjms At least we need to understand the principle, Generally speaking, those who are not specialized in developing middleware system and supporting system do not need to know too much details, Domestic enterprises usually useactiveMQ andkafka. What you can say to me is more in-depth study, Alip7 It's not a big problem, Of course, it depends on your interview performance in terms of architecture ability.
The third is programming ability, Programming idea, Algorithmic ability, Architectural capability. First2W I think the requirements of programmers for algorithms are still relatively low, No matter how advanced it is, it's the most red and black trees, But the basic algorithms of sorting and querying should be able to. Programming idea is necessary, Ask you a question.AOP andIOC You're at least clear, Design patterns are not used, But you can also understand a few. I don't think it's good to evaluate the programming ability, But take one2000W Users can sort the questions according to their names and ages. Finally, architecture capability, This is not to say that you need to design a system with multiple forces and high concurrency, At least let you make a seckill system, The design of anti weight request can be done quickly without pit.
It's not all about technology, But a lot of things an interviewer has to ask, So you can't help but know, I would like to help those who need this information. Those who question me go to an interview and see if I'm right, You can share it again if you have the chance, Let's talk about the InternetJAVA Interview questions, I can put90% List all the topics for you. I don't doubt that I can get the skill trees25K perhaps30K+ Possibility, But now the Internet is still relatively frothy..
That's what I said2w standard, If you're lucky, Good interview performance,3w+ Maybe
For these technologies, I recorded some videos with my friends, It includesJava High concurrence, Distributed, Micro service,JVM, Source code analysis and other videos, Some areBAT Interview video waiting for Internet, Here to share, Those who are interested in these technologies can add mineJava Back end technology exchange group|：854393687.