Shenyang Shangsoft Technology Co., Ltd. about Java project experience

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 knowledge : You can look at these nouns or knowledge points and 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 methods of JavaScript, as well as the basic syntax and usage of JavaScript The

above is the basic knowledge necessary for you to further study Java. 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 mystique that it seems like they are 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...

如果你只是知道拷贝一堆jar包,定义一系列配置文件之后,SSH三大框架就能够运行起来了,也可以给你干活了,那么,很悲哀的是,你仍然没有掌握三大框架的精粹!请你回答以下问题:

Struts2:
为什么每次请求都要创建一个Action对象?
ModelDriven拦截器的配置中refreshModelBeforeResult解决了什么问题?
为什么在web.xml中配置的StrutsPrepareAndExecuteFilter要过滤所有的请求?
请你给我谈谈ValueStack?
Struts2是如何实现MVC设计模式的?

Spring:
你为什么要用Spring?
请你聊一聊IOC/DI?
什么是声明式的事务管理?为什么要使用声明式的事务管理?Spring如何实现声明式的事务管理?
把spring和hibernate集成,定义事务管理特性的时候,为何要将除了添加、删除、更新操作之外的方法,即主要执行查询任务的方法定义为read-only?

Hibernate:
请你谈谈你对OR映射的理解?
很多人说Hibernate不适合大项目,性能有问题,你是如何理解的?
Hibernate为什么一定要定义一个数据库标识?
为什么Hibernate建议你的实体类实现hashCode和equals方法?
谈谈你对Hibernate实体类中的数据库标识与数据库主键之间关系的认识?
谈谈你对Hibernate关联映射与数据库外键之间关系的认识?
调用session.save()方法,hibernate一定会发出insert语句吗?谈谈你的理解
调用session.update()方法,hibernate一定会发出update语句吗?谈谈你的理解
请你聊一下以下名词、概念或用法:lazy、lazy=”extra”、inverse、fetch、fetch=”join”、fetch=”subselect”、batch-size
配置了lazy=”true”一定会实现懒加载吗?
请你谈谈Hibernate中的“N+1”问题
请你谈谈Hibernate有哪些最佳实践?

以上并非SSH中全部重点的问题,但它们能考察你能否灵活运用SSH框架!如果你能深刻理解这些问题,再配以合适的实战项目训练,你也会逐渐成为牛人!

最后是项目开发能力
不管你是学Java还是别的技术,你的根本目的在于给客户创造价值!否则,你下大力气学习的东西,随着技术的进步和更新,很快就会过时!所以,技术的核心在于用技术创造有价值的成果!也就是说,客户需要什么,你就要用技术把客户需要的东西给他造出来!一个公司之所以要用各种福利条件极力挽留你,是因为你能够给公司带来极高的利益!那么,你有什么可以给公司利用的呢?公司最看重你的哪方面的能力呢?

做项目需要的能力很多,其中最核心最基础的就是 建模能力 (现在最主流的就是面向对象建模!)。什么是建模能力呢?

我给大家一个面试题:
一个保险公司的保险卡管理模块:销售人员领取保险卡信息(保险卡数量、卡号、领取日期),然后直接销售给客户,销售完毕后,将保险卡信息录入保险公司系统内部(销售人员信息、购买人信息、购买的保险卡数量、卡号等),客户登录保险公司网站激活保险卡,需要填写(保险卡卡号、激活密码、被保险人信息、受益人信息)

要求就是:如果这个模块交给你来做,你要怎么做?你要解决哪些问题?你可否画个图,给我描述一下你的想法是什么吗?

这只是一个面试题而已,因为只有简单几句话,所以我把它放到这里,让大家感受一下所谓建模要解决什么问题。而业务领域的问题实在是太多了!也许一个几十上百页的需求文档才能把某个业务领域的问题描述清楚,而你的职责就是要把它们实现出来!

某个公司要开发一个考勤管理系统,要求与现有的人力资源系统对接,你是主要的技术负责人,那么,你要做哪些工作呢?

某ERP项目要实现一个排班管理模块,交给你去完成,你如何去完成呢?

不要抱怨项目经理给你的信息太少(只有几句话),不要抱怨客户没有描述清楚他们的需求…… 你的价值就在于理顺所有的问题,用各种手段获得你想要的信息,按照一定的思路汇总,并在特定的时间里逐个解决它

你应该意识到学Java不是一个坦克大战、一个网络飞车、一个CMS、一个DRP、一个OA那么简单,你不要沉迷于那些技术细节(虽然也是有必要的,但不要转牛角尖),不要满足于实现了CRUD式的项目需求(虽然这是基础中的基础),在你的前方,永远有一个目标在那里,需要你去努力追赶!  

今后你将面对更加繁杂的需求,你学习项目的唯一目的,就是:学习如何将需求转化为实现,如何对需求进行分析,如何建立概念模型,如何理顺各种概念之间的关系,如何进行设计,如何选择合适的技术来实现你的设计方案,如何对你的实现进行测试,如何解决你所遇到的形形色色的问题(性能、需求变更等)。当你真正到公司里面从事了几年开发之后,你就会同意我的说法!

利用Java找工作,需要的就是项目经验, 项目经验就是理解项目开发的基本过程,理解项目的分析方法,理解项目的设计思路,理解项目的实现技巧,理解项目的测试方法,理解项目中各种问题的解决方案 !!!

所以,你该清楚你的目标了!

Guess you like

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