Java面试宝典第二版Word文件下载.docx
《Java面试宝典第二版Word文件下载.docx》由会员分享,可在线阅读,更多相关《Java面试宝典第二版Word文件下载.docx(44页珍藏版)》请在冰豆网上搜索。
6.什么时候用assert
assertion(断言)在软件开发中是一种惯用调试方式,诸多开发语言中都支持这种机制。
在实现中,assertion就是在程序中一条语句,它对一种boolean表达式进行检查,一种对的程序必要保证这个boolean表达式值为true;
如果该值为false,阐明程序已经处在不对的状态下,系统将给出警告或退出。
普通来说,assertion用于保证程序最基本、核心对的性。
assertion检查普通在开发和测试时启动。
为了提高性能,在软件发布后,assertion检查普通是关闭
7.Strings=newString("
xyz"
);
创立了几种StringObject
"
自身作为字符常量,在汇编语言中应当作为常量放在数据段,Java有一种类似数据段constantpool保存这个常量,在classloader加载这个类时候就把"
和这个类其她某些信息放在constantpoolnewString("
)依照常量"
在heap上创立String对象因此,一共两个对象
String(Stringoriginal)InitializesanewlycreatedStringobjectsothatitrepresentsthesamesequenceofcharactersastheargument;
inotherwords,thenewlycreatedstringisacopyoftheargumentstring.
8.Math.round(11.5)等於多少?
Math.round(-11.5)等於多少
答:
Math.round(11.5)==12;
Math.round(-11.5)==-11;
round办法返回与参数最接近长整数,参数加1/2后求其floor
9.shorts1=1;
s1=s1+1;
有什么错?
shorts1=1;
s1+=1;
有什么错
s1=s1+1;
(s1+1运算成果是int型,需要强制转换类型)shorts1=1;
(可以对的编译)
10.Java有无goto
java中保存字,当前没有在java中使用
11.数组有无length()这个办法?
String有无length()这个办法
数组没有length()这个办法,有length属性。
String有length()这个办法
12.Overload和Override区别。
Overloaded办法与否可以变化返回值类型
办法重写Overriding和重载Overloading是Java多态性不同体现。
重写Overriding是父类与子类之间多态性一种体现,重载Overloading是一种类中多态性一种体现。
如果在子类中定义某办法与其父类有相似名称和参数,咱们说该办法被重写(Overriding)。
子类对象使用这个办法时,将调用子类中定义,对它而言,父类中定义犹如被"
屏蔽"
了。
如果在一种类中定义了各种同名办法,它们或有不同参数个数或有不同参数类型,则称为办法重载(Overloading)。
Overloaded办法是可以变化返回值类型
13.Set里元素是不能重复,那么用什么办法来区别重复与否呢?
是用==还是equals()?
它们有何区别
Set里元素是不能重复,那么用iterator()办法来区别重复与否。
equals()是判断两个Set与否相等,equals()和==办法决定引用值与否指向同一对象equals()在类中被覆盖,为是当两个分离对象内容和类型相配话,返回真值
14.给我一种你最常用到runtimeexception
常用运营时异常有如下这些ArithmeticException,ArrayStoreException,BufferOverflowException,BufferUnderflowException,CannotRedoException,CannotUndoException,ClassCastException,CMMException,ConcurrentModificationException,DOMException,EmptyStackException,IllegalArgumentException,IllegalMonitorStateException,IllegalPathStateException,IllegalStateException,ImagingOpException,IndexOutOfBoundsException,MissingResourceException,NegativeArraySizeException,NoSuchElementException,NullPointerException,ProfileDataException,ProviderException,RasterFormatException,SecurityException,SystemException,UndeclaredThrowableException,UnmodifiableSetException,UnsupportedOperationException
15.error和exception有什么区别
error表达恢复不是不也许但很困难状况下一种严重问题,例如说内存溢出,不也许指望程序能解决这样状况;
exception表达一种设计或实现问题。
也就是说,它表达如果程序运营正常,从不会发生状况
16.List,Set,Map与否继承自Collection接口
List,Set是,Map不是
17.abstractclass和interface有什么区别
声明办法存在而不去实现它类被叫做抽象类(abstractclass),它用于要创立一种体现某些基本行为类,并为该类声明办法,但不能在该类中实现该类状况。
不能创立abstract类实例。
然而可以创立一种变量,其类型是一种抽象类,并让它指向详细子类一种实例。
不能有抽象构造函数或抽象静态办法。
Abstract类子类为它们父类中所有抽象办法提供实现,否则它们也是抽象类为。
取而代之,在子类中实现该办法。
懂得其行为其他类可以在类中实现这些办法
接口(interface)是抽象类变体。
在接口中,所有办法都是抽象。
多继承性可通过实现这样接口而获得。
接口中所有办法都是抽象,没有一种有程序体。
接口只可以定义staticfinal成员变量。
接口实现与子类相似,除了该实现类不能从接口定义中继承行为。
当类实现特殊接口时,它定义(即将程序体予以)所有这种接口办法。
然后,它可以在实现了该接口类任何对象上调用接口办法。
由于有抽象类,它容许使用接口名作为引用变量类型。
普通动态联编将生效。
引用可以转换到接口类型或从接口类型转换,instanceof运算符可以用来决定某对象类与否实现了接口
18.abstractmethod与否可同步是static,与否可同步是native,与否可同步是synchronized
都不能
19.接口与否可继承办口?
抽象类与否可实现(implements)接口?
抽象类与否可继承实体类(concreteclass)
接口可以继承办口。
抽象类可以实现(implements)接口,抽象类与否可继承实体类,但前提是实体类必要有明确构造函数
20.构造器Constructor与否可被override
构造器Constructor不能被继承,因而不能重写Overriding,但可以被重载Overloading
21.与否可以继承String类
String类是final类故不可以继承
22.try{}里有一种return语句,那么紧跟在这个try后finally{}里code会不会被执行,什么时候被执行,在return前还是后
会执行,在return前执行
23.用最有效率办法算出2乘以8等於几
2<
<
3
24.两个对象值相似(x.equals(y)==true),但却可有不同hashcode,这句话对不对
不对,有相似hashcode
25.当一种对象被当作参数传递到一种办法后,此办法可变化这个对象属性,并可返回变化后成果,那么这里究竟是值传递还是引用传递
是值传递。
Java编程语言只有值传递参数。
当一种对象实例作为一种参数被传递到办法中时,参数值就是对该对象引用。
对象内容可以在被调用办法中变化,但对象引用是永远不会变化
26.swtich与否能作用在byte上,与否能作用在long上,与否能作用在String上
switch(expr1)中,expr1是一种整数表达式。
因而传递给switch和case语句参数应当是int、short、char或者byte。
long,string都不能作用于swtich
27.ArrayList和Vector区别,HashMap和Hashtable区别
就ArrayList与Vector重要从二方面来说:
1、同步性:
Vector是线程安全,也就是说是同步,而ArrayList是线程序不安全,不是同步
2、数据增长:
当需要增长时,Vector默认增长为本来一倍,而ArrayList却是本来一半
就HashMap与HashTable重要从三方面来说:
1、历史因素:
Hashtable是基于陈旧Dictionary类,HashMap是Java1.2引进Map接口一种实现
2、同步性:
Hashtable是线程安全,也就是说是同步,而HashMap是线程序不安全,不是同步
3、值:
只有HashMap可以让你将空值作为一种表条目key或value
28.char型变量中能不能存贮一种中文中文?
为什么?
是可以定义成为一种中文,由于java中以unicode编码,一种char占16个字节,因此放一种中文是没问题
如果用gbk本地编码话可以.如果用utf-8话,也许不行。
29.GC是什么?
为什么要有GC
GC是垃圾收集意思(GabageCollection),内存解决是编程人员容易浮现问题地方,忘掉或者错误内存回收会导致程序或系统不稳定甚至崩溃,Java提供GC功能可以自动监测对象与否超过作用域从而达到自动回收内存目,Java语言没有提供释放已分派内存显示操作办法。
30.float型floatf=3.4与否对的?
答:
不对的。
精度不精确,应当用强制类型转换,如下所示:
floatf=(float)3.4;
floatf=3.4f;
31.简介JAVA中CollectionFrameWork(涉及如何写自己数据构造)?
CollectionFrameWork如下:
Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
Map
├Hashtable
├HashMap
└WeakHashMap
Collection是最基本集合接口,一种Collection代表一组Object,即Collection元素(Elements)
Map提供key到value映射
32.抽象类与接口?
抽象类与接口都用于抽象,但是抽象类(JAVA中)可以有自己某些实现,而接口则完全是一种标记(同步有多实现功能)。
JAVA类实现序例化办法是实现java.io.Serializable接口
Collection框架中实现比较要实现Comparable接口和Comparator接口
33.STRING与STRINGBUFFER区别。
STRING长度是不可变,STRINGBUFFER长度是可变。
如果你对字符串中内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffertoString()办法
34.谈谈final,finally,finalize区别
final—修饰符(核心字)如果一种类被声明为final,意味着它不能再派生出新子类,不能作为父类被继承。
因而一种类不能既被声明为abstract,又被声明为final。
将变量或办法声明为final,可以保证它们在使用中不被变化。
被声明为final变量必要在声明时给定初值,而在后来引用中只能读取,不可修改。
被声明为final办法也同样只能使用,不能重载
finally—再异常解决时提供finally块来执行任何清除操作。
如果抛出一种异常,那么相匹配catch子句就会执行,然后控制就会进入finally块(如果有话)
finalize—办法名。
Java技术容许使用finalize()办法在垃圾收集器将对象从内存中清除出去之前做必要清理工作。
这个办法是由垃圾收集器在拟定这个对象没有被引用时对这个对象调用。
它是在Object类中定义,因而所有类都继承了它。
子类覆盖finalize()办法以整顿系统资源或者执行其她清理工作。
finalize()办法是在垃圾收集器删除对象之前对这个对象调用
35.面向对象特性有哪些方面
重要有如下四方面:
1.抽象:
抽象就是忽视一种主题中与当前目的无关那些方面,以便更充分地注意与当前目的关于方面。
抽象并不打算理解所有问题,而只是选取其中一某些,暂时不用某些细节。
抽象涉及两个方面,一是过程抽象,二是数据抽象。
2.继承:
继承是一种联结类层次模型,并且容许和勉励类重用,它提供了一种明确表述共性办法。
对象一种新类可以从既有类中派生,这个过程称为类继承。
新类继承了原始类特性,新类称为原始类派生类(子类),而原始类称为新类基类(父类)。
派生类可以从它基类那里继承办法和实例变量,并且类可以修改或增长新办法使之更适合特殊需要。
3.封装:
封装是把过程和数据包围起来,对数据访问只能通过已定义界面。
面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装对象,这些对象通过一种受保护接口访问其她对象。
4.多态性:
多态性是指容许不同类对象对同一消息作出响应。
多态性涉及参数化多态性和包括多态性。
多态性语言具备灵活、抽象、行为共享、代码共享优势,较好解决了应用程序函数同名问题。
36.String是最基本数据类型吗
不是,基本数据类型涉及byte、int、char、long、float、double、boolean和short。
java.lang.String类是final类型,因而不可以继承这个类、不能修改这个类。
为了提高效率节约空间,咱们应当用StringBuffer类
37.int和Integer有什么区别
Java提供两种不同类型:
引用类型和原始类型(或内置类型)。
Int是java原始数据类型,Integer是java为int提供wapper。
Java为每个原始类型提供了封装类。
原始类型封装类:
boolean:
Boolean
char:
Character
byte:
Byte
short:
Short
int:
Integer
long:
Long
float:
Float
double:
Double
引用类型和原始类型行为完全不同,并且它们具备不同语义。
引用类型和原始类型具备不同特性和用法,它们涉及:
大小和速度问题,这种类型以哪种类型数据构造存储,当引用类型和原始类型用作某个类实例数据时所指定缺省值。
对象引用实例变量缺省值为null,而原始类型实例变量缺省值与它们类型关于
38.运营时异常与普通异常有何异同
异常表达程序运营过程中也许浮现非正常状态,运营时异常表达虚拟机普通操作中也许遇到异常,是一种常用运营错误。
java编译器规定办法必要声明抛出也许发生非运营时异常,但是并不规定必要声明抛出未被捕获运营时异常。
39.说出ArrayList,Vector,LinkedList存储性能和特性
ArrayList和Vector都是使用数组方式存储数据,此数组元素数不不大于实际存储数据以便增长和插入元素,它们都容许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,因此索引数据快而插入数据慢,Vector由于使用了synchronized办法(线程安全),普通性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项先后项即可,因此插入速度较快。
40.HashMap和Hashtable区别
HashMap是Hashtable轻量级实现(非线程安全实现),她们都完毕了Map接口,重要区别在于HashMap容许空(null)键值(key),由于非线程安全,效率上也许高于Hashtable。
HashMap容许将null作为一种entrykey或者value,而Hashtable不容许。
HashMap把Hashtablecontains办法去掉了,改成containsvalue和containsKey。
由于contains办法容易让人引起误解。
Hashtable继承自Dictionary类,而HashMap是Java1.2引进Mapinterface一种实现。
最大不同是,Hashtable办法是Synchronize,而HashMap不是,在各种线程访问Hashtable时,不需要自己为它办法实现同步,而HashMap就必要为之提供外同步。
Hashtable和HashMap采用hash/rehash算法都大概同样,因此性能不会有很大差别。
41.heap和stack有什么区别
栈是一种线形集合,其添加和删除元素操作应在同一段完毕。
栈按照后进先出方式进行解决。
堆是栈一种构成元素
42.Java接口和C++虚类相似和不同处
由于Java不支持多继承,而有也许某个类或对象要使用分别在几种类或对象里面办法或属性,既有单继承机制就不能满足规定。
与继承相比,接口有更高灵活性,由于接口中没有任何实当代码。
当一种类实现了接口后来,该类要实现接口里面所有办法和属性,并且接口里面属性在默认状态下面都是publicstatic,所有办法默认状况下是public.一种类可以实现各种接口。
43.Java中异常解决机制简朴原理和应用
当JAVA程序违背了JAVA语义规则时,JAVA虚拟机就会将发生错误表达为一种异常。
违背语义规则涉及2种状况。
一种是JAVA类库内置语义检查。
例如数组下标越界,会引起IndexOutOfBoundsException;
访问null对象时会引起NullPointerException。
另一种状况就是JAVA容许程序员扩展这种语义检查,程序员可以创立自己异常,并自由选取在何时用throw核心字引起异常。
所有异常都是java.lang.Thowable子类。
44.垃圾回收长处和原理。
并考虑2种回收机制
Java语言中一种明显特点就是引入了垃圾回收机制,使c++程序员最头疼内存管理问题迎刃而解,它使得Java程序员在编写程序时候不再需要考虑内存管理。
垃圾回收可以有效防止内存泄露,有效使用可以使用内存。
垃圾回收器普通是作为一种单独低档别线程运营,不可预知状况下对内存堆中已经死亡或者长时间没有使用对象进行清晰和回收,程序员不能实时调用垃圾回收器对某个对象或所有对象进行垃圾回收。
回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。
45.你所懂得集合类均有哪些?
重要办法?
最惯用集合类是List和Map。
List详细实现涉及ArrayList和Vector,它们是可变大小列表,比较适合构建、存储和操作任何类型对象元素列表。
List合用于按数值索引访问元素情形。
Map提供了一种更通用元素存储办法。
Map集合类用于存储元素对(称作"
键"
和"
值"
),其中每个键映射到一种值。
46.描述一下JVM加载class文献原理机制?
JVM中类装载是由ClassLoader和它子类来实现,JavaClassLoader是一种重要Java运营时系统组件。
它负责在运营时查找和装入类文献类。
47.排序均有哪几种办法?
请列举
排序办法有:
插入排序(直接插入排序、希尔排序),互换排序(冒泡排序、迅速排序),选取排序(直接选取排序、堆排序),归并排序,分派排序(箱排序、基数排序)
迅速排序伪代码。
使用迅速排序办法对a[0:
n-1]排序:
从a[0:
n-1]中选取一种元素作为middle,该元素为支点,把余下元素分割为两段left和right,使得left中元素都不大于等于支点,而right中元素都不不大于等于支点。
递归地使用迅速排序办法对left进行排序
递归地使用迅速排序办法对right进行排序
所得成果为left+middle+right
48.JAVA语言如何进行异常解决,核心字:
throws,throw,try,catch,finally分别代表什么意义?
在try块中可以抛出异常吗?
Java通过面向对象办法进行异常解决,把各种不同异常进行分类,并提供了良好接口。
在Java中,每个异常都是一种对象,它是Throwable类或其他子类实例。
当一种办法浮现异常后便抛出一种异常对象,该对象中包具有异常信息,调用这个对象办法可以捕获到这个异常并进行解决。
Java异常解决是通过5个核心词来实现:
try、catch、throw、throws和finally。
普通状况下是用try来执行一段程序,如果浮现异常,系统会抛出(throws)一种异常,这时候你可以通过它类型来捕获(catch)它,或最后(finally)由缺省解决器来解决。
用try来指定一块防止所有"
异常"
程序。
紧跟在try程序背面