Java之SSH框架面试知识要点

Spring面试要点

  1. 开发中主要使用Spring的什么技术?
  2. 简述Spring框架的两大核心概念
  3. Spring中如何配置Bean
  4. Spring框架中bean的生命周期
  5. Spring如何整合Struts2
  6. Spring如何整合Hibernate
  7. Spring MVC和Struts2的比较分析
  8. Spring MVC的运行流程
  9. Spring MVC常用的注解
  10. 如何使用SpringMVC完成JSON操作
个人简单的见解:
  1. 主要使用Spring中的IOC容器管理,AOP对业务功能的扩展,整合其他框架
  2. IOC,控制反转,容器主动将资源推送给它所管理的组件,组件通过合适的方式进行接收DI(依赖注入)的对象。AOP,面向切面编程,对系统升级也不需要修改源代码,直接通过增加切面(功能)的方式对原来的业务进行升级扩展。
  3. 通过全类名的反射,通过工厂方法,FactoryBean
  4. 通过构造器或工厂方法创建bean实例----为bean的属性设置值和对其他bean的引用----将bean实例传递给bean后置处理器postProcessBeforeInitialization方法----使用bean----关闭容器调用bean的销毁方法destroymethod
  5. IOC容器管理Struts2的Action。将struts2-spring-plugin-2.2.1.jar复制到WEB下的lib目录下,在Spring的配置文件中配置Struts2的Action实例,其class属性不再指向Action的实现类,而是Spring容器中的Action实例的id
  6. IOC容器生成SessionFactory对象,并使用Spring的声明式事务。LocalSessionFactoryBean工厂bean,声明一个使用XML映射文件的SessionFactory实例。利用HibernateTransactionManager配置Hibernate的事务管理器
  7. SpringMVC是Servlet拦截请求并处理请求,而Struts2是Filter;SpringMVC基于方法设计,而Struts2基于类,每次发请求都要实例一个Action;Sturts2的OGNL表达式开发页面效率更高些。
  8. 一个请求匹配DispatcherServlet的请求映射路径(web.xml中),DispatcherServlet接收到请求后,将请求信息及HandlerMapping的配置找到处理请求的Handler,当DispatcherServlet得到Handler通过HandlerAdapter对其进行封装,再以统一的适配器接口调用Handler。处理完成业务逻辑返回一个ModelAndView给DispatcherServlet,ModelAndView包含了试图逻辑名和模型数据信息。DispatcherServlet借助ViewResolver完成逻辑视图名到真实试图对象的解析。得到真实视图对象View后,DispatcherServlet使用这个View对ModelAndView中的模型数据进行视图渲染
  9. @RequestMapping   @PathVariable  @RequestParam  @RequestBoy   @ResponseBody
  10. 配置MappingJacksonHttpMessageConverter   使用@RequestBody注解或ResponseEntity作为返回值

Struts2面试要点

  1. Struts2工作流程
  2. 拦截器和过滤器的区别
  3. 框架优点
  4. 如何访问HttpServletRequest/HttpSession/ServletContext域对象
  5. 默认包struts-default有什么作用
  6. 说说框架的拦截器,列举几个出来
  7. 值栈ValueStack
  8. ActionContext/ServletContext/pageContext的区别
  9. Struts2有哪几种结果类型
  10. 拦截器的生命周期和工作过程
