Java基础慨念面试题2

19,Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
答:Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。
  equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。
20、List、Map、Set三个接口,存取元素时,各有什么特点?
答:List 以特定次序来持有元素,可有重复元素。Set 无法拥有重复元素,内部排序。Map 保存key-value值,value可多值。
21,List, Set, Map是否继承自Collection接口?
答:List,Set是继承自Collection接口;Map不是
22、java中实现多态的机制是什么?
答:方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。
23、说出一些常用的类,包,接口,请各举5个?
答:常用的类:BufferedReader BufferedWriter FileReader FileWirter String Integer
常用的包:java.lang java.awt java.io java.util java.sql
常用的接口:Remote List Map Document NodeList
24、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?
答:接口可以继承接口。
    抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。
25、java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?
答:字节流,字符流。字节流继承于InputStream OutputStream,字符流继承于InputStreamReader OutputStreamWriter。在java.io包中还有许多其他的流,主要是为了提高性能和使用方便。
26、java中会存在内存泄漏吗,请简单描述。
答:会。如:int i,i2; retu
17、如何实现java序列化?
答:序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标
注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。
28、&和&&的区别。
答:&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。
29、简述逻辑操作(&,|,^)与条件操作(&&,||)的区别。
答:区别主要答两点:a.条件操作只能操作布尔型的,而逻辑操作不仅可以操作布尔型,而且可以操作数值型
b.逻辑操作不会产生短路
rn (i-i2); //when i为足够大的正数,i2为足够大的负数。结果会造成溢位,导致错误。
30,String s = new String("xyz");创建了几个String Object?
答:两个对象,一个是“xyx”,一个是指向“xyx”的引用对象s.
31、Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
答:Math.round(11.5)==12
    Math.round(-11.5)==-11
round方法返回与参数最接近的长整数,参数加1/2后求其floor.
32、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
答:short s1 = 1; s1 = s1 + 1; 有错(s1+1运算结果是int型,需要强制转换类型,不能显式转化为short型)
    short s1 = 1; s1 += 1;正确(可以正确编译)
33,Java有没有goto?
答:Goto—java中的保留字,现在没有在java中使用。
34,数组有没有length()这个方法? String有没有length()这个方法?
答:数组没有length()这个方法,有length的属性。
  String有有length()这个方法。
36、构造器Constructor是否可被override?
答:构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。
37、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行?什么时候被执行,在return前还是后?
答:会执行,在return前执行。
38,用最有效率的方法算出2乘以8等於几?
答:有C背景的程序员特别喜欢问这种问题。
  2 << 3
39、两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
答:不对,有相同的hash code。
40、heap和stack有什么区别。
答:栈是一种线形集合,其添加和删除元素的操作应在同一段完成。栈按照后进先出的方式进行处理。
    堆是栈的一个组成元素
41、Static Nested Class 和 Inner Class的不同。
答:Static Nested Class(一般是C++的说法)Inner Class (一般是JAVA的说法)。
Static Nested Class是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。
具体可见http://www.frontfree.net/articles/services/view.asp?id=704&page=1
    注: 静态内部类(Inner Class)意味着:1创建一个static内部类的对象,不需要一个外部类对象,2不能从一个static内部类的一个对象访问一个外部类对象.
42,abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
答:都不能
43,是否可以继承String类?
答:String类是final类故不可以继承。
44、静态变量和实例变量的区别?
答:static i = 10; //静态量
class A a; a.i =10;//可变
45.下面哪些类可以被继承?
java.lang.Thread (T)可以   java.lang.Number (T)可以   java.lang.Double (F)不可以  java.lang.Math (F)不可以
java.lang.Void (F)不可以   java.lang.Class (F)不可以  java.lang.ClassLoader (T)可以
46、float型float f=3.4是否正确?
答:不正确。精度不准确,应该用强制类型转换,如下所示:float f=(float)3.4
47.char型变量中能不能存贮一个中文汉字?为什么?
答:能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字节,所以放一个中文是没问题的.
48、一个“.java”源文件中是否可以包括多个类(不是内部类)?有什么限制?
可以。必须只有一个类名与文件名相同。
49、Class.forName的作用?为什么要用?
答:调用该访问返回一个以字符串指定类名的类的对象。
50、内部类可以引用他包含类的成员吗?有没有什么限制?
答:一个内部类对象可以访问创建它的外部类对象的内容.
51,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
答:switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte.long,string 都不能作用于swtich.
52、作用域public,private,protected,以及不写时的区别.
答:区别如下:
作用域   当前类    同一package    子孙类   其他package
public        √            √                   √           √
protected   √            √                   √         ×
friendly    √               √                    ×          ×
private     √             ×                ×          ×
不写时默认为friendly(和睦的, 融洽的);
53,谈谈final, finally, finalize的区别。
答:final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为 final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载.
   finally—再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。
  finalize—方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。
54,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
答:匿名的内部类是没有名字的内部类。不能extends(继承)其它类,但一个内部类可以作为一个接口,由另一个内部类实现。
55、String是最基本的数据类型吗?
答:基本数据类型包括byte、int、char、long、float、double、boolean和short。
java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类
56、int 和 Integer 有什么区别
答:Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。
原始类型       封装类
boolean         Boolean
char              Character
byte             Byte
short             Short
int         Integer
long              Long
float             Float
double         Double
    引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。
