`
麦田1990
  • 浏览: 72672 次
文章分类
社区版块
存档分类
最新评论

Java项目经验——程序员成长的关键

 
阅读更多

Java就是用来做项目的!Java的主要应用领域就是企业级的项目开发!要想从事企业级的项目开发,你必须掌握如下要点:

1、掌握项目开发的基本步骤

2、具备极强的面向对象的分析与设计技巧

3、掌握用例驱动、以架构为核心的主流开发方法

没有人愿意自己一辈子就满足于掌握了一些代码实现的技巧,别人告诉你要实现什么,你就用代码堆砌来实现别人的要求!你必须学会从整个项目的角度去思考!你必须学会假如你是项目经理,你该如何思考!你必须学会假如你是架构师,你该如何思考!你必须掌握针对某个特定问题领域的分析方法!

关于基础知识:你可以看看这些名词或知识点,看是否能说出个一二三四来。

JavaSE

----基本语法、数据类型、操作符等:int、long、Integer、Long、if、else、for、while

----面向对象:class(类)、Object(对象)、instance(实例)、state(状态)、behavior(行为)、field、method、new、可见性(访问控制)、attribute、property、package、import、static variable、class variable、instance variable、heap、method area、stack、GC(垃圾回收)、override、overload、对象转型(casting)、多态、this、super

----异常处理:理解编译期错误和运行期错误的区别、Exception、RuntimeException、checked exception、unchecked exception、try、catch、finally、throw new XXXException、throws XXXException、异常处理的基本原则

----数组与集合:数组的定义和使用方法、Collection、List、Set、Map、ArrayList、HashSet、HashMap、Iterator、equals、hashCode、Comparable、Comparator

----常用类:String、intern、常量池、StringBuffer、java.util.Date、SimpleDateFormat、Regex(正则表达式)

----反射机制:Class、Method、Field、invoke、newInstance、BeanUtils(apache-commons)、PropertyUtils(apache-commons)

----输入输出流:InputStream、OutputStream、Reader、Writer、Adapter设计模式与原始流类、Decorator设计模式与包装流类、对象序列化和反序列化

----多线程:Thread、Runnable、sleep、wait、notify、synchronized、lock

Servlet和JSP

----HttpServlet、doGet、doPost、HttpServletRequest、HttpServletResponse、request.getParameter()、request.setAttribute()、request.getAttribute()、request.getSession()、ServletContext、Filter、web.xml、tomcat、forward与redirect、http协议的无状态性、cookie、JSP Scope Object、<c:out …/>、<c:forEach …>

HTML与JavaScript

----你需要能够理解常见的网页标签、理解在网页中引入JavaScript的方法、以及JavaScript的基本语法与使用方法

以上,就是你进一步学习Java所必备的基本知识。特别是一些个专业术语和名词,看到这些名词,如果你像看到亲爹一样亲切,那么说明你对Java的基础知识就很熟悉了。

接下来是SSH:

对于初学者来说,这三大框架被赋予了太多神秘的色彩,似乎它们是重中之重的知识!但是对于拥有多年Java开发经验的专业技术人员来说,对于那些Java牛人来说,却对这三大框架不太感冒!难道它们不重要吗?

现在很多企业都在用这三大框架,所以很多企业也把掌握这三大框架作为招聘的必备条件。不可否认的是,也有很多大型企业没有用这三大框架,这些企业经过多年发展,自身已经有一定的技术积累,也形成了自己独特的技术框架体系。这三大框架既可以说很重要,也可以说不重要。

说重要的原因在于:这三大框架对JavaEE开发中所存在的普遍的问题,提供了优美的解决方案,它们蕴含了这个行业中最NB的开发人员的努力和想法,所以,学习这三大框架,你就可以窥探到这些处于技术巅峰的牛人们究竟对一个问题是怎么想的,通过一种什么样的设计思路去解决问题的。所以,对于你来说,你没有太多项目开发的经验,经验是什么?经验就是你知道可能会遇到哪些问题,针对哪个问题可以有哪些解决方法,在某个情景下,哪种解决方法是较好的,哪种方法不太好等等!如果你没做过什么项目,你根本就不会去意识到你可能会遇到哪些问题,而这些问题往往又是非常关键的!解决得不好,会影响到你的程序的稳定性、可扩展性等等!三大框架就给初学者提供了了解你以后可能会遇到哪些问题,以及针对这些问题的解决方案!

当你了解了这三大框架为什么是重要的,那么你也就能理解,为什么这三大框架也可以说是不重要的。如果你曾经开发过很多项目,你碰到了各种各样的问题,凭着你的技术功底,逐个击破了这些问题,在这些人眼里,三大框架(是不是还有N个框架?呵呵)都是浮云!

你属于哪一种人呢?如果你没有太多项目开发经验,那么三大框架对于你来说就是非常重要的!而且,由此你也知道了该怎么去学这三大框架。对于三大框架的学习而言,着力点在于给你展示问题,并触发你自己主动的思考,我们鼓励你提出自己的想法,也许你的想法很白痴,但那毕竟是你自己的想法,如果你不知道牛人的想法,那你怎么知道自己的想法是很白痴的呢?在这种思想的碰撞过程中,你就会逐渐提高自己!所以,三大框架学完之后,你不应该只是看到一大堆配置文件,你不应该只是看到了一些Action,一些Service,一些映射文件,你不应该只知道session.save/update/delete,你不应该只是知道struts2中有一堆interceptor,你不应该只是看到一堆jar包……

如果你只是知道拷贝一堆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项目要实现一个排班管理模块,交给你去完成,你如何去完成呢?

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

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

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

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

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

分享到:
评论

相关推荐

    java程序员简历模板(一共19套模板)

    JAVA工程师个人简历中的项目经验范文.doc JAVA工程师简历模板.docx java开发简历范本——有经验.doc JAVA开发经理-个人简历模板.doc JAVA求职简历范例.doc java程序员个人简历.doc JAVA软件工程师简历范文.docx Java...

    Java项目经验汇总(简历及项目素材).zip

    Java部分 10 2014.02 - 2015.07 “今日开讲”开放式授课云平台 10 2015.11 - 至今 ITOO分布式云平台 11 2013.07 - 2014.01 IGO网 11 2014.08 - 2015.03 华为大数据预警平台 12 2014.03 - 2014.08 南方电网...

    北大青鸟ACCP 6.0 软件开发初级程序员:使用Java实现面向对象编程.pdf

     ——针对286项关键技能点逐一突破  ——斥资2000万,组织186名中美印专家投入研发  高强训练编程能力——1年半完成52000行代码编写  ——相当于1名程序员2年代码编写量  项目驱动案例贯穿——提供CRM、ERP...

    java面试笔试资料java笔试题大集合及答案题库java笔试题汇总资料188个合集.zip

    Java经典项目集锦.rar JAVA编程题全集(100题及答案).doc Java面试文档题库 Java面试笔试题库.CHM java面试笔试题库资料合集.zip Java面试问题集.pdf Java面试题以及答案(小生).pdf java面试题(题库全).doc JS ...

    java面试笔试题库java软件设计java笔试题大集合及答案文档资料合集300MB.zip

    Java经典项目集锦.rar JAVA编程题全集(100题及答案).doc java面试书籍源码 Java面试文档题库 Java面试笔试题库.CHM Java面试问题集.pdf Java面试题以及答案(小生).pdf java面试题(题库全).doc JS 数据库答案.doc ...

    java面试笔试题库java学习笔记开发教程互联网公司面试资料大全合集.zip

    Java经典项目集锦.rar JAVA编程题全集(100题及答案).doc java面试书籍源码 Java面试笔试题库.CHM Java面试问题集.pdf Java面试题以及答案(小生).pdf java面试题(题库全).doc JS 数据库答案.doc Land.the.Tech.Job....

    北大青鸟ACCP 6.0 软件开发初级程序员:使用Java理解程序逻辑.pdf

     ——针对286项关键技能点逐一突破  ——斥资2000万,组织186名中美印专家投入研发  高强训练编程能力——1年半完成52000行代码编写  ——相当于1名程序员2年代码编写量  项目驱动案例贯穿——提供CRM、ERP...

    java面试题及技巧4

    │ java程序员面试资料.zip │ JAVA笔试题(上海释锐).pdf │ MIME简介.txt │ SCJP试题详解.pdf │ SQL面试题_心灵深处.htm │ Struts+Hibernate+Spring轻量级J2EE企业应用实战.pdf │ Struts中文手册.pdf │ ...

    java面试题目与技巧1

    │ java程序员面试资料.zip │ JAVA笔试题(上海释锐).pdf │ MIME简介.txt │ SCJP试题详解.pdf │ SQL面试题_心灵深处.htm │ Struts+Hibernate+Spring轻量级J2EE企业应用实战.pdf │ Struts中文手册.pdf │ ...

    java面试题以及技巧

    │ java程序员面试资料.zip │ JAVA笔试题(上海释锐).pdf │ MIME简介.txt │ SCJP试题详解.pdf │ SQL面试题_心灵深处.htm │ Struts+Hibernate+Spring轻量级J2EE企业应用实战.pdf │ Struts中文手册.pdf │ ...

    开发实战经典王牌资源

    李兴华开发实战王牌资源 王牌1 Java SE 类库查询手册.pdf 王牌2 学习成果检测——【练一练】答案.pdf 王牌3 Eclipse常用快捷键.pdf 王牌4 Eclipse提示与技巧....王牌9 优秀程序员之路——Java开发经验及技巧大汇总.pdf

    JAVA核心技术

    JSP(TagLib)——&gt;ActionForm——&gt;Action ——&gt; Event——&gt;EJBAction——&gt;EJB ——&gt;DAO——&gt;Database JSP(TagLib) (forward) &lt;——Action &lt;——EventResponse&lt;—— ??Turbine:??主要应用方面:WEB层。??主要应用...

    java面试题及技巧3

    │ java程序员面试资料.zip │ JAVA笔试题(上海释锐).pdf │ MIME简介.txt │ SCJP试题详解.pdf │ SQL面试题_心灵深处.htm │ Struts+Hibernate+Spring轻量级J2EE企业应用实战.pdf │ Struts中文手册.pdf │ ...

    java面试题以及技巧6

    │ java程序员面试资料.zip │ JAVA笔试题(上海释锐).pdf │ MIME简介.txt │ SCJP试题详解.pdf │ SQL面试题_心灵深处.htm │ Struts+Hibernate+Spring轻量级J2EE企业应用实战.pdf │ Struts中文手册.pdf │ ...

    百度地图开发java源码-Assistant-Online-Working-System:优能中学助教工作平台——一个大学生为新东方助教团队自

    本着开源的理念、让更多初学者少走弯路的初心,在此我将项目源码开源,供大家学习,也可以让更多想我这样的“非科班”积累项目经验(这也是相比科班最吃亏的一项)。 ​ 当然,欢迎相收获知识、收获经验的同学加入和...

    百度地图毕业设计源码-studyjava-zz:Java再回首,重新探索这个精彩的世界

    ——java是一门编程语言,基于C++,摒弃糟粕,吸收精华,更方便程序员开发项目 ——java依然是最热门的开发语言,并且它的开源库特别多 怎么样使用Java? 二、内容 任何情况下,想要精通一门技术,必须先打牢基础。 ...

    《Google Android开发入门与实战》.pdf

     本书适合具备一定软件开发经验,想快速进入android开发领域的程序员;具备一些手机开发经验的开发者和android开发爱好者学习用书;也适合作为相关培训学校的android培训教材。... 目录 第1章 掀起你的盖头来...

    JSP设计第二版 - 内附源码(PDF中文版)

    作者出色地将他广博的经验与人共享,因此网页开发人员得以充分利用JavaServer Pages和相关网页技术。” ——Pierre Delisle,JSP标准标记库规范主管(JSP standard tag library specification lead) Hans Bergsten...

Global site tag (gtag.js) - Google Analytics