个人简单见解:
  1. 请求发送给StrutsPrepareAndExecuteFilter;该filter判定是否是一个Struts2请求;若是,则把请求交给ActionProxy;ActionProxy创建一个ActionInvocation的实例并初始化;ActionInvocation实例调用Action的过程前后涉及到相关拦截器(Intercepter)的调用;Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果,调用结果的execute方法,渲染结果;执行各个拦截器invocation.invoke()之后的代码;把结果发送到客户端
  2. 过滤器依赖于Servlet容器,几乎对所有的请求其作用,只在容器初始化被调用一次;拦截器不依赖于Servlet,只对Action请求起作用,可以访问Action上下文(ActionContext)、值栈里的对象(ValueStack),在Action的生命周期中可以多次调用
  3. 基于MVC架构,使用OGNL快捷访问值栈中的数据,调用值栈中的对象方法。拦截器是一个Action级别的AOP,异常处理、文件上传、验证等都可以通过拦截器实现。
  4. 通过ActionContext访问域对象对应的Map对象;通过实现Aware接口使Struts2注入对应的Map对象;与ServletAPI 耦合的方式,通过ServletActionContext直接获取Servlet API对象,通过实现ServletXXXAware接口的方式使Struts2注入对应的对象
  5. struts-default内部定义了多个拦截器和Result类型,而框架核心是通过拦截器,如:从请求中封装请求参数到action,文件上传和数据验证等。该包定义在struts-default.xml中,所以每次自动加载。
  6. exception   fileUpload   i18n  modelDriven  params……
  7. 值栈贯穿在整个Action生命周期,保存在request域中,所以生命周期等同于requet。当框架接收到一个请求会创建ActionContext/ValueStack/Action,然后把Action存放进值栈,所以Action的实例会被OGNL访问。值栈是多实例的,因为Action是多实例的(servlet是单实例的),每个Action都有一个对应的值栈,Action对象保存在栈顶。值栈的本质是一个ArrayList,使用OGNL访问值栈内容不需要#,Struts2重写了request的getAttribute方法,所以可以使用EL直接访问值栈的内容
  8. ActionContext  当前Action的上下文环境,属于Struts2框架的API;ServletContext和PageContext是Servlet的API
  9. struts-default.xml中相关的配置,dispatcher  chain  redirect等
  10. 每个拦截器都要实现Interceptor接口,init()在拦截器被创建后立即被调用,在整个生命周期只被调用一次,可以在该方法中对相关资源进行必要的初始化。 intercept(ActionInvocation invocation)每拦截一个动作请求,该方法就会被调用一次。 destroy()该方法将在拦截器被销毁之前被调用,它在拦截器的生命周期内也只被调用一次。

Hibernate面试要点

  1. Hibernate的检索方式有哪些?
  2. Hibernate中Java对象的状态有哪些?
  3. Session的清理和清空有什么区别?
  4. load()和get()的区别
  5. hibernate的优缺点
  6. 描述使用hibernate进行大批量更新的经验
  7. Hibernate中getCurrentSession()和openSession()的区别?
  8. 如何调用原生SQL
  9. Hibernate的缓存
个人简单见解:
  1. 导航对象图检索;OID检索;HQL检索;QBC检索;本地SQL检索
  2. 临时状态;持久化状态;游离状态
  3. session.flush()清理缓存,缓存对象的状态来更新同步数据库      session.clear()清空调用,清空缓存,但不同步更新数据库
  4. 如果数据库中没有OID指定的对象,通过get方法得到是null,通过load得到的是一个***对象,如果后面调用对象的某个属性会抛异常:ObjectNotFoundException      load支持延迟加载,get不支持
  5. 优点:对JDBC访问数据库做了封装,灵活映射各种数据库,提供一二级缓存。缺点:无法对SQL进行优化,使用ORM原则倒是配置复杂,执行效率和原生的JDBC相比偏差,不支持批量修改删除
  6. 通过JDBC API执行相关的SQL语句或者调用相关的存储过程
  7. getCurrentSession()会查看当前线程中是否绑定了Session,如果有直接返回,如果没有则创建,事务提交后会自动关闭Session。openSession()直接new一个新的Session并返回,需要手动关闭Session。
  8. Session的doWork()方法
  9. 一级缓存是内置的,又称为Session的缓存,事务范围的缓存,在一级缓存中,持久化类的每个实例都具有唯一的OID。二级缓存又称为SessionFactory缓存,生命周期和整个应用此程序的整个过程对应,因此是进程范围或集群范围的缓存,有可能出现并发问题,需要采用适当的并发访问策略,该策略被缓存的数据提供了事务隔离级别。默认情况下二级缓存不会启用可配置插件。根据ID访问数据,首先从一级缓存中查,查不到,如果配置了二级缓存,那么就从二级缓存中查,如果还查不到,就从数据库查,把结果按照ID放入到缓存删除、更新、着呢国家数据的时候,同时更新缓存

#Java#
全部评论
SSH现在是不是用的很少了呀??
点赞 回复 分享
发布于 2019-10-29 17:02
你说的是SSH?
点赞 回复 分享
发布于 2019-10-06 20:45

相关推荐

