版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、名词解释: HTTP : Hypertext Transfer Protocol J2EE : Java 2 Platfore , Enterprise Edition JNDI : Java Naming and Directory Interface SOAP : Simple Object Access Protocol UDDI : Universal Description Discovery and Integration OOP : Object Oriented Programming AOP : Aspect Oriented Programming IOC : Invers
2、ion of Control DI : Dependence Injection Web : World Wide Web ORM : Object/Relation Mapping DOM : Document Object Model TCP : Transmission Control Protocol UDP : User Datagram Protocol IP : Internet Protocol编程基础:1. 描述面向对象特征?请一个例子说明,比方说车?面向对象的4个基本特征:封装性、继承性和多态性。a) 所有东西都是对象。b) 程序是一大堆队形的组合。c) 每个对象都有自己的
3、存储空间,可容纳其他对象。d) 每个对象都有一种类型。e) 同一类所有对象都能接收相同的消息。封装是面向对象编程的特征之一,也是类和对象的基本特征。封装将数据以及加在这些数据上的操作组织在一起,成为有独立意义的构件。外部无法直接访问这些封装了的数据,从而保证了这些数据的正确性。如果这些数据发成了差错,也很容易定位错误是由哪些操作引起的。继承是一种联接性的层次模型,并且允许和鼓励类的重用,他提供了一种明确表述共性的方法。对象的一种新类可以从现有的类中派生,这个过程称之为类的继承。新类继承了原始类的特征,新类称之为原始类的派生类(子类),而原始类称之为新类的基类(父类)。派生类可以修改或增加新的方
4、法使之更适合特殊的需求。这也体现了大自然中一般与特殊的关系。继承性很好的解决了软件的可重用问题。比如说:所有的windows应用程序都有一个窗口,它们可以看作都是从一个窗口类派生出来的。但是有的应用程序用于文字处理,有的程序用于绘图,这是由于派生出了不同的子类,各个子类添加了不同的特性。多态性是指允许不同的类的对象对同一消息做出响应。比如同样的加法,把两个时间加在一起和把两个整数加在一起肯定完全不同,又比如,同样的选择“编辑”、“粘贴”操作,在字处理程序和绘图程序中有不同的效果。多态性包括参数化多态性和运行时多态性,多态语言具有灵活。抽象,行为共享、代码共享的优势,很好解决了应用程序函数同名问
5、题。2. abstractclass和interface有什么区别?声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。
6、多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换。3. char型变量中能不能存贮一个中文汉字?为什么?是能够定义成为一个中文的,因为java中以unicode编码,一个char个16个字节,所以放一个中文是没问题的。4. 谈
7、谈final , finally , finalize的区别。Final用于声明属性、方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。Finally是异常处理语句结构的一部分,表示问题执行。在异常处理时提供 finally 块来执行任
8、何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。Finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等Object类的一个方法。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。
9、finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。5. 匿名内部类是否可以作为父类被其他类继承,或作为接口被实现?匿名内部类不能被继承,也不能被实现,因为他没有名字。而一个内部类,只要有名字,就可以作为父类被继承,也可以作为接口被实现。6. Java使用接口比使用继承有哪些更多的好处?由于Java不支持多继承,而有可能某个类或对象要使用分别在几个类或对象里面的方法或属性,现在的单继承机制不能满足要求。与继承相比,接口有更高的灵活性,因为接口中没有任何实现代码。当一个类实现接口以后,该类要实现接口里面所有的方法和属性,并且接口里面的属性在默认状态下都行public stati
10、c,所有方法默认情况下是public,一个类可以实现多个接口。7. 对象实例化方式?有什么区别?直接new对象,Class.forName(xxx.xx.xx),Spring的注入机制,反射。 Class.forName(xxx.xx.xx)返回一个类首先你要明白在Java里面任何class都要装载在虚拟机上才能运行。这句话就是装载类用的(和new不一样,要分清楚)。可以考虑一下这个问题,给出一个字符串变量,他代表一个类的包名和类名,怎样实例化它?只有提到的这个方法了,不过要再加一点。A a=new A();是一样的效果。 Spring将会使用默认的构造方法来建立Bean实例好处是调用静态工厂
11、方法的对象不用了解对象建立细节。8. 类反射的作用和使用场合?Reflection是Java被视为动态(或准动态)语言的一个关键性质。这个机制允许程序在运行时透过Reflection APIs取得任何一个已知名称的class的内部信息,包括其modifiers(诸如public,static等等)、superclass(例如Object)、实现之interfaces(例如Clonable),也包括fields和methods的所有信息,并可于运行时改变field内部唤起methods。 Java有着一个非常突出的动态相关机制:Reflection。这个字的意思是“反射、映象、倒影”,用在Jav
12、a身上指的是我们可以运行时加载、探知、使用编译期间完全未知的classes。换句话说,Java程序可以加载一个运行时才得知的名称的class,获悉其完整构造(但不包括methods定义),并生成其对象实体、或对其field设值、或唤起其methods1。这种“看透class”的能力(the ability of the program to examine itself)被称为introspection(内省、内观、反省)。Reflection和introspection是常被并提的两个术语。涉及到类和方法主要有:java.lang.Class,以及java.lang.Reflect中的Met
13、hod、Field、Constructor等等classes。9. 序例化的作用?序例化就是将一个对象的状态(各个属性量)保存起来,然后在适当的时候再获得。序列化分为两大部分:序例化和反序例化。序例化是这个过程的第一部分,将数据分解成字节流,以便存储在文件中或在网络上传输。反序例化就是打开字节流并重构对象。对象序例化不仅要将基本数据类型转换成字节表示,有时还要恢复数据。恢复数据的对象实例。序例化的什么特点:如果某个类能够被序例化,其子类也可以被序例化。声明为static和transient类型的成员数据不能被序例化。因为static代表类的状态,transient代表对象的临时数据。什么时候使
14、用序例化:对象序例可以实现分布式对象。主要应用例如:RMI要利用对象序例化运行远程主机上的服务,就像在本机上运行对象时一样。Java对象序例化不仅保留一个对象的数据,而且递归保存对象引用的每个对象的数据。可以将整个对象层次写入字节流中,可以保存在文件中或在网络连接上传递。利用对象序例化可以进行对象的“深复制”,即复制对象本身引用的对象本身。序例化一个对象可能得到整个对象序例。可以看看接口java.io.serializable的中文解释:Serializablepublic interface Serializable 类通过实现 java.io.Serializable 接口以启用其序列化功
15、能。未实现此接口的类将无法使其任何状态序列化或反序列化。可序列化类的所有子类型本身都是可序列化的。序列化接口没有方法或字段,仅用于标识可序列化的语义。 要允许不可序列化类的子类型序列化,可以假定该子类型负责保存和还原超类型的公用 (public)、受保护的 (protected) 和(如果可访问)包 (package) 字段的状态。仅在子类型扩展的类有一个可访问的无参数构造方法来初始化该类的状态时,才可以假定子类型有此责任。如果不是这种情况,则声明一个类为可序列化类是错误的。该错误将在运行时检测到。 在反序列化过程中,将使用该类的公用或受保护的无参数构造方法初始化不可序列化类的字段。可序列化的
16、子类必须能够访问无参数的构造方法。可序列化子类的字段将从该流中还原。 当遍历一个图形时,可能会遇到不支持可序列化接口的对象。在此情况下,将抛出 NotSerializableException,并将标识不可序列化对象的类。 在序列化和反序列化过程中需要特殊处理的类必须使用下列准确签名来实现特殊方法: private void writeObject(java.io.ObjectOutputStream out) throws IOException private void readObject(java.io.ObjectInputStream in) throws IOException,
17、 ClassNotFoundException; writeObject 方法负责写入特定类的对象的状态,以便相应的 readObject 方法可以还原它。通过调用 out.defaultWriteObject 可以调用保存 Object 的字段的默认机制。该方法本身不需要涉及属于其超类或子类的状态。状态是通过使用 writeObject 方法或使用 DataOutput 支持的用于基本数据类型的方法将各个字段写入 ObjectOutputStream 来保存的。 readObject 方法负责从流中读取并还原类字段。它可以调用 in.defaultReadObject 来调用默认机制,以还原
18、对象的非静态和非瞬态字段。defaultReadObject 方法使用流中的信息来分配流中通过当前对象中相应命名字段保存的对象的字段。这用于处理类发展后需要添加新字段的情形。该方法本身不需要涉及属于其超类或子类的状态。状态是通过使用 writeObject 方法或使用 DataOutput 支持的用于基本数据类型的方法将各个字段写入 ObjectOutputStream 来保存的。 将对象写入流时需要指定要使用的替代对象的可序列化类,应使用准确的签名来实现此特殊方法:ANY-ACCESS-MODIFIER Object writeReplace() throws ObjectStreamExc
19、eption; 此 writeReplace 方法将由序列化调用,前提是如果此方法存在,而且它可以通过被序列化对象的类中定义的一个方法访问。因此,该方法可以拥有私有 (private)、受保护的 (protected) 和包私有 (package-private) 访问。子类对此方法的访问遵循 java 访问规则。 在从流中读取类的一个实例时需要指定替代的类应使用的准确签名来实现此特殊方法。ANY-ACCESS-MODIFIER Object readResolve() throws ObjectStreamException; 此 readResolve 方法遵循与 writeReplace
20、 相同的调用规则和访问规则。序列化运行时使用一个称为 serialVersionUID 的版本号与每个可序列化类相关联,该序列号在反序列化过程中用于验证序列化对象的发送者和接收者是否为该对象加载了与序列化兼容的类。如果接收者加载的该对象的类的 serialVersionUID 与对应的发送者的类的版本号不同,则反序列化将会导致 InvalidClassException。可序列化类可以通过声明名为 serialVersionUID 的字段(该字段必须是静态 (static)、最终 (final) 的 long 型字段)显式声明其自己的 serialVersionUID: ANY-ACCESS-
21、MODIFIER static final long serialVersionUID = 42L; 如果可序列化类未显式声明 serialVersionUID,则序列化运行时将基于该类的各个方面计算该类的默认 serialVersionUID 值,如“Java(TM) 对象序列化规范”中所述。不过,强烈建议 所有可序列化类都显式声明 serialVersionUID 值,原因计算默认的 serialVersionUID 对类的详细信息具有较高的敏感性,根据编译器实现的不同可能千差万别,这样在反序列化过程中可能会导致意外的 InvalidClassException。因此,为保证 serial
22、VersionUID 值跨不同 java 编译器实现的一致性,序列化类必须声明一个明确的 serialVersionUID 值。还强烈建议使用 private 修改器显示声明 serialVersionUID(如果可能),原因是这种声明仅应用于立即声明类 - serialVersionUID 字段作为继承成员没有用处。10. 类重载(Overlord)和重写(Override)的区别,重载的方法是否可以改变返回值的类型? 方法的重写和重载时Java多态性的不同表现。重写是父类与子类之间多态性的一种表现,如果在子类中定义某种方法与其父类有相同的名称参数,我们说该方法被重写,子类的对象使用这个方法
23、时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”。和重载是一个类中的多态性的一种表现。如果在一个类中定义了多个同名的方法,它们或有不同的参数类型,则称为方法的重载。重载的方法是可以改变返回值的类型。11. 各种排序的算法。冒泡排序:/初始化变量int data=12,8,3,59,132,1236,3400,8,352,37;/循环整个数组for(int i=0;idata.length;i+)/循环每个数字for(int j=0;jdataj+1)/将两个数字的位置进行对调int temp=dataj;dataj=dataj+1;dataj+1=temp;for(int k=0;
24、kdata.length;k+)System.out.print(datak+”);System.out.println();插入排序:int data=new int 12,8,3,59,132,1236,3400,8,352,37;Int in,out;for(out=1;out0 & datain-1=temp)Datain=datain-1;-in;Datain=temp;选择排序:int data=new int 12,8,3,59,132,1236,3400,8,352,37;int minValue;Int indexMin;Int temp;for(int i=0;ii;i-)
25、if(datajdatalowIndex)lowIndex=j;temp=datei;datai=datalowIndex;datalowIndex=temp;for(int k=0;kdata.length;k+)System.out.print(datak+”);System.out.printIn();12. 各种排序的优点和使用场合。冒泡排序:排序方法:相邻两元素进行比较,如有需要则进行交换,每完成一次循环就将最大元素排在最后(如从小到大排序),下一次循环是将其他的数进行类似操作。优点:若数据已有部分排好序,则使用冒泡排序法可以很快的完成排序。缺点:会造成反复扫描数据,比较相邻的两个数
26、据,速度不快也没有效率。插入排序:排序方法:每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排序好的数列的最后,直到全部排序的数据元素排完。优点:最简单的排序。缺点:比其他排序消耗时间多。选择排序:排序方法:将一个记录插入到已排好序的有序表(有可能是空表)中,从而得到一个新的记录数增1的有序表。优点:利用一个一个的元素的插入比较,将元素放入适当的位置,也属于简单排序。缺点:但是每次都与之前数据相比较,故耗费时间。13. 递归算法的使用和使用场合。递归算法的使用:1. 递归过程一般通过函数或子过程来实现。2. 递归算法:在函数或子过程的内部,直接或者间接地调用自己的算法。3.
27、递归算法的实质:是把问题转化为规模缩小了的同类问题的子问题。然后递归调用函数(或过程)来表示问题的解。递归算法解决问题的特点:1. 递归就是在过程或函数里调用自身。2. 在使用递增归策略时,必须有一个明确的递归结束条件,称为递归出口。3. 递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。所以一般不提倡用递归算法设计程序。4. 在递归调用的过程当中系统每一层的返回点,局部量等开辟了栈来存储。递归此数过多容易造成栈溢出等。所以一般不提倡用递归算法设计程序。14. 设计模式的分类。每种类型的作用。设计模式可以分为三大类,分别是创建型设计模式,行为型设计模式以及结构型设计模式。创建型设计模式
28、:单列模式构建模式原型模式抽象工厂模式工厂方法模式行为设计模式:策略模式状态模式责任链模式解释器模式命令模式观察者模式备忘录模式迭代器模式模板方法模式访问者模式中介者模式结构型设计模式:装饰者模式代理模式组合模式桥连接模式适配器模式蝇量模式外观模式各种模式的表述:单列模式:确保有且只有一个对象被创建。抽象工厂模式:允许客户创建对象的家族,而无需指定他们的具体类。工厂方法模式:由子类决定要创建的具体类是哪一个。装饰者模式:包装一个对象,以提供新的行为。状态模式:封装了基于状态的行为,并使用委托在行为之间切换。迭代器模式:在对象的集合之中游走,而不暴露集合的实现。外观模式:简化一群类的接口。策略模
29、式:封装可以互换的行为,并使用委托来决定要使用哪一个。代理模式:包装对象,以控制对此对象的访问。适配器模式:封装对象,并提供不同的接口。观察者模式:让对象能够在状态改变时被通知。模板方法模式:有子类决定如何实现一个算法中的步骤。组合模式:客户用一致的方法处理对象集合和单个对象。命令模式:封装请求成为对象。15. 什么是工厂模式。在程序中如何使用。工厂模式,也叫做说虚构造器,在简单工厂中间插入了一个具体产品工厂,这个工厂知道产品构造时候的具体细节,而简单工厂模式的产品具体构造细节是在一个个if/else分支,或者在switch/case分支里面的。工厂模式的好处就在于将工厂和产品之间的耦合降低,
30、将具体产品的构造过程放在了具体工厂类里面。在以后扩展产品的时候方便很多,只需要添加一个工厂类,一个产品类,就能方便的添加产品,而不需要修改原有的代码。而在简单工厂中,如果要增加一个产品,则需要修改工厂类,增加if/else分支,或者增加一个case分支,工厂模式符合软件开发中的OCP原则(open close principle),对扩展开放,对修改关闭。3.什么是单例,多例模式?在程序中如何使用?(1)谁给我讲讲在java中什么是单例模式,它主要用在什么地方。比如调用连接数据库的时候Public class DBopenPrivate Connection conn;Private stat
31、ic DBopen db;Private DBopen()Conn=this.getConnection();Public static DBopen open()If(db=null)Db=new DBopen();Return db;其他类在生成DBopen对象的时候DBopen db=DBopen.open();这样保证只连接一次(2)我也说说:单例模式就是只能闯建一个实例,就是只能一个对象。这个实例在全局被所有类都能调用。Public class SingletonPrivate Singleton()Private static Singleton S;Public static Singleton getS()If(S=null)S=new Singleton();Return S;(3)java模式之单例模式:单例模式确保一个类只有一个实例,自行提供这个实例并向整个系统提供这个实例。特点:1) 一个类只能有一个实例;2) 自己创建这个实例;3) 整个系统都要使用这
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年外研版2024七年级下册英语Unit 4 Developing ideas 第二课时 Reading for writing 教学设计
- 2026年四川省达州市高职单招综合素质考试题库及答案详细解析
- 2026年哈尔滨传媒职业学院单招综合素质考试题库含答案详细解析
- 2026年内蒙古自治区通辽市高职单招职业适应性测试考试题库附答案详细解析
- 2026年天津滨海职业学院单招职业技能考试题库含答案详细解析
- 2026陕西榆林市第二十五幼儿园招聘幼儿教师2人考试参考试题及答案解析
- 2026年堆头租赁合同
- 2026年接地工程协议
- 2025年工程质量保证保险合同
- 2026年公益区块链平台开发服务合同
- 国开2026年春季《形势与政策》专题测验1-5答案
- 2026离婚协议书标准范文
- 2026四川宜宾发展产城投资有限公司及子公司第一批员工招聘35人考试参考试题及答案解析
- 2026年邮政从业职业技能鉴定考试题库(附答案)
- 2026年临汾职业技术学院单招职业技能考试题库带答案详解(精练)
- 2026年及未来5年市场数据中国公募基金行业市场全景评估及投资策略咨询报告
- 2025-2026学年春季第二学期学校教导处工作计划及安排表
- 北京市丰台区2026届(年)高三年级(上)学期期末考试政治试题卷+答案
- 幼儿园中班语言《春节是个百音盒》课件
- GJB3243A-2021电子元器件表面安装要求
- 过程控制-方康玲主编-课后习题答案
评论
0/150
提交评论