java面试2
1.Anonymous Inner Class(匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)
匿名内部类是没有名字的内部类。不能extends(继承)其它类,但一个内部类可以作为一个接口,由另一个内部类实现。
2.Static Nested Class 和Inner Class的不同
Nested Class(一般是C++的说法),Inner Class(一般是java的说法)。java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。
静态内部类(Inner Class)意味着1 创建一个static内部类对象,不需要一个外部类对象。2.不能从一个static内部类的一个对象访问一个外部类对象。
3.&和&&的区别
&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)
4.Collection和Collections的区别
Collection是集合类的上级接口,继承与他的接口主要有Set和List
Collections是针对集合类的一个帮助类,它提供一系列静态方法对各种集合的搜索、排序、线程安全化等操作
5.什么时候用assert
assertion(断言)在软件开发中一种常用的调试方式,很多开发语言中都支持这种机制。在实现中,assertion就是在程序中的一条语句,他对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为true;如果该值为false,说明程序已经处于不正常的状态下,系统将给出警告或推出。一般来说,assertion用于保证程序最基本、关键的正确性。assertion检查通常在开发和测试时开启。为了提高性能,在软件发布后,assertion检查通常是关闭的。
6.String s = new String("xyz");创建了几个String Object
两个 一个字符对象 一个字符对象引用对象
7.Math.round(11.5)等于多少?math.round(-11.5)等于多少
12 -11
8.short s1 = 1; s1 = s1+1; s1+1运算结果是int 型,需要强制转换类型
9.java有没有goto
java中的保留字,现在没有在java中使用
10.数组有没有length()这个方法?String有没有length()这个方法
数组没有length()这个方法,有length的属性。String有length()这个方法
11.Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是equals()?它们有何区别
Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。
12.List set map 是否继承自Collection接口
List set是 map不是
13.abstarct class和interface有什么区别
声明方法的存在而不去实现它的类被叫做抽象类,它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。
14.接口是否可继承接口?抽象类是否可实现接口?抽象类是否可继承实体类
接口可以继承接口。抽象类可以实现接口,抽象类可继承实体类,但前提是实体类必须有明确的构造函数。
15.构造器Constructor是否可被override
构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloding
16.两个对象值相同(x.equals(y)==true),但却可有不同的hash code,这句话对不对
不对 有相同的hash code
17.当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递
是值传递 java编程语言只有值传递参数。当一个对象实例作为参数被传递到方法中时,参数的值就是该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。
18.Gc是什么?为什么要有GC
Gc是垃圾收集的意思,内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,java提供的GC功能可以自动检测对象是否超过作用域从而达到自动回收内存的目的,java语言没有提供释放已分配内存的显示操作方法。
19.垃圾回收的优点和原理。并考虑2种回收机制
java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得java程序员在编写程序的时候不再考虑内存管理。由于有个垃圾回收机制,java中的对象不再有作用域的概念,只有对象的引用才有作用域。垃圾回收可以有效的防止内存泄漏,有效的使用可以使用的内存。垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有的对象进行清除和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。
20.你所知道的集合类都有哪些?主要方法?
最常用的集合类是list和map。list的具体实现包括arraylist和vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。list适用于按数值索引访问元素的情形。
map提供了一个更通用的元素存储方法。map集合类用于存储对(称作“键”和“值”),其中每个键映射到一个值。
21.描述一下jvm加载class文件的原理机制?
jvm中类的装载是由ClassLoader和它的子类来实现的,java ClassLoader是一个重要的java运行时系统组件。它负责在运行时查找和装入类文件的类。
22.一个“.java”源文件中是否可以包括多个类(不是内部类)?有什么限制?
可以。 必须只有一个类名与文件名相同。
23.java中有几种类型的流?jdk为每种类型的流提供了一些抽象类以供继承,请说出它们分别是哪些类?
字节流 字符流 字节流继承于InputStream OutputStream,字符流继承于InputStreamReader OutputStreamWriter。在java.io包中还有许多其他的流,主要是为了提高性能和使用方便。