Forwarding--the key to the growth of programmers

Java is for projects! The main application area of ​​Java is enterprise-level project development! To engage in enterprise-level project development, you must master the following points:
1. Master the basic steps of project development
2. Have strong object-oriented analysis and design skills
3. Master the mainstream development method driven by use cases and centered on architecture

No one wants to be satisfied with mastering some code implementation skills for a lifetime. When someone tells you what to achieve, you use code to implement other people's requirements! You have to learn to think in terms of the whole project! You have to learn how to think if you are a project manager! You have to learn how to think if you are an architect! You must master analytical methods for a specific problem domain!

About basic tb knowledge: you can look at these nouns or knowledge points to see if you can say one, two, three, or four.

JavaSE
---- Basic syntax, data types, operators, etc.: int, long, Integer, Long, if, else, for, while
---- Object-oriented: class (class), Object (object), instance (instance) ), state (state), behavior (behavior), field, method, new, visibility (access control), attribute, property, package, import, static variable, class variable, instance variable, heap, method area, stack, GC (garbage collection), override, overload, casting, polymorphism, this, super
----Exception Handling: Understand the difference between compile-time errors and runtime errors, Exception, RuntimeException, checked exception, unchecked exception, try, catch, finally, throw new XXXException, throws XXXException, basic principles of exception handling
---- Arrays and collections: Definition and usage of arrays, Collection, List, Set, Map, ArrayList, HashSet, HashMap, Iterator, equals, hashCode, Comparable, Comparator
---- Common classes: String, intern, constant pool, StringBuffer, java.util.Date, SimpleDateFormat, Regex (regular expression)
---- Reflection mechanism: Class, Method, Field, invoke, newInstance, BeanUtils (apache-commons), PropertyUtils (apache-commons)
---- Input and output Stream: InputStream, OutputStream, Reader, Writer, Adapter design pattern and primitive stream class, Decorator design pattern and packaging stream class, object serialization and deserialization
- multithreading: Thread, Runnable, sleep, wait, notify, synchronized, lock

Servlet and JSP
----HttpServlet, doGet, doPost, HttpServletRequest, HttpServletResponse, request.getParameter(), request.setAttribute(), request.getAttribute(), request.getSession(), ServletContext, Filter, web.xml, tomcat, forward and Redirect, the statelessness of the http protocol, cookies, JSP Scope Object, <c:out .../>, <c:forEach ...>

HTML and JavaScript
---- You need to be able to understand common web page tags, understand the introduction in web pages The method of JavaScript, and the basic syntax and usage of JavaScript The

above is the basic knowledge you need to learn Java further. Especially some professional terms and nouns, if you see these nouns, if you are as friendly as you see your father, then you are very familiar with the basic knowledge of Java.

Next up is SSH:
For starters, these three frameworks are given so much mystery that they seem to be the most important knowledge! But for professional and technical personnel with years of Java development experience, for those Java experts, they are not very interested in these three frameworks! Don't they matter?

Now many companies are using these three frameworks, so many companies also regard mastering these three frameworks as a prerequisite for recruitment. It is undeniable that there are also many large enterprises that do not use these three frameworks. After years of development, these enterprises have accumulated a certain amount of technology and formed their own unique technical framework system. These three frameworks can be said to be important or unimportant.

The important reason is that these three frameworks provide beautiful solutions to common problems in JavaEE development. They contain the efforts and ideas of the most NB developers in this industry. Therefore, learn these three Framework, you can spy on what these experts at the peak of technology think about a problem, and what kind of design thinking to solve the problem. So, for you, you don't have much experience with project development, what is the experience? Experience is that you know which problems you might encounter, which solutions are available for which problems, which solutions are better in a given situation, which ones are not, and so on! If you haven't done any projects, you don't realize what problems you might encounter, and these problems are often very critical! If it is not solved well, it will affect the stability, scalability, etc. of your program! The three frameworks provide beginners with an understanding of what problems you may encounter in the future, and solutions to these problems!

When you understand why these three frameworks are important, then you can also understand why these three frameworks can also be said to be unimportant. If you have developed a lot of projects, you have encountered various problems. With your technical skills, you have overcome these problems one by one. In the eyes of these people, the three major frameworks (is there still N frameworks? Ha ha ha ) are all clouds!

Which kind of person do you belong to? If you don't have much project development experience, then the three frameworks are very important for you! Moreover, from this you also know how to learn these three frameworks. For the study of the three major frameworks, the focus is to show you problems and trigger your own active thinking. We encourage you to put forward your own ideas. Maybe your ideas are idiots, but they are your own ideas after all. If If you don't know the thoughts of the great people, how do you know that your thoughts are very idiots? In the process of this collision of ideas, you will gradually improve yourself! Therefore, after learning the three frameworks, you should not only see a lot of configuration files, you should not only see some Actions, some Services, and some mapping files, you should not only know session.save/update/delete, You shouldn't just know that struts2 has a bunch of interceptors, you shouldn't just see a bunch of jars...

