The monthly salary of Java development in Beijing, Shanghai and Guangzhou is 20K. How to do it and what to write?

This question may be said by many people that this is only available to engineers of large enterprises or Internet companies. Maybe yes, it is unlikely that small companies or non-Internet companies who get 20,000 are code farmers, and they should have been transferred to management. There are also regional issues, which are not within my scope of consideration, because in addition to Beijing, Shanghai, Guangzhou, Shenzhen and Hangzhou, other places are generally difficult to achieve.

Some people mentioned that this level is more than 2w. In fact, the salary is related to the interview performance and other comprehensive levels. For example, if you are 985, top10, or a graduate degree, you may also know a little about node and big data, etc., or The ability to express is strong, and hitting the interviewer's pain point will add points. If you reach the level I said, the starting salary is 2w, and there are other excellent performances that will add points on this basis. And SSH is really not something I want to hack. 2w level interviews rarely ask about SSH knowledge. If you want to ask, you also ask about architecture level and design pattern knowledge. For example, how mybatis manages sessions and caches. What are the design patterns you are familiar with in spring, how do you understand them and how do you apply them.

First of all, in terms of BAT, this monthly salary is very common. Generally, there are positions for senior engineers and senior engineers. In Ali it is around p6~p7, in Baidu it is around t5, in Tencent it is around t2-3, in JD. However, this is the main code farmer level of BAT. It will work more overtime and can solve most problems. However, the overall system architecture ability and the ability to analyze bottlenecks in depth still need to be cultivated.

Secondly, the skill tree mastered mainly has three aspects:

The first is the foundation. For example, if you have an in-depth understanding of collection classes, concurrent 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 about ConcurrentHashMap, CopyOnWrite, thread pool, CAS, AQS, virtual machine optimization and other knowledge points, because these are absolutely important to Internet enterprises. But many people can't pass this test, and they usually complain that these things are not of any use, and that there is no reason for interviewing, why do you need an interview. For example, when using a thread pool, because of the use of an unbounded queue, the memory soars in the event of a remote service exception. How to solve it? If you don't know the thread pool, how do you solve it? As another example, due to the misunderstanding of ThreadLocal, it is used to control thread safety, resulting in failure to achieve true thread safety. So as a JAVA programmer who wants to get 20,000, this foundation is necessary.

Second, you need to have a comprehensive knowledge of Internet technology. Starting from the bottom, you must at least have an in-depth knowledge of mysql, redis, mongodb, nginx, tomcat, rpc, jms, etc. If you ask how much you need to know, here I will tell you a big one. First of all, let's talk about MySQL. You need to know the common parameter settings, how to choose the storage engine, and also need to know the common indexing engine and know how to choose. Know how to design tables, how to optimize SQL, and how to tune according to the execution plan. For advanced ones, you need to do the design and optimization of sub-databases and sub-tables. Generally, the databases of Internet companies are separated from reading and writing, and they are also split vertically and horizontally, so there is also an element of experience in this. Then redis and mongodb all need to understand the principle and adjust the parameters, and nginx and tomcat are almost all JAVA Internet must-haves, in fact, it has something to do with Alibaba's technology stack selection. As for rpc-related things, there are many network protocols, serialization technologies, SOA, etc., you must have a deep understanding. Now the widely used rpc framework is dubbo in China, you can search for it yourself. As for the principles related to jms, at least you have to understand it. Generally speaking, it is not necessary to understand too many details for the development of middleware systems and support systems in general. The main ones commonly used by domestic enterprises are activeMQ and kafka. If you can pat your chest and say that you have researched all these in-depth, then you may not have a big problem when you interview for Alibaba p7. Of course, this generally depends on your interview performance in terms of architecture ability.

The third is programming ability, programming thinking, algorithm ability, and architectural ability. First of all, 2W programmers don't have very high requirements for algorithms. Maybe the most advanced ones are red-black trees, but the basic sorting and query algorithms are at least good. Programming thinking is a must. If you ask you about AOP and IOC, you should at least be clear. Design patterns do not require you to use each of them, but at least you should be able to understand several of them. In fact, I don't think it's easy to evaluate the programming ability, but it can be easily solved by taking a 2000W user sorted by name and age. The last is the architectural ability. This does not mean that you need to design a system with high concurrency, but at least let you make a seckill system. The design of anti-request can be done quickly without any pitfalls.

