What kind of technical skills should a Java programmer who has worked for 1-3 years have? How to improve?

Most of the content of this article is for the entire programmer community, mainly to talk about the stages of programmers and how to effectively improve their skills.

The first stage: three years

Three years is the first threshold for programmers. This stage will eliminate a group of people who are not suitable for writing code. At this stage, we stepped out of the campus, entered the society, became a programmer, and officially moved from the content of the books to the real enterprise-level development. We know how to work in a team, how to use project management tools, how to control the project version, how to test the code we write, how to run it online, etc. We have accumulated a certain amount of development experience and have a certain in-depth understanding of the code, which is a comparison The pure Coder stage.

So I have prepared the core knowledge points of Java and some necessary interview questions here. I hope to help everyone. Friends in need can click: this, click this! ! , Code: csdn.
Insert picture description here

Phase 2: Five years

Five years is the second threshold to distinguish programmers. Some people do not study anything in their spare time except completing work in three years. These people will always be coders. Older people are bound to be replaced by younger people; some people in three years, except for writing In addition to the code, they are also keen to study various technical implementation details, read many good books, write some blogs, and share technology on Github. These people will inevitably have the ability to be technically unique and know their future in five years. The development direction, gradually from a Coder to a system analyst or architect, becoming an indispensable figure in the project team.

The third stage: ten years

Ten years is another threshold. Changing careers or continuing to be a programmer is at this node. If in the past few years, you have been determined not to change your career and worked hard for it, then at this node in ten years, some people will inevitably grow into a person who has a deep knowledge of the industry, a deep understanding of technology, and can start from scratch A programmer who analyzes a product, such a person basically holds the most critical positions in the company, such as CTO, technical expert, chief architect, etc. This is absolutely an honor for him, and of course the boss is also financially I will never treat you badly.

The first part summarizes that as your working years increase and your understanding of life and life deepens, you should continue to think about three questions:

1. Am I suitable to be a programmer?

2. Should I be a programmer for the rest of my life?

3. What kind of attitude do I have towards programming, should it be enough or should I keep studying?

Finally, clarify your career plan, be responsible for your plan and work hard for it.

Project experience

On the Internet, I often see other friends asking questions about project experience. According to the feeling of the interview, the interview mainly focuses on several points: project experience + basic skills + personal potential (that is, whether it is worth training).

Regarding the project experience, I think a paragraph from Teacher Fang Tengfei, the founder of Concurrent Programming Network, is very good:

When introducing the product, the interviewer will examine the candidate’s communication and thinking skills. In most cases, we are doing a function or a module of the product, but even so, have you figured out the entire system architecture or product, and can The introduction is clear, why is this system built? What is the value of this system? What are the functions of this system? What are the advantages and disadvantages? If you were to redesign this system, how would you design it?

I think this is enough to summarize. Maybe you have only worked for one year, maybe you are doing trivial modules in the project. Of course, these must be your disadvantages and cannot be changed, but how to make up for this disadvantage can be summarized as follows:

  1. Be clear about what your project does and what functions it has
  2. Clarify the overall structure of your project, draw it to the interviewer clearly during the interview and clearly indicate where to call from, and in what method to call
  3. Clarify the position and function of your module in the entire project
  4. Clarify which technologies are used in your module, and if it is better, you can learn more about which technologies are used in the entire project

In the case that you cannot change your working years and your not so convincing project experience (this must be a deduction item), you can make up for it to a certain extent and improve the interviewer’s favor to you. Sensitivity.
At the same time, I also compiled the latest interview questions of the big factory in 2020. Friends who need it can click: this, click this! ! , Code: csdn.
Insert picture description here

professional skill

After writing the project, write about the skills that a Java programmer with 3 years of work experience should have. This may be the content that Java programmers care about. I want to explain here that the content listed below is not something that you have to know-but if you master more, the final evaluation and salary you can get will definitely be higher.

1. Basic grammar

This includes the role of keywords such as static, final, transient, and the principle of the foreach loop. In today’s interview, I asked you what are the effects of the static keyword. If you answer the static modification variable and modification method, I will think you are qualified. If you answer the static block, I will think you are good. If you answer the static inner class, I will think you are good. , I will be very satisfied with the static guide package, because I can see that you are very keen on researching technology.

