JAVA面试知识整理

一、Java Web系统框架的设计

为满足银行日常业务需要,如何设计满足稳定性与及时性的服务框架?

1.MVC编程模式

视图View:JSP   +   控制器Controler:Servlet   +    模型Model:Javabean

缺陷:JSP嵌入JAVA代码,页面结构混乱;C和M耦合度高,程序复用性差

2.新工具的改进

表示层:Struts   +   业务层:Spring    +    持久层:Hibernate

3.不同框架实现MVC的方式

a) Servlet:

b) Spring:

c) Struts2:

4.Struts2

优点:业务代码解耦,提高开发效率

缺点:执行效率偏低,需要使用反射、解析XML等技术手段,结构复杂

5.Hibernate

优点:

1、对象化。人员以面相对象的思想来操作数据库。Hibernate支持许多面向对象的特性,如组合,继承,多态等。

2、更好的移植性.对于不同的数据库,开发者只需要使用相同的数据操作即可.

3、开发效率高。hibernate提供了大量的封装(这也是它最大的缺点),很多数据操作以及关联关系等都被封装的很好,开发者不需写大量的sql语句,这就极大的提高了开发者的开发效率。

4、缓存机制的使用。hibernate提供了缓存机制(session缓存,二级缓存,查询缓存),对于那些改动不大且经常使用的数据,可以将它们放到缓存中,不必在每次使用时都去查询数据库,缓存机制对提升性能大有裨益。

缺点:

一、由于对持久层封装过于完整,导致开发人员无法对SQL进行优化,无法灵活使用JDBC的原生SQL,Hibernate封装了JDBC,所以没有JDBC直接访问数据库效率高。要使用数据库的特定优化机制的时候,不适合用Hibernate。
二、框架中使用ORM原则,导致配置过于复杂,一旦遇到大型项目,比如300张表以上,配置文件和内容是非常庞大的,另外,DTO满天飞,性能和维护问题随之而来
三、如果项目中各个表中关系复杂,表之间的关系很多,在很多地方把lazy都设置false,会导致数据查询和加载很慢,尤其是级联查询的时候。
四、Hibernate在批量数据处理时有弱势,对于批量的修改,删除,不适合用Hibernate,这也是ORM框架的弱点。Hibernate不适用于小型项目。

五、针对单一对象简单的增删查改,适合于Hibernate,而对于批量的修改,删除,不适合用Hibernate,这也是OR框架的弱点;要使用数据库的特定优化机制的时候,不适合用Hibernate

6.Spring

一、非侵入式编程

Spring框架的API不会再业务逻辑上出现,即业务逻辑是POJO(Plain Ordinary Java Object)。由于业务逻辑中没有Spring的API,所以业务逻辑可以从Spring框架快速的移植到其他框架。

二、容器

  Spring作为一个容器,可以管理对象的生命周期、对象与对象之间的依赖关系。可以通过配置文件来定义对象,以及设置其他对象的依赖关系。

三、IoC

控制反转(Inversion of Control),即创建被调用的实例不是由调用者完成,而是由Spring容器完成,并注入调用者。

当应用IoC,一个对象依赖的其他对象会通过被动的方式传递进来,而不是这个对象自己创建或查找依赖对象,即,不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。

四、AOP

    面向切面编程,是一种编程思想,是面向对象编程OOP的补充。Spring提供面向对象编程的支持,允许通过分离应用的业务逻辑与系统级服务(日志和事务管理)进行开发。应用对象只实现他们应该做的(完成业务逻辑),并不负责其它的系统级关注点(日志或者事务的支持)。

可以把日志、安全、事务管理等服务理解成一个“切面”,把很多被业务逻辑反复使用的服务完全剥离出来,以达到复用。然后将“切面”动态的“织入”到业务逻辑中,让其享受此“切面”的服务。

原文地址:https://www.cnblogs.com/xmalll/p/11638036.html

时间: 2024-07-30 07:25:51

JAVA面试知识整理的相关文章

JAVA基础知识整理

