java工程师面试题

21.描述一下JVM加载class文件的原理机制?
JVM中类的装载是由加载器(ClassLoader)和他的子类来实现的,Java中的类加载器是一个重要的Java运行时系统组件,他负责在运行时查找和装入类文件中的类。
JVM加载的步骤:
1.加载。把类的.class文件中的数据读入内存中,通常是创建一个字节数组读入.class文件,然后产生与所加载类对应的class对象。此时的对象还不稳重,类还不可以使用。
2.连接。当类被加载后进入连接阶段,这一阶段包括验证、准备和解析三个步骤。
3.初始化。1>如果类存在直接的父类并且这个类还没有被初始化,那么就先初始化父类。2>如果类中存在初始化语句,就依次执行这些初始化语句。
22.char型变量中能不能存储一个中文汉字,为什么?
char型变量是用来存储Unicode编码的字符的,unicode编码字符集中包含了汉字。
23.抽象类和接口有什么区别?
抽象类是用来捕捉子类的通用特性。他不能被实例化,只能被用作子类的超类。抽象类是被用来创建继承层级里子类的模板
接口是抽象方法的集合。如果一个类实现了某个接口,那么它就继承了这个接口的抽象方法。
24.静态嵌套类(Static Nested Class)和内部类(Inner Class)的不同。
静态嵌套类是被声明为静态的内部类,他可以不依赖于外部类实例被实例化。
25.阐述静态变量和实例变量的区别
1.静态变量需要static关键字修饰,实例变量不需要。
2.静态变量从属于类,实例变量从属于对象。实例变量必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量即类别量,只要程序加载了类的字节码,静态变量就会被分配空间,即可食用。综上,实例变量必须创建对象后通过这个对象使用,静态变量可以直接使用类名来引用。
26.是否可以从一个静态方法内部发出对非静态方法的调用?
静态方法是属于类方法,在创建类对象之前可以被调用;而非静态方法是对象方法,只有在创建一个类的对象后才能被调用,在静态方法中调用非静态方法,类的对象还没有创建,当然不可以调用非静态方法了
27.如何实现对象克隆?
浅克隆:1.被复制的类需要实现Cloneable接口,不实现的话在调用clone方法会抛出异常。
2.覆盖clone()方法,访问修饰符设为public。方法中调用super.clone()方法得到需要的复制对象。
深克隆:
28.string s = new string(“xyz”);创建了几个字符串对象?
xyz一个和new一个
29.接口是否可继承接口?抽象类是否可以实现接口?抽象类是否可以继承具体类?
接口可以继承接口,抽象类可以实现接口,抽象类可继承实体类,但前提是实体必须有明确的构造函数
30.一个".java源文件"中是否可以包含多个类(不是内部类)?有什么限制?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值