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找工作,需要的是项目经验,项目经验是理解项目开发的基本过程,理解项目的分析方法,理解项目的设计思路,理解项目的实现技巧,理解项目的测试方法,理解项目中各种问题的解决方案!!!

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