Interview

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 companies. And most people can't pass this level, and they make a fuss and say that these are useless, why do they have to interview. For example, when using the thread pool, because the unbounded queue is used, the inner layer will soar when the remote service is abnormal. How to solve it? If you don't even know the thread pool, how can you play? For another example, due to the misunderstanding of ThreadLocal, the use of it for thread safety control has resulted in failure to achieve true thread safety. There are also problems of how to arrange and insert memory leaks, and how to optimize system performance. Therefore, as a JAVA programmer with 20,000 yuan, it is necessary to have this foundation.


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.

Guess you like

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