Why do people always say that Java requirements are getting higher and higher now? What is the reason?

I always hear the higher and higher demands of xxx. In fact, looking back on my career for many years, as a frequent interviewer, I come out to be fair. In fact, the technical recruitment requirements of big companies are there. The skill requirements have not changed much.

Maybe you have to refute distributed, high concurrency, multithreading, spring boot, spring clould, Hadoop, Spark and other technologies are emerging in an endless stream. As a new developer, you must keep up with Yunyun. Please calm down first. These technical terms require more of the technical level than the Taoist level. Next, we will talk about the requirements of java R&D engineers during the interview, and see if the requirements have become higher, or there are too many people who have not met the requirements.

1. Data structure and algorithm. You should master simple algorithms and data structures? Is this request excessive? As a programmer, if you don’t even understand the two basic structures of arrays and linked lists, what do you expect to understand? Balanced binary trees, red-black trees, hash tables, heaps, buckets, graphs, and more. For complex data structure? Simple bubbling and selection sorting is a difficult master in hand, and I hope that he has heard of fast sorting, inserting, hill, heap sorting, two-way merge, multi-way merge, bucket sorting, counting, cardinal number, etc. Something very basic? Sometimes people who know the complexity of time and space are Amitabha...

2. Operating system. How many basic linux commands do you have to know? Should you have a little bit of the basic concepts of memory allocation, process, and thread scheduling? Not to mention that these things are useless. Many softwares refer to the design ideas of many operating systems when they are implemented.

3. The database level. Understand the definition of several major paradigms. Can you always understand the ACID of database transactions? You have to know the granularity of the isolation level and the remaining problems, right? Some people have been working for several years, not too much, right? Have you ever done SQL optimization? The difference between the mainstream MYSQL storage engines, the difference between several indexes and the application scenarios, should be as rare as everybody? As a technical dog, you should know something about the implementation of database transactions, right? Do you know the two-phase submission and the three-phase submission? How much you know depends on your personal depth.

The above is a general level thing, as long as you say you are a programmer, you should know. Now let's break down the things related to java.

1. In terms of collections: You should always know the different concepts of map, set and list, right? Do you think the data structure is important? I ask you the specific implementation class. The simpler one is HashMap HashSet ArrayList, and see how much you can talk about. If we can, we will change to a slightly interesting topic HashTable, CurrentHashMap, TreeSet, LinkedHashSet, LinkedArrayList, BlockingQueue and its various implementations. How much can you tell me? These requirements are really not too much. Those who are involved in Java are afraid that these are the usual interview rules?

2. IO: How much can you know about BIO\NIO\AIO? This topic can be more and more shallow, and the topic is also open. I can talk to you about basic IO operations, to implementation mechanisms, design patterns, and even various scheduling of the operating system. I can also talk to you about mina, netty, and Grizzly. , I believe I can find out your depth soon. Don't say these are useless, the exception stack of the rpc framework is thrown out, basically in the above three things.

3. Multithreading: Do you think you can run away with this? The life cycle of threads, the difference between synchronization and asynchrony, when do you need synchronization, when do you need asynchrony, thread scheduling methods, talk about concurrent programming, why do you need concurrency, how to go about it, what concurrency issues have you dealt with, tell the truth , Let alone there is no application scenario, you all know that there are primary and secondary business processes, so for the secondary processes that do not affect the main process, if you have not processed asynchronously, the system you used in the past is really a bit ha ha Up.

4. Those things about the virtual machine: Java is all done, do you have to know some things about the virtual machine? I still know the JVM memory model, garbage collection mechanism, and how the garbage collector works under various mechanisms. The JVM bytecode is too harsh and generally won't require you. If you have to show off some skills, then you must meet your demands. Everyone is good, I hope you can achieve your goals.

5. You still have to have some basic things: http protocol, https protocol, dns resolution process, what is servlet? What is the life cycle? The difference between request/response, the implementation mechanism of the difference between session/cookie, and the difference between redirect/forward can you briefly talk about it? These are basic knowledge. If you don’t know about web development, what are you doing?

6. Programming framework: If you are engaged in web development, you have to talk about the execution process of the web framework. For example, how does SpringMVC work? Can you implement a web framework yourself or not? How can I have ideas? You should still understand how the spoon for self-catering works? Not to mention that the requirements are high now, and the problem will be replaced in the past. You can tell us about the execution process of struts webwork springMVC? What is the difference? Why is strus2 not mentioned? Because it has already been asked.

7. Now that Spring has been involved, how did the realization principle of IOC\AOP come from, what are the scope of beans, service propagation mechanism, isolation level, basically still have to be asked? Reflection, it's impossible to figure out what's going on with the agent. How much do you know about several ways of proxying JDK's cglib's aspectJ? Abandon the framework, do you have a way to implement class-based agents yourself? Have you heard of mybatis? Regardless of whether you have heard of those things about jdbc, those things about database connection pools, we have to talk, as long as you can arouse our interest in chatting. I haven't talked about spring boot yet. You have a good grasp of the above, and they are all enough.

8. Some things of general nature: Do you know the famous Apache? Do you know the difference between web server and application server? Have you ever played with ngnix? What are you doing with ngnix? Have you heard of caching? How to play? How to play with the various layers of caching from the browser side to the back end? How is the strategy determined? Have you heard of distributed caching? Memcached and redis have been played. In short, there are many topics, and more.

9. Some concepts of distributed: Do you know why distributed? What are the classic problems of distributed? How to implement the application stateless, globally unique ID in a simpler way (Don't talk about the bad street like the snowflake algorithm, it is regarded as a two sentence in the organization, and then it is really Amitabha, congratulations) , Is there a concept of load balancing? How to do? How to achieve high availability? How to ensure consistency in a distributed environment? Have you ever played with message middleware? Do you know what they are, where are the differences in implementation, and why are they used? How to ensure service reliability in a distributed environment? How to face the avalanche problem? How to face the penetration problem? Including but not limited to spring cloud related topics, which aspects of distributed problems have been solved, how to solve them, and what are the strategies? The problem is that it depends on how deep you are.

All in all, the question is a little bit more Dao level, a little more principle nature, the principle is there, and the technical level changes rapidly, but in short, it is all about solving a certain problem of Dao. If you understand the level of art, at most it only means that you are interested in technology. This is good, but the Tao requires it to always be there. The core things are the same ten years ago and they are always there.

Finally, if you are also learning Java now, and you have encountered any questions about learning methods, learning routes, learning efficiency, etc. during the introductory learning of Java, you can apply to join my Java novice learning exchange skirt: Java novice learning There are many beginners who are getting started learning Java in the communication skirt , and there are also big guys who are engaged in Java technology development. Anything you don’t understand can be communicated at any time. There is also a time for me to do Java technology in the skirt file. Some of the study manuals, interview questions, development tools, PDF documents, book tutorials.

Guess you like

Origin blog.csdn.net/weixin_46898270/article/details/108334581