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, nginx, tomcat, rpc, jms, etc. You have to ask how much you need to know, and I can give you a big one. First of all, for MySQL, you need to know the common parameter settings, how to choose the storage engine, and also need to know the common index 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 is almost a necessary skill, and nginx and tomcat are almost all necessary for JAVA Internet. 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. There are also open source technology stacks related to spring cloud, which can be searched by yourself. As for the JMS-related at least you need to understand the principle. Generally speaking, those who are not specialized in developing middleware systems and support systems do not need to understand too many details. The main ones commonly used by domestic enterprises are activeMQ and kafka. Everything you can say to me has been studied, and Ali p7 is not a big problem.
The third is programming ability, programming thinking, algorithm ability, and architectural ability . First of all, I think the requirements of 2W programmers on the algorithm are still relatively low, and the most advanced ones are red-black trees, but the basic algorithms for sorting and querying are good. Programming thinking is a must. If you ask you about AOP and IOC, you will at least be clear. Design patterns do not say that each of them has been used, but you can also understand a few. I don't think it's easy to evaluate the programming ability, but it's easy to get a 2000W user sorted by name and age. Finally, there is the architectural ability. This does not mean that you need to design a system with high concurrency, but at least you need to have a clear idea and direction to make a seckill system.