作为带过好几个实习生的老mentor,我见过有同学带着一腔热血来实习,最后却只带走一份单薄的履历。实习,是你从学校到职场最关键的过渡期,它的价值远不止一份实习证明。今天,我不讲大道理,就从我作为Mentor的视角,给你们几条能立刻用上的建议。记住,你的目标不是当个好学生,而是成为一个值得信赖的职场新人。一、 心态转变:从被动答题到主动解题这是我最想强调的一点。学生思维是:等待老师布置明确的作业,然后完成它。职场思维是:主动发现模糊的问题,然后解决它。反面事例:接到任务后,埋头就做,遇到困难不吭声,直到截止日期才说“这个我不会”。Mentor期待的是啥呢?首先是确认目标:接到任务后,先用自己的话复述一遍:“我理解这个任务是要达成XX效果,对吗?” 确保方向没错。然后是主动思考:不要只带问题来,要带“选择题”。问“这个数据我不会查,我尝试了A和B方法都失败了,您看是方法C更合适,还是我有其他没考虑到的渠道?” 这证明了你的思考和努力。最后是闭环思维:任务完成后,主动告知结果:“XX任务已完成,数据/文件已发您邮箱,并同步在团队网盘了。其中有个小发现是……,供您参考。” 让一切有始有终。二、 沟通方式:实习生的很多错误,都源于“想当然”和“不敢问”。反面教材:在做一个PPT时,因为不确定公司模板,就套用了自己觉得好看的模板,结果不能用。那么怎么确认,怎么提问呢?第一个,不懂就问,但别重复问:第一次问,是学习;同样的问题问第三次,就是不用心。准备一个笔记本,把关键信息、操作流程、注意事项都记下来。第二个,及时汇报,别等追问:特别是遇到卡壳或可能延期时,一定要提前说。Mentor不怕你慢,就怕你失联。没事儿更新一下进度:目前已完成80%,但在XX环节遇到点阻力,正在想办法沟通等回复,预计今天下班前确定结果,到时候给您,这样说能让人极度安心。第三个,珍惜1on1机会:和Mentor的定期沟通,不是你被动接受批评,而是你主动获取信息和反馈的黄金时间。提前准备好:a) 本周工作进展;b) 遇到的困惑/挑战;c) 希望学习的新技能;d) 对团队业务的任何好奇。三、 工作习惯: 专业性体现在细节里职业素养不是空话,它藏在每一个你容易忽略的细节中。1. 邮件/沟通软件礼仪:邮件:标题清晰(如【实习生XX-XX项目周报】),正文称呼得体,结尾有落款。别用“在吗?”开头。工作群:别发表情包刷屏,沟通事情简明扼要。收到任务或通知,回复“收到,谢谢”,这是基本的确认和尊重。2. 文件管理与命名:我会观察实习生的桌面,看他们的使用习惯,乱糟糟的桌面说明他没条理。文件命名要使用统一的命名规则:日期_项目名_内容_版本_姓名。例如:20231027_秋招海报_初版_张三。这能为整个团队节省大量沟通成本。3. 对待杂活的态度:复印、整理数据、会议纪要……这些dirty work是不可避免的。但优秀的人是能从中找到价值的:整理数据时,可以留意数据之间的关联或异常,做会议纪要时,可以梳理出会议的决策和待办事项。四、 终极目标:带走三样东西1. 一段能讲出STAR法则的实战经历:这直接决定了你未来求职简历的厚度。2. 一位可以为你未来背书的Mentor/同事:好好表现,离职时保持联系,他们可能成为你未来求职的推荐人和内推渠道。3. 对行业和岗位的真实认知:通过这次实习,你想清楚自己是更热爱这个行业,还是想赶紧跑路?这个答案,价值千金。最后,作为你们的Mentor,我想说:大胆去试,勇敢去问,别怕犯错。实习期是你犯错成本最低的时候。展现出你的靠谱、主动和思考,我们做Mentor的,会非常乐意把更核心的任务交给你,因为带你,也是在为团队培养未来的战友。希望这些建议能帮你少走弯路,打一场漂亮的实习战!
家族企业:实习一年比在大学多年都有用
第一次找实习,我建议__
点赞 评论 收藏
分享
评论
5
56
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务