《JAVA面试题汇总.docx》由会员分享,可在线阅读,更多相关《JAVA面试题汇总.docx(73页珍藏版)》请在第一文库网上搜索。
1、JAVA面试题汇总一、JAVA基础知识1面向对象的特征有哪些方面1 .抽象 抽象就是忽略一个主题中与当前目标无关的那些方面 以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题 而只是选择其中的一部分 暂时不用部分细节。抽象包括两个方面 一是过程抽象 二是数据抽象。2 .继承继承是一种联结类的层次模型并且允许和鼓励类的重用它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生 这个过程称为类继承。新类继承了原始类的特性 新类称为原始类的派生类 子类而原始类称为新类的基类 父类。派生类可以从它的基类那里继承方法和实例变量并且类可以修改或增加新的方法使之更适合特殊的需要。3,
2、封装 封装是把过程和数据包围起来 对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念 即现实世界可以被描绘成一系列完全自治、封装的对象 这些对象通过一个受保护的接口访问其他对象。4.多态性 是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势很好的解决了应用程序函数同名问题。2、String stri可是最基本的数据类型吗?基本数据类型及转换。基本数据类型包括 byte、int、char、long、float、double、boolean 和 short。java.Iang.String类是final类型的
3、因此不可以继承这个类、不能修改这个类。为了提高效率节省空间我们应该用StringBuffer类Java语言数据类型的转换基本上按照下面的规则进行如果其中一个运算对象是double类型的 另一个也会被转换成double类型0否则 如果其中一个运算对象是float类型的 另一个也会被转换成float类型的。否则 如果其中一个运算对象是long类型的 另一个也会被转换成long类型的。否则 如果其中一个运算对象是int类型的 另一个也会被转换成int类型的。否则 如果其中一个运算对象是short类型的 另一个也会被转换成short类型的。3 int 和 Integer intid e有什么区别Jav
4、a提供两种不同的类型 引用类型和原始类型 或内置类型。Int是java的原始数据类型北大青鸟APTECH岳阳海纳 文档 2lnteger是java为int提供的封装类。Java为每个原始类型提供了封装类。原始类型封装类boolean Boolean char Character byte Byte、short Short int lnteger long Long floatFloatdouble Double引用类型和原始类型的区别1、行为完全不同而且具有不同的语义。2、引用类型和原始类型具有不同的特征和用法 它们包括 大小和速度问题 这种类型以哪种类型的数据结构存储当引用类型和原始类型用作
5、某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为null而原始类型实例变量的缺省值与它们的类型有关。4、String 和 StingBuffer b fa的区别JAVA平台提供了两个类String StringBuffer它们可以储存和操作字符串 即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地 你可以使用StringBuffers来动态构造字符数据。5、运行时异常与一般异常有何异同异常对象如何分级捕获?异常表示程序运行过程中可能出现
6、的非正常状态 运行时异常表示虚拟机的通常操作中可能遇到的异常是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常但是并不要求必须声明抛出未被捕获的运行时异常。最底层的异常对象(子类异常)放在最前面,越高层的异常对象(父类异常)越放在后面。6、说出 Array Liste rei list,Vector vekte, Linked List 的存储性能和特性ArrayList和Vector都是使用数组方式存储数据 此数组元素数大于实际存储的数据以便增加和插入元素 它们都允许直接按序号索引元素 但是插入元素要涉及数组元素移动等内存操作所以索引数据快而插入数据慢 Vector
7、由于使用了 synchronized方法 线程安全 通常性能上较ArrayList差 而LinkedList使用双向链表实现看储 按序号索引数据需要进行前向或后向遍历 但是插入数据时只需要记录本项的前后项即可 所以插入速度较快。7、 &和&的区别。Collection ka lek sn和 Collections 的区别。&是位运算符表示按位与运算&是逻辑运算符表示逻辑与and oCollection是集合类的上级接口 继承与他的接口主要有Set和List.Collections是针对集合类的一个帮助类他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。8、HashMap 和 H
8、ashtable 的区别。北大青鸟APTECH 岳阳海纳 文档 3HashMap是Hashtable的轻量级实现 非线程安全的实现他们都完成了 Map接口。主要区别在于1、HashMap允许空null键值key,由于非线程安全效率上可能高于Hashtable。2、HashMap允许将null作为一个entry的key或者value 而Hashtable不允许。3、HashMap 把 Hashtable 的 contains 方法去掉了 改成 containsvalue 和 containsKeyo因为contains方法容易让人引起误解。4、Hashtable 继承自 Dictionary 类
9、 而 HashMap 是 Java1.2 引进的 Map interface 的一个实现。5、Hashtable的方法是Synchronize的 而HashMap不是 在多个线程访问Hashtable时 不需要自己为它的方法实现同步 而HashMap就必须为之提供外同步。6、Hashtable和HashMap采用的hash/rehash宜法都大概一样 所以性能不会有很大的差异。9、final, finally, finalize 的区别。final修饰符 关键字 如果一个类被声明为final意味着它不能再派生出新的子类 不能作为父类被继承。因此一个类不能既被声明为abstract的 又被声明为
10、final的。将变量或方法声明为final可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值 而在以后的引用中只能读取 不可修改。被声明为final的方法也同样只能使用 不能重载。finally再异常处理时提供finally块来执行任何清除操作。如果抛出一个异常那么相匹配的catch子句就会执行 然后控制就会进入finally块 如果有的话。finalize一方法名。Java技术允许使用finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在Object类中定义的 因此所有的
11、类都继承了它。子类覆盖finalize()方法以整理系统资源或者执行其他清理工作。finalize()方法是在垃圾收集器删除对象之前对这个对象调用的。10、Overload auva laud和 Override auve raid的区别。Overloaded 的方法是否可以改变返回值的类型?方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数 我们说该方法被重写(Overriding)。子类的对象使用这
12、个方法时 将调用子类中的定义 对它而言 父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法它们或有不同的参数个数或有不同的参数类型则称为方法的重载北大青鸟APTECH 岳阳海纳 文档 4(Overloading)0 Overloaded的方法是可以改变返回值的类型。11 error ere和 exception 有什么区别?error表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。exception表示一种设计或实现问题。也就是说它表示如果程序运行正常从不会发生的情况。12、同步和异步有何异同 在什么情况下分别使用他们 举例说明。
13、如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到或者正在读的数据可能已经被另一个线程写过了那么这些数据就是共享数据必须进行同步存取。当应用程序在对象上调用了一个需要花费很长时间来执行的方法并且不希望让程序等待方法的返回时 就应该使用异步编程 在很多情况下采用异步途径往往更有效率。13、abstract class aebstraskt和 interface intefeis有什么区别?一、抽象类抽象类是特殊的类只是不能被实例化除此以外具有类的其他特性重要的是抽象类可以包括抽象方法 这是普通类所不能的。抽象方法只能声明于抽象类中 且不包含任何实现派生类必须覆盖它们。另外抽象类可以
14、派生自一个抽象类可以覆盖基类的抽象方法也可以不覆盖如果不覆盖则其派生类必须覆盖它们。二、接口接口是引用类型的 类似于类 更和抽象类有所相似 以至于很多人对抽象类和接口的区别比较模糊。和抽象类的相似之处有三点1、不能实例化2、包含未实现的方法声明3、派生类必须实现未实现的方法抽象类是抽象方法接口则是所有成员不仅是方法包括其他成员另外接口有如下特性接口除了可以包含方法之外 还可以包含属性、索引器、事件 而且这些成员都被定义为公有的。除此之外不能包含任何其他的成员 例如常量、域、构造函数、析构函数、静态成员。一个类可以直接继承多个接口 但只能直接继承一个类 包括抽象类。抽象类与接口的区别1 .接口可
15、以多重继承抽象类不可以2 .接口定义方法 不给实现 而抽象类可以实现部分方法3 .接口中基本数据类型的数据成员 都默认为static和final抽象类则不是北大青鸟APTECH岳阳海纳文档 5如果事先知道某种东西会成为基础类那么第一个选择就是把它变成一个接口。只有在必须使用方法定义或者成员变量的时候 才应考虑采用抽象类。14、设计时 什么情况使用接口 什么情况使用抽象类1)更新或扩展已有的 处于层次结构框架中 有继承关系 的类时使用接口2创建混合类型既要实现其“基本类型”还要提供其它可供选择的功能的类时使用接口3)在需要构造出非层次结构的类型框架时使用接口否则使用抽象类15、接口有什么作用作用实现java里的多重继承.规范性程序设计。a、在大型的程序设计中程序设计人员梳理好程序思路并用接口形式表示出来不同的实现人员按接口要求制作程序 便于程序的装配。b、interface与实现类关系 在OOP思想中代表like a关系。abstract class与实现类关系在OOP思想中代表is a关系。16、接口是否