荣新IT培训中心
全国咨询热线:400-1335-066
您现在的位置:首页>行业新闻 > 正文

Java面试题(2)

时间:2017-11-09 15:48:36 来源:荣新IT教育培训 作者:荣新科技
这是荣新科技分享的关于Java面试的第二部分的试题,也算是一些知识点的自查自纠了,希望同学们温故知新,把知识基础打的很牢固。

Java面试题(2)

对象克隆的实现方式

实现Cloneable接口并重写Object类中的clone()方法;

实现Serializable接口,通过对象的序列化和反序列化实现克隆,可以实现真正的深度克隆(ObjectOutputStream)。

垃圾回收(GC)

垃圾回收机制,内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃

分代式垃圾收集 (伊甸园,幸存者乐园,终身颐养园)

一个java文件中可以包含多个类,但是只能有一个公开类,且名字和Java文件相同

一个内部类可以访问他的外部类,包括私有成员

final : 类: 不能被继承 方法: 不能被重写 属性: 赋值一次过后不可以再次赋值

先初始化静态成员,然后调用父类构造器,再初始化非静态成员,最后调用自身构造器。

String s2 = new String(s1.getBytes("GB2312"), "ISO-8859-1"); GB2312编码的字符串转换为ISO-8859-1

try{}里有一个return语句,那么紧跟在这个try后的finally{}里的代码会不会被执行,

会执行 , 如果finally还有return 语句, 则会返回finally内的语句

异常处理: 异常都是Throwable子类

throws 声明一个方法可能抛出的异常

throw 在方法内抛出异常

常见的异常:

ArithmeticException(算术异常)

IllegalArgumentException (非法参数异常)

IndexOutOfBoundsException (下标越界异常)

NullPointerException (空指针异常)

ClassCastException

final、finally、finalize的区别。

final : 修饰符

finally : 不管是否发生异常都会执行

finalize : GC再销毁对象的时候调用

ArrayList使用的数组方式来进行存储,所以查找元素快 ,LinkedList双向链表,插入和删除快,都不是线程安全,可以通过Collections中的synchronizedList方法

Collection是一个接口,它是Set、List等容器的父接口;Collections是个一个工具类,

sleep 和 wait

sleep()方法(休眠)是线程类(Thread)的静态方法,调用此方法会让当前线程暂停执行指定的时间,将执行机会(CPU)让给其他线程,但是对象的锁依然保持,因此休眠时间结束后会自动恢复(线程回到就绪状态)

wait()是Object类的方法,调用对象的wait()方法导致当前线程放弃对象的锁(线程暂停执行),进入对象的等待池(wait pool),只有调用对象的notify()方法(或notifyAll()方法)时才能唤醒等待池中的线程

抽象类和接口有什么异同

接口和抽象类都不能被实例化,但可以定义引用.

接口中所有的方法必须都是抽象方法,而抽象类中可以有普通方法,

接口中的修饰符全是public,而抽象类都可以

有抽象类的方法必须声明为抽象类,而抽象类中不一定有抽象方法

Java有内存泄露吗,

理论上没有,因为有垃圾回收机制,但实际中可能存在无用但可达的对象,这些对象不能被GC回收, 例如Hibernate一级缓存中的对象.

静态变量和实例变量

静态变量static修饰,他属于类的,不属于任何一个方法,所以一个静态变量只会有一个拷贝.静态变量可以实现让多个对象共享内存。

实例变量必须依存于某一实例,需要先创建对象然后通过对象才能访问到它。