集合
2.1、Collection层次结构中的跟接口
[if !supportLists]1)[endif]Collection表示一组对象,这些对象也称为collection的元素。
[if !supportLists]2)[endif]Java集合的缺点:类型未知
[if !supportLists]3)[endif]总的来说,java API中所用的集合类,都是实现了Collection接口,他的一个类继承结构如下:
*Collection *Collection *Collection *Collection
[if !supportLists]4)[endif]List是基于Array,可以有重复的值。
[if !supportLists]5)[endif]Vector:基于Array的List很重要的一点就是Vertor“sychronized”的,这个也是Vector和ArrayList的唯一区别
[if !supportLists]6)[endif]ArrayList:基于Array上链表,但是不同的是ArrayList不是同步的
[if !supportLists]7)[endif]LinkedList:它不是基于Array的,所以不能接受Array性能的限制。它每一个节点(Node)都包含两方面的内容
[if !supportLists]a) [endif]节点本身的数据(data)
[if !supportLists]b) [endif]下一个节点的信息(nextNode)。所以当对LinkedList做添加,删除动作的时候就怒能像基于Array的List一样,必须进行大量的数据移动。只要更改nextNode的相关信息就可以实现了。这就是LinkedList的优势。
[if !supportLists]8)[endif]HashSet:虽然同List都实现了Collection接口,但是他们的实现方式却不大一样。List基本上都是以Array为基础。但是Set则是在HashMap的基础来实现的,这个就是Set和List的根本区别。HashSet的存储方式是把HashMap中的Key作为Set的对应存储。
[if !supportLists]9)[endif]Set总结:
[if !supportLists]1)[endif]Set实现的基础是Map(HashMap)。
[if !supportLists]2)[endif]Set中的元素不能重复的,如果使用add(Object obj)方法添加已经存在的对象,则会覆盖前面的对象。
[if !supportLists]10)[endif]性能时Map所要面对的一个大问题。如果你知道get ( )时怎么工作的,你就会发觉(比方说)在ArrayList里面找对象会是相当慢的。而这正是HashMap的强项。它不是慢慢地一个个地找这个键,而是用用了一种被称为“hash code”的特殊值进行查找的。散列(hash)时一种算法,它会从目标对象当中提取一些信息,然后生成一个表示这个对象的“相对独特”的int。HashCode ( )是Object根类的方法,因此所有的Java对象都能生成Hash Code。HashMap则利用对象的hashCode ( )来进行快速查找。这样性能就有了急剧的提高。
2.2、Hastable 与HashMap的区别?答:Hashtable和Hashmap的主要区别如下: 1) Hashtable是同步的,而HashMap不是同步的。所以不要求同步的时候,用HashMap的效率较高 2)Hashtable版本较HashMap版本低。
2.3、说明List和Set的区别答:两者主要区别如下: 1) List用来处理序列,而Set用来处理集。 2) List中的内容可以重复,而Set则不行。
设计模式方面
3.1、开发中都用到了那些设计模式?在什么场合?
答:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。通过这种方式,你可以无数次地使用那些已有解决的方案。无需要重复相同的工作。主要用到了MVC的设计模式。用来开发JSP/Servlet或者J2EE的相关应用。简单工厂模式等。
3.2、概述MVC体系结构
答:在MVC包括三类对象:
a)model:模型,操作数据的业务处理层,并立于表现层(Independe ntof
presentation)
b)view:视图,通过客户端数据类型显示数据,并回显模型层的执行结果。
c)controller是控制器,它定义用户界面对用户输入的响应方式。
[if !supportLists]1)[endif]在MVC体系中,模型通常被称为“业务逻辑”,是真正完成任务的代码,视图就是使用界面,反映数据的变化。控制器控制模型和视图之间的交互过程。它决定着用户返回怎眼的视图、检查通过界面输入信息以及选择出来输入信息的模型
[if !supportLists]2)[endif]在MVC中,表示层和逻辑层分离,各部分可相互独立进行开发,便于开发和维护,提高了开发效率
3.3、创建模式
1)设计模式之Factory(工厂模式)
2)设计模式之Prototype(原型模式):用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
3)设计模式之Builder:汽车由车轮 方向盘 发动机很多部件组成,同时,将这些部件组装成汽车也是一件复杂的工作,Builder模式就是将这两种情况分开进行。
4)设计模式之Singleton(单态模式):保证一个类只有一个实例,并提供一个访问它的全局访问点。
三、设计模式方面
3.1、开发中都用到了那些设计模式?在什么场合?
答:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。通过这种方式,你可以无数次地使用那些已有解决的方案。无需要重复相同的工作。主要用到了MVC的设计模式。用来开发JSP/Servlet或者J2EE的相关应用。简单工厂模式等。
3.2、概述MVC体系结构
答:在MVC包括三类对象:
a)model:模型,操作数据的业务处理层,并立于表现层(Independe ntof
presentation)
b)view:视图,通过客户端数据类型显示数据,并回显模型层的执行结果。
c)controller是控制器,它定义用户界面对用户输入的响应方式。
1)在MVC体系中,模型通常被称为“业务逻辑”,是真正完成任务的代码,视图就是使用界面,反映数据的变化。控制器控制模型和视图之间的交互过程。它决定着用户返回怎眼的视图、检查通过界面输入信息以及选择出来输入信息的模型
2)在MVC中,表示层和逻辑层分离,各部分可相互独立进行开发,便于开发和维护,提高了开发效率
3.3、创建模式
1)设计模式之Factory(工厂模式)
2)设计模式之Prototype(原型模式):用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
3)设计模式之Builder:汽车由车轮 方向盘 发动机很多部件组成,同时,将这些部件组装成汽车也是一件复杂的工作,Builder模式就是将这两种情况分开进行。
4)设计模式之Singleton(单态模式):保证一个类只有一个实例,并提供一个访问它的全局访问点。3.4、结构模式
[if !supportLists]1)[endif]设计模式之Facade:可扩展的使用JDBC针对不同的数据库编程,Facade提供了一种灵活的实现. 2)设计模式之Proxy:以Jive为例,剖析代理模式在用户级别授权机制上的应用 3)设计模式之Adapter:使用类再生的两个方式:组合(new)和继承(extends),这个已经在"thinking in java"中提到过. 4)设计模式之Composite:就是将类用树形结构组合成一个单位.你向别人介绍你是某单位,你是单位中的一个元素,别人和你做买卖,相当于和单位做买卖。文章中还对Jive再进行了剖析。 5)设计模式之Decorator:Decorator是个油漆工,给你的东东的外表刷上美丽的颜色. 6)设计模式之Bridge:将"牛郎织女"分开(本应在一起,分开他们,形成两个接口),在他们之间搭建一个桥(动态的结合) 7)设计模式之Flyweight:提供Java运行性能,降低小而大量重复的类的开销.3.5、行为模式 1)设计模式之Template:实际上向你介绍了为什么要使用Java 抽象类,该模式原理简单,使用很普遍. 2)设计模式之Memento:很简单一个模式,就是在内存中保留原来数据的拷贝. 3)设计模式之Observer:介绍如何使用Java API提供的现成Observer 4)设计模式之Chain of Responsibility:各司其职的类串成一串,好象击鼓传花,当然如果自己能完成,就不要推委给下一个. 5)设计模式之Command:什么是将行为封装,Command是最好的说明. 6)设计模式之State:状态是编程中经常碰到的实例,将状态对象化,设立状态变换器,便可在状态中轻松切换. 7)设计模式之Strategy:不同算法各自封装,用户端可随意挑选需要的算法. 8)设计模式之Mediator:Mediator很象十字路口的红绿灯,每个车辆只需和红绿灯交互就可以. 9)设计模式之Interpreter:主要用来对语言的分析,应用机会不多. 10)设计模式之Visitor:访问者在进行访问时,完成一系列实质性操作,而且还可以扩展. 11)设计模式之Iterator:这个模式已经被整合入Java的Collection.在大多数场合下无需自己制造一个Iterator,只要将对象装入Collection中,直接使用Iterator进行对象遍历。
3.6、单例模式特点(什么是单例模式)?
1)单例类只能有一个实例
2)单例类必须自己创建自己的唯一实例
3)单例类必须给所有其他对象提供这一实例。
3.7、单例模式的作用(用单例模式的目的)?
答:Singleton模式主要作用是保证在JAVA应用程序中,一个Class只有一个实例存在。
3.8、单例有几种?
1)第一种形式:懒汗式单例类
* 优点:第一次调用才初始化,避免浪费内存
* 缺点:必须加锁才能保证单例,但加锁也会影响效率
2)第二种形式:饿汉式单例类
* 优点:没有加锁。执行效率会提高
* 缺点:类加载是就初始化,浪费内存
3)第三种形式:登记式单例类
* 内部类只有在外部类调用才能被加载,又不用加锁,此模式有前两个模式的优点,屏蔽了它们的缺点,是最好的单例模式类
3.9、工厂模式
1)第一种形式:简单工厂
* 把对象的创建放到一个工厂类中通过参数来创建不同的对象。
2)第二种形式:工厂方法
* 每种产品由一种工厂来创建
3)第三种形式:抽象工厂
* 感觉只是工厂方法的复杂化,产品系列复杂
网友评论