57、String 和StringBuffer的区别
答:JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。如果最后需要String,那么使用StringBuffer的toString()方法.
58、是否可以从一个static方法内部发出对非static方法的调用?
答:不可以,如果其中包含对象的method();不能保证对象初始化.
59、写clone()方法时,通常都有一行代码,是什么?
答:Clone 有缺省行为,super.clone();他负责产生正确大小的空间,并逐位复制。
60、在JAVA中,如何跳出当前的多重嵌套循环?
答:用break;(跳出本次循环) return 方法。
61、什么时候用assert(断言)。
答:assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为true;如果该值为false,说明程序已经处于不正确的状态下系统会报告一个 AssertionError,系统将给出警告或退出。一般来说,assertion用于保证程序最基本、关键的正确性 。
    assertion检查通常在开发和测试时开启。为了提高性能,在软件发布后,assertion检查通常是关闭的。
    断言可以有两种形式:
    assert Expression1 ;
    assert Expression1 :Expression2 ;
    Expression1 应该总是产生一个布尔值.Expression2 可以是得出一个值的任意表达式。这个值用于生成显示更多调试信息的 String 消息。
  断言在默认情况下是禁用的。要在编译时启用断言,需要使用 source 1.4 标记:javac -source 1.4 Test.java要在运行时启用断言,可使用 -enableassertions 或者 -ea 标记。
  要在运行时选择禁用断言,可使用 -da 或者 -disableassertions 标记。
  要系统类中启用断言,可使用 -esa 或者 -dsa 标记。还可以在包的基础上启用或者禁用断言。
  可以在预计正常情况下不会到达的任何位置上放置断言。断言可以用于验证传递给私有方法的参数。不过,断言不应该用于验证传递给公有方法的参数,因为不管是否启用了断言,公有方法都必须检查其参数。不过,既可以在公有方法中,也可以在非公有方法中利用断言测试后置条件。另外,断言不应该以任何方式改变程序的状态。
62、给我一个你最常见到的runtime exception.(运行时异常)?
答:常见RuntimeException有:
ArithmeticException-------------算数异常,除数为零异常。
BufferOverflowException---------缓存溢出异常
ClassCastException--------------类型不匹配异常
IllegalArgumentException--------非法参数异常
IndexOutOfBoundsException-------数组下标越界异常
NoSuchElementException----------没有这个成员异常
ArrayStoreException-------------试图将错误类型的对象存储到一个对象数组时抛出的异常
BufferOverflowException---------当相关 put 操作达到目标缓冲区限制时,抛出此未经检查的异常。
BufferUnderflowException--------当相关 get 操作达到源缓冲区限制时,抛出此未经检查的异常。
CannotRedoException-------------当 UndoableEdit 被通知 redo() 但无法执行时抛出。
CannotUndoException-------------当 UndoableEdit 被通知 undo() 但无法执行时抛出。
ClassCastException--------------当试图将对象强制转换为不是实例的子类时,抛出该异常。
CMMExceptio---------------------如果本机 CMM(软件质量控制的过程)返回一个错误,则抛出此异常。
ConcurrentModificationException-当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常。
DOMException--------------------DOM 操作只在 "exceptional" 情况下引发异常
EmptyStackException-------------该异常由 Stack 类中的方法抛出,以表明堆栈为空。
IllegalArgumentException--------抛出的异常表明向方法传递了一个不合法或不正确的参数。
IllegalMonitorStateException----抛出的异常表明某一线程已经试图等待对象的监视器,或者试图通知其他正在等待对象的监视器而  
                                本身没有指定监视器的线程。
IllegalPathStateException-------对于正在执行的特定操作而言(如将路径段追加到不具有初始 moveto 的 GeneralPath),如果操  
                                作在处于非法状态的路径上执行,则 IllegalPathStateException 表示抛出的异常。
IllegalStateException-----------在非法或不适当的时间调用方法时产生的信号。
ImagingOpException--------------如果某个 BufferedImageOp 或 RasterOp 过滤器方法无法处理图像,则抛出 ImagingOpException
MissingResourceException--------缺少资源时抛出此异常。
NegativeArraySizeException------如果应用程序试图创建大小为负的数组,则抛出该异常。
NoSuchElementException----------由 Enumeration 的 nextElement 方法抛出,表明枚举中没有更多的元素。
NullPointerException------------当应用程序试图在需要对象的地方使用 null 时,抛出该异常。也叫空指针异常。
ProfileDataException------------当访问或处理 ICC_Profile 对象出现错误时,抛出此异常。
ProviderException---------------用于 Provider 异常(例如误配置错误或不可恢复的内部错误)的运行时异常,Provider 可以为它  
                                创建子类以抛出特殊的、特定于 provider 的运行时错误
RasterFormatException-----------如果 Raster 中存在无效的布局信息,则抛出 RasterFormatException。
SecurityException---------------由安全管理器抛出的异常,指示存在安全侵犯。
SystemException-----------------系统异常。
UndeclaredThrowableException----如果代理实例的调用处理程序的 invoke 方法抛出一个经过检查的异常
UnmodifiableSetException--------当由于设置不可修改而无法执行请求的操作时,抛出该异常。
UnsupportedOperationException---当不支持请求的操作时,抛出该异常。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乐韬科技

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值