2. Collection

Very important and must be asked. Basically List, Map, and Set, asking about the underlying implementation principles of various implementation classes, and the advantages and disadvantages of the implementation classes.

The collection must master the implementation principles of ArrayList, LinkedList, Hashtable, HashMap, ConcurrentHashMap, HashSet, and be able to answer fluently, of course, it is better to master CopyOnWrite container and Queue. In addition, I would like to say that the questions of ConcurrentHashMap are asked a lot in interviews, probably because this category can derive a lot of questions. Regarding ConcurrentHashMap, I will provide three answers or research directions to netizens:

  1. Lock segmentation technology of ConcurrentHashMap
  2. Whether to lock the reading of ConcurrentHashMap and why
  3. Is the iterator of ConcurrentHashMap a strongly consistent iterator or a weakly consistent iterator?

3. Design pattern

I thought it was a very important piece of content, but I was asked only once during the interview in Alibaba's B2B business department. At that time, I asked about the decorator model.

Of course, we can’t be so utilitarian. To learn for interviews, design patterns are still very important and very useful in work. It is enough to focus on a dozen commonly used design patterns among 23 design patterns. There are three main questions and answers about design patterns in interviews. Directions:

  1. What design patterns are used in your project, and how?
  2. Know the advantages and disadvantages of common design patterns.
  3. Can draw UML diagrams of common design patterns.

4. Multithreading

This is also a must. Because of three years of work experience, I basically won't ask you how to implement multithreading. I will ask more about the difference and connection between Thread and Runnable, what happens when a thread is started multiple times, and what state the thread has. Of course, this is only the most basic. Unexpectedly, the same question was asked almost at the same time in several interviews. The way to ask is not the same. In summary, this is the meaning:

If there are four threads Thread1, Thread2, ThraD3, and Thread4 to count the sizes of the four disks C, D, E, and F respectively, and all the threads are counted and handed over to the Thread5 thread for summary, how should this be achieved?

Not difficult, there are ready-made classes available under java.util.concurrent.

In addition, thread pools are also commonly asked. How many thread pools are commonly used? What are the differences and connections between these types of thread pools? What is the implementation principle of thread pool? Practical ones will give you some specific scenarios and let you answer what kind of thread pool should be used for this scenario.

Finally, although there are not many questions in this interview, multi-thread synchronization and locking are also the key points. The difference between synchronized and ReentrantLock, synchronized lock common method and lock static method, deadlock principle and troubleshooting method, etc.

5. JDK source code

If you want to get a high salary, you must read the JDK source code. The above content may also be related to specific scenarios. The JDK source code is to see if you usually like to delve into it. During the interview, I was asked a lot of questions about the JDK source code. One of the most tricky one asked: How is String's hashCode() method implemented? Fortunately, I usually read a lot of String source code and answered it roughly. The JDK source code is not really easy to summarize. It is purely personal, and summarize the more important source code:

  • Source code of List, Map, Set implementation classes;
  • Source code of ReentrantLock and AQS;
  • The realization principle of AtomicInteger, mainly to clarify the CAS mechanism and how AtomicInteger is implemented using the CAS mechanism;
  • The realization principle of thread pool;
  • The methods in the Object class and the role of each method.

These are actually quite demanding. It really takes time and effort. Of course, it’s worth looking back, not just for the interview.

6. Frame

It's a cliché, something you must ask in an interview. Generally speaking, I will ask you about the framework used in your project, and then give you some scenarios to ask you how to do it with the framework, for example, what should I do when I want to do something when the bean is initialized by spring, and when I want to destroy the bean How to do some things, the difference between $ and # in MyBatis, etc. These are all more practical. It is naturally not a problem to accumulate well and learn how to use the details of the framework.

7. Database

The database will also ask about it in all likelihood. Some basics like the difference between union and union all, left join, several indexes and their differences will not be discussed. The more important thing is the optimization of database performance. If you don’t know anything about database performance optimization, then if you have time, I suggest you Spend a day or two before the interview to prepare the content of SQL basics and SQL optimization.

