Most of this article is for the whole programmer community , Mainly want to talk about the programmer's several stages and how to effectively improve their own technology .
The learning methods and materials of the article are in accordance with Java Programmer centered ; do Java We can focus on the development of ; The information in the article is free to share with fans , Just pay attention to the official account. 【Java Doudi 】 reply “666” You can get free access to ;
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 . This stage , We go out of the campus , Entering the society , Become a programmer , From book content to real enterprise development . We know how to work in teams 、 How to use project management tools 、 How to control project version 、 How do we write code to test how to run it online and so on , Accumulated certain development experience , I also have a deep understanding of the code , It's a relatively pure Coder The stage of .
It is recommended to study this article ： Best practices
This book will help you reduce the cost of building and maintaining software . If you're a software developer , You'll learn a set of practical ways to build easily modifiable code , Because in the application, the code often needs to be modified . For managers who work with software developers , This book will show you why this was introduced 9 A basic practical method , It will enable your team to deliver software more efficiently without turning it into legacy code .
The second stage ： Five years
Five years is the second threshold to distinguish programmers . Some people in three years , Besides finishing the work , I don't study anything else in my spare time , These people will always be Coder, Older people are bound to be replaced by younger ones ; Some people in three years , In addition to writing code , They are also keen to study the implementation details of various technologies 、 I saw N Many good books 、 Write some blogs 、 stay Github Share technology on , In five years, these people will have the ability to be technically independent and know their future development direction , From a Coder Step up to systems analyst or architect , Become an indispensable person in the project team .
Recommend learning ： The path of the programmer's progress
This is a very comfortable book to read ;
In five years, at this stage, we are thinking about more than just typing code , Although this book is for programmers , It doesn't contain code . In the author's opinion ,90% You don't need to write code for your programming work ; Programmers are not just programming experts , Its core competitiveness is to use code as a tool to solve common problems in human society . As a starting point , The author carefully conceived 8 A story , In the form of scenario substitution, readers are invited to think about key issues beyond the code ： How to change the software development from technology centered to people-oriented ？ Through the protagonist's perspective , Readers can compare themselves to the characters in the book , Find flaws in the decision-making process , Improve the comprehensive ability to solve problems .
The third stage ： Decade
Ten years is another threshold , Change careers or continue to be a programmer on this node . If I had a firm idea of not changing my career in the past few years and worked hard for it , So at this point in the decade , Some people will grow up to have a deep understanding of the industry 、 Deep understanding of Technology 、 A programmer who can analyze a product from scratch , This kind of person basically works in the company CTO、 technician 、 Key positions such as chief architect , It's an absolute honor for me , Of course, the boss will never treat you badly financially .
The first part is a summary , As you work longer 、 Deep understanding of life and life , Three problems should be considered continuously ：
1、 Is it right for me to be a programmer ？
2、 Should I be a programmer all my life ？
3、 What is my attitude towards programming , Is it just enough or continuous research ？
Final , Make clear your career plan , Be responsible for and work for your own planning .
Recommended learning project practice
This stage is no longer to be promoted by reading , You need to break through yourself in every project , So as to form their own structural thinking ;
A classic project ： online car-hailing 、 Billion level mall project 、 China Taiwan project and so on ;
On the Internet, I often see that some other friends have asked questions about project experience , According to the feeling of the interview , What are the main interview points ： Project experience + Basic technology + Personal potential （ That is, the value is not worth training ）.
About project experience , I think the founder of concurrent programming network said a very good paragraph ：
When introducing the product, the interviewer will check the communication ability and thinking ability of the applicant , In most cases, we make a function or a module of the product , But even so , Have you made clear the whole system architecture or product , And can explain clearly , Why do you make this system ？ What is the value of this system ？ What are the functions of this system ？ What are the advantages and disadvantages ？ How would you redesign the system ？
I think that's enough . Maybe you only work for a year , Maybe what you're doing is a trivial part of the project , Of course, these must be your weaknesses and cannot be changed , But how to make up for this disadvantage , We can sum up a few points ：
- Identify what your project is really about , What are the features
- Define the overall structure of your project , Be able to clearly draw for the interviewer to see and clearly point out where to call and where to call during the interview 、 How to call
- Identify your module's position and role in the whole project
- Identify the technologies your module uses , It's better to know what technologies are used in the whole project
Before you can change your working years 、 Own less persuasive project experience （ This must be a deduction ）, In this way, you can make up for and improve the interviewer's liking for you to some extent . If there aren't a few projects you can take out , We can learn from the above several projects （ packing , All right ）.
Write the project and then write a 3 Years of working experience Java Skills a programmer should have , This may be Java What programmers care about . Let me explain , The following list is not a must — But if you master more , Final evaluation 、 It's bound to pay more .
1、 Basic grammar
This includes static、final、transient The role of keywords such as ,foreach Principle of circulation, etc . Today's interview I asked you static What are the functions of keywords , If you answer static Modifying variables 、 I will think you are qualified , Answer static block , I'll think you're good , I'll think you're good , I will be very satisfied with you , Because you can see that you are very keen on technology .
It's very important , It's also a must . Basically List、Map、Set, What is asked is the underlying implementation principle of various implementation classes , Advantages and disadvantages of implementation classes .
What we need to master is ArrayList、LinkedList、Hashtable、HashMap、ConcurrentHashMap、HashSet Implementation principle of , Can answer fluently , Of course I can CopyOnWrite Container and Queue No better . One more sentence ,ConcurrentHashMap I asked a lot of questions in the interview , Probably because this class can generate a lot of problems , About ConcurrentHashMap, I offer three answers or research directions to my friends ：
- ConcurrentHashMap Lock segment technology based on
- ConcurrentHashMap Whether to lock the reading of , Why?
- ConcurrentHashMap Is the iterator of strong consistency or weak consistency
3、 Design patterns
What I thought was very important , Only Alibaba B2B I was asked once during the interview of business department , It was the decorator mode .
Of course, we can't be so utilitarian , Study for an interview , Design pattern is still very important in work 、 Very useful ,23 Ten or so design patterns that are commonly used for key research , There are three main directions of Q & A about design pattern in interview ：
- What design patterns are used in your project , How to use ？
- Know the advantages and disadvantages of common design patterns .
- Able to draw common design patterns UML chart .
That's a question to ask . Because of three years of work experience , So basically, I won't ask you how to implement multithreading , It's going to go deeper, for example Thread and Runnable The difference and connection 、 many times start What about a thread 、 What are the states of a thread . Of course, it's just basic , Unexpectedly , Several interviews almost all asked a question at the same time , Different ways of asking , That's what I mean ：
If there is Thread1、Thread2、ThreaD3、Thread4 Statistics of four threads C、D、E、F Size of four disks , All threads are counted and handed over to Thread5 Thread to do summary , How to realize ？
It's not hard to ,java.util.concurrent There are ready-made classes to use .
in addition , Thread pool is also a common question , There are several common thread pools ？ What are the differences and connections between these thread pools ？ What is the implementation principle of thread pool ？ More practical , It will give you some specific scenes , Let you answer what kind of thread pool is suitable for this scenario .
Last , Although the interview didn't ask much , But multithreaded synchronization 、 Lock is also the key .synchronized and ReentrantLock The difference between 、synchronized Lock common method and lock static method 、 The principle and troubleshooting of deadlock
5、JDK Source code
To get a high salary ,JDK Source code is not unreadable . The above content may also be related to specific scenarios ,JDK Source code is to see whether you usually like to study . I was asked a lot during the interview JDK Source code problems , One of the trickiest asked ：String Of hashCode() How is the method implemented , Fortunately, at ordinary times String See a lot of source code , I gave you a general idea .JDK In fact, the source code has nothing to summarize , Just look at the individual , Summarize the important source code ：
- List、Map、Set Source code of implementation class ;
- ReentrantLock、AQS Source code ;
- AtomicInteger Implementation principle of , Mainly clear CAS Mechanism and AtomicInteger How to use CAS Realized by mechanism ;
- Implementation principle of thread pool ;
- Object Methods in classes and the role of each method .
These are really demanding , It really takes time 、 Expend energy , Of course, look back , it is worth that , Not just for interviews .
A cliche , Interview questions . In general, I will ask you about the framework used in your project , Then I'll give you some scenes and ask you how to use the frame , For example, I want to spring initialization bean How to do something 、 Want to be in bean What to do when destroying 、MyBatis in $ and # And so on , These are more practical , Good accumulation at ordinary times 、 It's no problem how many learning frameworks are used in detail .
The database will probably ask . Some basic images union and union all The difference between 、left join、 Several indexes and their differences will not be discussed , More important is the optimization of database performance , If you know nothing about database performance optimization , So there's time , I suggest you spend a day or two before the interview SQL Basis and SQL Prepare for the optimized content .
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 , Nine Chengdu will want you , I guess I'll put you in a department that doesn't require a very high level of database use first .
8、 Data structure and algorithm analysis
Data structure and algorithm analysis , For a programmer , It's better than not, and it's definitely useful at work . Array 、 Linked list is the foundation , Stacks and queues are deeper, but not hard , Trees are very important , More important trees AVL Trees 、 Red and black trees , Can not understand their specific implementation , But you need to know what a binary search tree is 、 What is balance tree ,AVL The difference between tree and red black tree .
Remember an interview , Some interviewer and I talked about the index of the database , He asked me ： Do you know what kind of data structure is used for index ？
I got it Hash Watch bar. , answer incorrectly . He asked , Do you know why trees are used ？ Answer because Hash Table may have more conflicts , In front of tens of millions or even hundreds of millions of data , It will greatly increase the time complexity of searching . And the trees are stable , It's guaranteed that you can find the data you want up to 20 or 30 times , They're not quite right , Finally, we talked about this issue , I also understand why trees are used .
9、Java virtual machine
Make a brief outline , Talk about Java More important content in virtual machine ：
（1）Java Memory layout of virtual machine
（2）GC Algorithms and garbage collectors
（3） Class loading mechanism , That's the parent delegation model
（4）Java Memory model
（5）happens-before The rules
（6）volatile Keyword usage rules
Maybe the interview is useless , But on the way to Daniel , No, No. .
10、Web Some problems
Java Main orientation Web End , therefore Web Some of our questions are also necessary .LZ The most frequently asked question is ： On Distributed Session Several ways to realize .
There are four kinds of answers that are often used to satisfy the interviewer , Another frequently asked question is ： Let's talk about Session and Cookie The differences and connections between Session Implementation principle of .
Besides these two questions ,web.xml The content is the key ,Filter、Servlet、Listener, Let's be clear about how they work , At least know their use . in addition , Some details like get/post The difference between 、forward/ Differences in redirection 、HTTPS The implementation principles of .
If you are interested, if you have time , Suggested learning 、 Look at the SOA and RPC, Service Oriented Architecture , Necessary for large distributed architecture , Life-saving recipe 、 Cure all diseases 、 To test that .
If you've learned all this , At the same time, you need to be able to say it concisely , In this way, the interviewer will be shocked ;
Recommended reading ：Java Focus on the core
About interview mentality
More than half of the interviewers answered questions with shaking legs 、 Types of voice tremors . It doesn't have to be, and it's a demerit , Two basic requirements for answering questions ：
- large , Keep calm
- Clarity of organization
The ability to express is definitely an important investigation item in the interview . We're in the business of programmers , It's about teamwork , Not writing 、 Drawing a picture , A pen 、 Just one person , A programmer with poor expression ability , What's the use of coming ？
besides , Is to keep a good attitude . Good old saying , As long as you work hard , Grinding a pestle into a needle , Interview success or not , It depends on the accumulation in ordinary times , Hold Buddha's feet temporarily , It's no use looking at two interview questions , As long as you work hard enough , Success comes naturally , I don't usually study technology , It's a matter of resignation , As long as we fully demonstrate what we have learned in normal times .
So in my opinion , Don't think of an interview as an interview , As a technical exchange , Change the attitude of the interview from I want to find a job to find out the deficiency through the interview 、 Improve yourself , It will be much more peaceful , Even if you fail, you won't feel disappointed .
in addition , If you are a friend who is always interested in technology research , Really have confidence , Don't think that other people interview you better than you . The interviewer may not be better than you , He often asks questions that he studies more often , You also have a lot of your own research interviewers may not know .
At the end
The above information is free to share with fans , Just pay attention to the official account. 【Java Doudi 】 reply “666” You can get free access to ; Data name ： Three growth books +6 A real project
Of course, in addition to the above information, there is an essential set of interview questions ;
After reading three things ️
If you think this is helpful for you , I'd like to invite you to do me three little favors ：
give the thumbs-up , forward , There's your 『 Praise and comment 』, That's what motivates me to create .
Official account 『 Java Doudi 』, Share original knowledge from time to time .
At the same time, we can look forward to the following articles ing