If you only know that after copying a bunch of jar packages and defining a series of configuration files, the three major SSH frameworks can run and work for you, then, sadly, you still do not master the three frameworks. Essence! Please answer the following questions:

Struts2:
Why does each request create an Action object?
What problem does refreshModelBeforeResult solve in the configuration of the ModelDriven interceptor?
Why does the StrutsPrepareAndExecuteFilter configured in web.xml filter all requests?
Could you please talk to me about ValueStack?
How does Struts2 implement the MVC design pattern?

Spring:
Why do you use Spring?
Could you please talk about IOC/DI?
What is declarative transaction management? Why use declarative transaction management? How does Spring implement declarative transaction management?
When integrating spring and hibernate and defining transaction management features, why should methods other than add, delete, and update operations, that is, methods that mainly perform query tasks, be defined as read-only?

Hibernate:
Could you please talk about your understanding of OR mapping?
Many people say that Hibernate is not suitable for large projects and has performance problems. How do you understand it?
Why does Hibernate have to define a database identifier?
Why does Hibernate recommend that your entity classes implement hashCode and equals methods?
Talk about your understanding of the relationship between the database ID in the Hibernate entity class and the database primary key?
Talk about your understanding of the relationship between Hibernate association mapping and database foreign keys?
When the session.save() method is called, will hibernate issue an insert statement? Talk about your understanding
Call session.update () method, hibernate will issue update statement? Talk about your understanding
Please talk about the following terms, concepts or usage: lazy, lazy=”extra”, inverse, fetch, fetch=”join”, fetch=”subselect”, batch-size
is configured with lazy=”true” Will lazy loading be implemented?
Could you please talk about the "N+1" problem in Hibernate
Could you please talk about the best practices in Hibernate?

The above are not all important questions in SSH, but they can test your flexibility with the SSH framework! If you can deeply understand these problems, coupled with appropriate training in actual combat projects, you will gradually become a master!

The last is project development ability:
whether you are learning Java or other technologies, your fundamental purpose is to create value for customers! Otherwise, the things you put a lot of effort into learning will quickly become obsolete as technology improves and updates! Therefore, the core of technology is to use technology to create valuable results! That is to say, what the customer needs, you have to use technology to create what the customer needs! The reason why a company uses various welfare conditions to keep you is because you can bring extremely high benefits to the company! So, what do you have for the company to take advantage of? What skills do companies value most about you?

There are many abilities required to do a project, among which the core and most basic is the modeling ability (the most mainstream now is object-oriented modeling!). What is modeling ability?

I have an interview question for you:
An insurance card management module of an insurance company: salespersons receive insurance card information (number of insurance cards, card number, date of collection), and then sell them directly to customers. Buyer information, number of insurance cards purchased, card number, etc.), the customer logs in to the insurance company website to activate the insurance card, and needs to fill in (insurance card number, activation password, insured information, beneficiary information)

The requirements are: if this module is handed over to You do it, what are you going to do? What problems are you trying to solve? Can you draw a picture and describe to me what your idea is?

This is just an interview question, because there are only a few simple sentences, so I put it here to let everyone feel what the so-called modeling is to solve. And there are so many problems in the business area! Maybe a requirement document of dozens or hundreds of pages can clearly describe the problems in a certain business area, and your responsibility is to realize them!

A company wants to develop an attendance management system, which needs to be connected with the existing human resources system. You are the main technical person in charge. So, what work do you do?

An ERP project needs to implement a shift management module, and let you complete it. How do you complete it?

Don't complain that the project manager gave you too little information (just a few sentences), don't complain that the client didn't describe their needs clearly... Your value lies in straightening out all the problems tb, and using all means to get the information you want , summarize according to a certain idea, and solve it one by one at a specific time!

You should realize that learning Java is not as simple as a tank war, a network speeder, a CMS, a DRP, and an OA. You should not be obsessed with those technical details (although it is also necessary, but don't turn to the horns), and don't be satisfied with the implementation. With the CRUD-style project requirements (although this is the basis of the foundation), there is always a goal in front of you, and you need to work hard to catch up! 

In the future, you will face more complex requirements. The only purpose of your study project is to learn how to convert requirements into implementation, how to analyze requirements, how to build conceptual models, how to straighten out the relationship between various concepts, how to Design, how to choose the right technology to implement your design, how to test your implementation, how to solve all kinds of problems you encounter (performance, requirements changes, etc.). When you've actually been in the company for a few years, you'll agree with me!

Using Java to find a job, what you need is project experience. Project experience is to understand the basic process of project development, the analysis method of the project, the design idea of ​​the project, the implementation skills of the project, the testing method of the project, and the understanding of various projects in the project. The solution to the problem! ! !

So, it's time for you to be clear about your goals!

Guess you like

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