JAVA基础及语法部分面试题(3)

本文深入浅出地介绍了Java中的核心概念和技术,包括垃圾回收机制、类与接口的区别、多态的实现机制等,并通过实例解释了匿名内部类、静态代码段等特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、写clone()方法时,通常都有一行代码,是什么?【基础】

答:Clone 有缺省行为:super.clone(),他负责产生正确大小的空间,并逐位复制。

2、GC是什么? 为什么要有GC? 【基础】

答:GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。 Java 程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一:System.gc() 或Runtime.getRuntime().gc() 。
参考:http://blog.csdn.net/zsuguangh/article/details/6429592

2、垃圾回收的优点和原理。并考虑2种回收机制。【基础】

答:Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有“作用域”的概念,只有对象的引用才有“作用域”。垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。

3、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?【基础】

答:对于GC来说,当程序员创建对象时,GC就开始监控这个对象的地址、大小以及使用情况。通常,GC采用有向图的方式记录和管理堆(heap)中的所有对象。通过这种方式确定哪些对象是”可达的”,哪些对象是”不可达的”。当GC确定一些对象为”不可达”时,GC就有责任回收这些内存空间。可以。程序员可以手动执行System.gc(),通知GC运行,但是Java语言规范并不保证GC一定会执行。

4、String s=new String(“xyz”);创建了几个String Object? 【基础】

答:两个对象,一个是”xyx”,一个是指向”xyx”的引用对象s。

5、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)? 【基础】

答:接口可以继承接口。抽象类可以实现(implements)接口,抽象类可继承实体类,但前提是实体类必须有明确的构造函数。

6、Java的接口和C++的虚类的相同和不同处。【基础】

答:由于Java不支持多继承,而有可能某个类或对象要使用分别在几个类或对象里面的方法或属性,现有的单继承机制就不能满足要求。与继承相比,接口有更高的灵活性,因为接口中没有任何实现代码。当一个类实现了接口以后,该类要实现接口里面所有的方法和属性,并且接口里面的属性在默认状态下面都是public static,所有方法默认情况下是public.一个类可以实现多个接口。

7、一个“.java”源文件中是否可以包含多个类(不是内部类)?有什么限制?【基础】

答:可以;必须只有一个类名与文件名相同并且权限为public,其他类不能为public

8、说出一些常用的类,包,接口,请各举5个。【基础】

答:常用的类:BufferedReader BufferedWriter FileReader FileWirter String Integer;
常用的包:java.lang java.awt java.io java.util java.sql;
常用的接口:Remote List Map Document NodeList

9、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类?是否可以implements(实现)interface(接口)? 【基础】

答:可以继承其他类或实现其他接口,在swing编程中常用此方式。

10、内部类可以引用他包含类的成员吗?有没有什么限制?【基础】

答:完全可以。如果不是静态内部类,那没有什么限制!
如果你把静态嵌套类当作内部类的一种特例,那在这种情况下不可以访问外部类的普通成员变量,而只能访问外部类中的静态成员

11、java中实现多态的机制是什么?【基础】

方法的覆盖Overriding和重载Overloading是java多态性的不同表现;覆盖Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。

12、在java中一个类被声明为final类型,表示了什么意思?【基础】

答:表示该类不能被继承,是顶级类。

13、指出下面程序的运行结果: 【基础】

class A{ 
    static{ 
        System.out.print("1"); 
    }
    public A(){ 
        System.out.print("2"); 
    } 
} 
class B extends A{ 
    static{ 
        System.out.print("a"); 
    } 
    public B(){
        System.out.print("b"); 
    } 
} 
public class Hello{ 
    public static void main(String[] ars){ 
        A ab = new B();
        ab = new B();
    } 
}

答:输出结果为1a2b2b;类的static代码段,可以看作是类首次加载(虚拟机加载)执行的代码,而对于类加载,首先要执行其基类的构造,再执行其本身的构造。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值