The above is the level that I said 2w should reach. If you are lucky and perform well in the interview, 3w+ is not impossible~

Next, let's go to the recruitment website to actually find a JD with a monthly salary of more than 2w.

Alibaba

analyze:

1. "NIO" -> honestly study the source code and principle of netty, to ensure that he can't ask you; "class loading principle" -> cliché, remember how a delegate, a classloader can cause memory leaks; "Dynamic proxy" , CGLIB" -> It must be asking you how to generate proxy classes, what are the similarities and differences between the two. In this regard, it is recommended that you can find several relatively high-quality blogs on the Internet. In addition, I estimate that you will need to combine spring to answer to a large extent, so let's take a look at spring's aop; "the principle of GC" -> this is amazing, there are many kinds of GC, what kind of principle is it? ? But let me tell you as an old programmer, just take a good look at CMS GC and G1 GC. CMS answer is definitely OK, G1 is purely icing on the cake, leave an impression on the interviewer that you are pursuing technology; "JVM memory model" -> How does the JVM have a memory model? Is it the memory model of the Java language? There is nothing to say, take a good look at the Java language specification; "performance optimization methods" -> you need to play here, how to improve locks, how to be asynchronous, how to use cache, how to choose a suitable GC algorithm, how to adjust Hotspot VM The ratio of each generation, blabla (there should be a vomiting expression here, this kind of question is the most annoying, if you have enough confidence, put a sentence "specific analysis of specific problems", I respect you as a man)

2. "Understanding the basics of concurrency becomes optimal" -> I don't understand it, it feels like nonsense, no matter what. For concurrency, take a good look at the classes in the java.util.concurrent package.

3. "Have practical development skills, be proficient in using Eclipse, Idea, familiar with common debugging methods and debugging skills, ant/svn/maven, as for troubleshooting experience of intractable diseases" -> Work for a period of time, right? ant and svn are not cool enough at all. It can be seen that either Ali's people are more conservative, or Ali's technology is very old-fashioned (he hides silently here).

4. blabla

To sum up, Ali's requirements are generally lower than Meituan, but the salary is higher than Meituan ( only the comparison of these two JDs ! Specially bold). So the question is, is Meituan pretending to be coercive, recruiting people with high requirements and doing things with low requirements; or Ali sb, recruiting people with low requirements and paying high wages? Of course, there is another possibility, that is, the hr that posted this JD is sb. In general, it seems that it is not a big problem to get an offer from Meituan, but not from Ali. Therefore, as a promising young man of high quality, he should ask himself (serious face) with the standards of Meituan.

Meituan

analyze:

1. First of all, the first solid basic computer skills and ability to write code are relatively general, too subjective. Let's put it aside for now and come back to review it later.

2. "Proficient in Java and object-oriented design and development" => working for more than one year; "in-depth research on some Java technologies" => proficient in various operations of IO, or a little research on the Java memory model, there are two in Hand, the interviewer will definitely admire you, and the interview will naturally add points; "I have studied the source code of excellent open source software and have experience" => You can go to Github to find a few projects with more than one star to see it, it is recommended Netty, not more, just one.

3. "Understand SOA architecture concepts and implementation technologies; be familiar with common design patterns" => Wikipedia welcomes you, just take a look; "Proficient in Spring, myBatis and other frameworks" => Go through the source code

4. "Proficient in MySQL application development, database principles and common performance optimization and expansion techniques" => You can buy a mysql book to read (QAQ) "NoSQL, Queue principles, usage scenarios and limitations" => Take a good look Just redis

5. "http protocol search engine" => Wikipedia; "cache" => Google Guava cache, memcached, redis; "jvm tuning" => master jvm parameters (serious face); "serialization" => Google protocol buffer ; "nio" => netty; "RPC call framework" => dubbo (garbage)

6. "xxx first" => have the best, don't forget

7. Meituan should not be able to take the 2b test logic questions or make sharp turns, so it must be related to the projects you have done here. Usually asked, 1⃣️ project structure, why choose this and not that; 2⃣️ What is the most challenging/complex/blabla problem encountered, and how to solve it

8. "High degree of entrepreneurial spirit and commitment" => You don't have to work overtime every day, but you can work overtime if you encounter work needs and emergencies. You must show this attitude during the interview, haha; "Technology, business, blabla "=> Can't just focus on technology, must combine business to answer interview questions