一.首先先明白get与post的基本定义和区别: 这是两种在客户端和服务器端进行请求-响应的方法. 1get:从指定的资源请求数据. 2post:向指定的资源提交要处理的数据. get基本上用于从服务器取回数据,注意:get方法可能返回缓存数据. post可以从服务器上获取数据,不过,post方法不会缓存数据,并且常用语连同请求一起发送数据. 二. Jquery $.get()方法. $.get()方法通过Http Get发起请求,从服务器上请求数据. 语法:&.get(URL,callback

【Java基础】Java面试题目整理与解说(二)

1.Collection 和 Collections 的差别. Collection 是集合类的上级接口,继承于他的接口主要有 Set 和 List. Collections 是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索.排序.线程安全化等操作. 2.HashMap 和 Hashtable 的差别. HashMap 是 Hashtable 的轻量级实现(非线程安全的实现),他们都完毕了 Map 接口,HashMap是非线程安全,效率上可能高于 Hashtable.在多个线程

【Java基础】Java面试题目整理与讲解(二)

1.Collection 和 Collections 的区别. Collection 是集合类的上级接口,继承于他的接口主要有 Set 和 List. Collections 是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索.排序.线程安全化等操作. 2.HashMap 和 Hashtable 的区别. HashMap 是 Hashtable 的轻量级实现(非线程安全的实现),他们都完成了 Map 接口,HashMap是非线程安全,效率上可能高于 Hashtable.在多个线程

Java基础知识整理(一)

概述 公司业务需要,产品既要有.NET又需要Java,没得选择,只能业余时间学习Java,整体觉得Java也.NET还是很相似的,只是语法有差别,差别也不是很大,这就将学习Java的基础知识整理下,以便于自己的学习.作为个.NET程序猿也可以学习Java ,毕竟技多不压身,学习多也要精通. 开发工具 eclipse ,开发java类似.NET 需要装JDK类似.NET Framework. Java开发工具eclipse设置 1.设置字体:window设置: 2.设置快捷键:window--ke

JAVA hashmap知识整理

HashMap和Hashtable的比较是Java面试中的常见问题,用来考验程序员是否能够正确使用集合类以及是否可以随机应变使用多种思路解决问题.HashMap的工作原理.ArrayList与Vector的比较以及这个问题是有关Java 集合框架的最经典的问题.Hashtable是个过时的集合类,存在于Java API中很久了.在Java 4中被重写了,实现了Map接口,所以自此以后也成了Java集合框架中的一部分.Hashtable和HashMap在Java面试中相当容易被问到,甚至成为了集合

Java并发知识整理

整理了一下前端时间学习Java并发的笔记,大约有40篇. 1. Java并发基础知识 并发基础(一) 线程介绍 并发基础(二) Thread类的API总结 并发基础(三) java线程优先级 并发基础(四) java中线程的状态 并发基础(五) 创建线程的四种方式 并发基础(六) 线程Thread类的start()和run() 并发基础(七) Thread 类的sleep().yeild().join() 并发基础(八) java线程的中断机制 并发基础(九) java线程的终止与中断 并发基础

Java面试题目整理

一.引言:本文主要整理遇到的面试题目,以及提供自己的见解,将会持续更新,如有问题,可评论交流,一起进步. 二.问题及我的见解: 1. n个结点可以组合成多少棵不同的二叉树? 答:2^n-n棵 2. 什么是bean? 答: bean本质上就是可复用的类,比如在spring中的bean就是表示组件的意思. 3. String.StringBuffer.StringBuilder的有什么区别? 答:String是内容和长度固定的类 StringBuffer是内容和长度可变的类,并且线程安全 Strin

Java多线程知识整理

一.概念 进程-->正在进行中的程序. 迅雷下载时将一个文件拆分为5部分,是为了跟CPU争夺资源. 拆分的5部分,每一部分都称之为线程. 线程是程序中的控制单元,或者叫执行路径. 每一个进程执行都有一个执行顺序,该顺序是一个执行路径, 每一个程序打开,都会在内存中分配一块空间. 进程就是为了定义,标识这个空间的,它用于封装里面的控制单元. 线程就是进程中的一个独立的控制单元,线程在控制着进程的执行. 一个进程中至少有一个线程,线程是进程中的内容. JVM 启动的时候会有一个进程Java.exe

Java面试知识的认知描述

连接池:同时操作连接数据库,创建一个连接池,池子里创建一万个数据库链接.根据系统运行情况关闭链接.高峰期链接达到最大MAX进行排队,对在用的链接实现失效时间.有几种:tomcat请求服务器(servers.xml/context.xml配置),dbcp(database connection poor),c3p0,java连接池. 索引:数据的查找,但删除修改效率降低 表更新 主外键 where 迭代器:Map迭代器,Collection遍历循环输出值,Iterator,items,var,是序