But don’t worry about the database. A company often has many departments. If you are not familiar with the database and the basic technology is very good, Jiucheng will want you. It is estimated that you will be placed in a department that does not require very high database usage. Exercise.

8. Data structure and algorithm analysis

Data structure and algorithm analysis, for a programmer, is better than not, and it can definitely come in handy in work. Arrays and linked lists are the basis. Stacks and queues are a bit deeper but not difficult. Trees are very important. The more important trees are AVL trees and red-black trees. You don’t need to understand their specific implementation, but you must know what a binary search tree is. What is a balanced tree, the difference between AVL tree and red-black tree.

I remember an interview, an interviewer talked to me about the index of the database, he asked me: Do you know which data structure is used to implement the index?

I got the Hash table I used, I got it wrong. He asked again, do you know why you want to use trees? Answer: Because the Hash table may have more conflicts, in the face of tens of millions or even hundreds of millions of data, it will greatly increase the time complexity of searching. The tree is relatively stable, and it is basically guaranteed that the data you want can be found 20 or 30 times at most. The other party said that it was not completely correct. In the end, we talked about this issue, and I also understood why the tree was used.

9. Java Virtual Machine
Simply make an outline and talk about the more important content in the Java Virtual Machine:

(1) The memory layout of the Java virtual machine

(2) GC algorithm and several garbage collectors

(3) Class loading mechanism, which is the parent delegation model

(4) Java memory model

(5) The happens-before rule

(6) Rules for using the volatile keyword

Maybe an interview is useless, but on the way to a big cow, you have to.

10. Some problems on the Web

Java is mainly for the Web, so some questions on the Web must be asked. The most frequently asked question LZ encountered is: talk about several implementations of distributed Session.

The four commonly used answers are naturally very satisfactory to the interviewer. Another frequently asked question is: talk about the difference and connection between Session and Cookie and the realization principle of Session.

In addition to these two issues, the content in web.xml is the key point. Filter, Servlet, and Listener, not to mention having a clear understanding of their implementation principles, at least know the basics of their use. In addition, some details such as the difference between get/post, the difference between forward/redirection, and the implementation principle of HTTPS may also be investigated.

Finally, if you are interested and have time, it is recommended to study and study SOA and RPC, service-oriented system, a large-scale distributed architecture, a life-saving remedy, a cure for all diseases, and tried and tested.

About interview mentality

More than half of the interviewers are of the type with shaking legs and trembling voice when answering questions. This is not necessary and this is still a deduction item, the two most basic requirements when answering questions:

  1. No hurry, calm
  2. Clearly organized

The ability to express is definitely an important inspection item during the interview. What we are doing is programmers. What we pay attention to is teamwork, not writing or drawing. One pen and one person will do. What's the use of a programmer who is not good at expressing?

In addition, it is to maintain a good attitude. As the old saying goes, as long as the skill is deep and the iron rod is ground into a needle, the success of the interview lies in the usual accumulation. It is useless to look at the two interview questions. As long as you work hard enough, success is a matter of course. If you don’t study technology very much, it’s a matter of resignation, as long as you fully demonstrate what you usually learn.

Therefore, in my opinion, don’t treat the interview as an interview, but as a technical exchange. Change the mindset of the interview from I want to find a job to that I want to find out the shortcomings and improve myself through the interview. This will be more peaceful, even if Failure will not have too much disappointment.

In addition, if you are a friend who is passionate about researching technology, you must really have confidence and don't think that others are better than you when interviewing you. The interviewer may not be better than you. The questions he asks are often questions that he usually researches more. You also have a lot of research of your own. The interviewer may not know.

Finally, free Java architecture learning materials are provided. The learning technology content includes: Spring, Dubbo, MyBatis, RPC, source code analysis, high concurrency, high performance, distributed, performance optimization, microservice advanced architecture development, etc.

Click: click this! Click this! Password: csdn, you can get all of them.

There are also Java core knowledge points + a full set of architect learning materials and videos + first-line interview books + interview resume templates can be obtained + Alibaba Meituan Netease Tencent Xiaomi Iqiyi Kuaishou Bilibili interview questions + Spring source code collection + Java architecture Practical e-books.
Insert picture description here

Guess you like

Origin blog.csdn.net/HarderXin/article/details/108732712