Ok, let’s go back to the first item, “Basic computer skills and ability to write code”, we can summarize it (according to analysis 2-8), what Meituan requires can be one: (Note “Yes”, you have done so "Can" be affirmed by the interviewer of Meituan, if the interviewer really asks you based on this JD)

1. For the Java language itself, let's master the memory model, look at some concurrency-related things (look at all the classes in the java.util.concurrent package), and find a few blogs to see what weak/soft/phantom reference means. La;

2. For JVM, read the book, understand the common structure of Hotspot, nouns, etc., remember a few important parameters, enough to cope with the interviewer;

3. Familiar with netty source code;

4. Skim the Spring source code, focusing on understanding key concepts (AOP interviewers love to ask);

5. Have a look at some terms mentioned in JD on Wikipedia;

6. Buy a mysql book and see, the high-performance mysql book is very good;

7. If you use redis or memcached more, see more related blogs. Haven't used it? I suggest you look at redis

8. Pack the most nb project you have done, prepare some technical difficulties and solutions, and remember to combine the business. (What? No? No? Can't you write? How to write? Are you going to compile meetings in the direction of distributed and high concurrency? No? Then you are not suitable for the Internet.)

9. Work for a few more years!

You see, it's not that difficult. If you have done all the above points and still can't get the offer of 2w senior JAVA development engineer of Meituan, then Meituan must have frozen the headcount. Many people I know who are far from meeting the above requirements are in Meituan.

PS: If the interviewer asks you about the algorithm, you must pretend to be very confident and say: "Ah (the second tone), algorithm? In general work, you don't need to write your own algorithm, right? On the one hand, there are commonly used algorithms, such as sorting, querying, There are ready-made codes to use; on the other hand, the problems that really require handwritten algorithms are generally oriented to specific needs, or require particularly high efficiency. These places can be done in combination with real needs." Of course, common algorithms Pseudocode is still written. If the interviewer asks you about the red-black tree, haha, then run away. It's not Google, Facebook, or a company that interviews algorithm programmers to ask you about the red-black tree. This company must be pretending

Java programmers with a monthly salary of 20,000 are intermediate programmers.

That is, the technology is slightly better, but it can't achieve the level of architects.

Generally speaking.

My salary of 20,000 mainly depends on the following aspects.

1. Can you complete the project independently, and which projects have been completed, at least 6+ projects.

The more project experience you have, the better your understanding of requirements will be.

2. Are you clear enough about the technical framework used in your own projects, and can you answer how to choose the model?

It is not required to be able to choose the architecture now, but you must understand the architecture system of your original project.

3. Whether there is enough understanding of the status quo of industry technology, and whether there is active learning.

This is to see how wide a person's vision is, and I don't require these for 15K programmers. 20K programmers must read some mainstream systems, even if they say a few terms.

4. What is the largest amount of data processed, and whether there is a flow of more than 10 million levels. What is the maximum number of concurrency that has been processed and how much TPS can reach.

5. Do you know about distribution and caching, which RPC frameworks have been used, and how to deal with cache invalidation strategies.

6. Whether you can quickly solve online faults, and whether you are familiar with the emergency repair process for bugs and online bugs.

7. Are you familiar with project tools, such as Jenkins, Nexus, Confluence, wiki, git, svn and other commonly used things in projects.

8. Do you have any knowledge of performance tuning and how much you know about the GC algorithm?

In fact, it should be the other way around, how much is the candidate worth?

In addition, it is not said that all are satisfied.

Rather, at least a few items must be satisfied.

The more conditions you meet, the higher the salary range that can be given.

To sum up, to achieve a monthly salary of 20,000, you need to master the following skills:

1. Have a solid Java programming foundation, be familiar with various design patterns, and have good programming skills.

2. Familiar with the entire software development process and specifications.

3. Proficient in Spring/Struts/Ibatis and mainstream development frameworks.

4. Familiar with databases, such as Mysql, oracle, etc., and have a deep understanding of database things.

5. Be good at using open source frameworks, interpret the source code, and master the implementation principles.

6.1-5 years of development experience.

7. Strong academic ability, good at summarizing and thinking.

The above are only the basic skills for a Java development position with a monthly salary of 20k. Other skills are required for different businesses, such as search business, and Lucene, ElasticSearch and other technologies.

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=324767917&siteId=291194637