java常见面试题目(二)
部分没有答案可以自行百度。
1、myeclipse与eclipse的区别。
2、说说对maven或者SVN的理解。
3、类的加载过程 (创建对象的过程)
1)子父类里静态属性 赋上默认初始值 如果有显示赋值 赋值
2)父类的静态代码块 子类的静态代码块
3)父类的非静态属性 赋上默认初始值 如果有显示赋值 赋值
4)父类的匿名代码快
5)父类的构造器
6)子类的非静态属性 赋上默认初始值 如果有显示赋值 赋值
7)子类的匿名代码块
8)子类的构造器
4、TCP与UDP的区别。
5、java中的值传递和引用传递本质上是否相同?为什么?
参考答案
相同
因为值传递和引用传递其实都是变量把自身存放的内容复制一份再传给方法的形参,
只不过值传递是基本类型的变量把自身存放的数值复制一份传给方法的形参,
而引用传递是引用类型的变量把自身存放的堆区内存地址值复制一份传给方法的形参。
6、在java中,&&和&有什么分别
参考答案:
&既可以用作位运算,又可以用作逻辑运算。
&&只能用作逻辑运算,具有短路的特点,第一个布尔表达式的结果如果能决定整个逻辑运行的结果,则后面的布尔表达式不再运算
7、在一个类里面,静态方法中不能直接调用非静态方法,但是非静态方法中可以直接调用静态方法,为什么?
参考答案
因为静态方法是属于类的,在类加载的时候已经加载处理好了,可以随时使用类名来调用,而非静态方法是属于对象的,只有创建了对象之后,使用对象才能调用。当我们使用类名去调用静态方法的时候,可能还没有创建这个类的对象,那么非静态方法这时就不能调用,所有在静态方法中不能直接调用非静态方法,反之则可以。
8、final关键字可以修饰什么?分别有什么特点
参考答案
final修饰类,该类不能子类继承
final修饰属性,该属性只能赋值一次
final修饰方法,该方法不能被重写
9、.匿名内部类中有没有构造器?
参考答案
有构造器,只是我们不能编写和调用(因为没名字),它会有一个默认的构造器的。把编译生产的class文件,使用javap命名进行反编译就可以看到这个默认的构造器。
10、抽象类与接口的区别。
11、.为什么Set、List集合可以调用iterator方法,然后使用迭代器进行遍历,而Map集合不能使用迭代器遍历?
参考答案
因为Set、List集合都继承了Collection接口,而Collection接口又继承了Iterable接口,Iterable接口中提供了iterator方法,该方法可以返回一个迭代器,用来遍历集合。Map集合则没有继承该接口。
12、抽象类不能使用new关键字创建对象,那么它的构造器有什么作用?
参考答案
被子类调用
13、枚举是不是类?为什么?
参考答案
枚举是一种特殊的java类。
枚举的class文件,使用javap命令反编译之后,可以看到,它是一个final修饰的类,并且指定了继承了java.lang.Enum父类
14、Exception和Error的区别是什么
参考答案
程序中出现Exception是可以处理的,并且处理后程序还可以继续执行
程序中出现Error,是比较严重的问题,代码中无法处理,程序会终止运行。
15、假设在线程的等待池中,现在有很多线程都阻塞在这里,notifyAll方法可以叫醒等待池中的线程。
问题:调用哪个对象的notifyAll方法?叫醒等待池中的哪些线程?
参考答案
调用锁对象的notifyAll方法,叫醒等待池中所以等待这把锁的线程,等待另外锁的线程,则不叫醒。
16、安装JDK后,需要配置的三个环境变量分别是什么?以及每个环境变量代表的含义是什么?
参考答案:
JAVA_HOME
JDK安装路径
PATH
JDK中bin目录所在路径
CLASSPATH
当前要执行的java类(class文件)所在路径
17、执行一个普通java类(有主函数)时,一般会涉及到哪些类加载器?CLASSPATH和哪一个类加载器有关系?什么关系?
参考答案:
启动类加载器
扩展类加载器
应用类加载器
CLASSPATH和应用类加载器有关系
应用类加载器会通过CLASSPATH中配置的路径,来查找当前需要执行的java代码所存在的class文件
18、类加载器加载了字节码文件之后,会对该文件做字节码校验,请列出几条校验的方面(至少三条)
参考答案:
字节码版本和JVM是否兼容
代码不能破坏系统的完整性
运行时堆栈没有溢出
参数类型是否正确
类型转换是否正确
变量要在使用之前进行初始化
方法调用与对象引用类型间要匹配
19、java程序中,如何给对象申请内存,如何释放不再使用的对象内存?
参考答案:
使用new关键字就可以给要创建的对象申请内存空间。
当一个对象不再被使用(没有引用指向它)时,会被标记为垃圾,再之后的某个时刻,会被垃圾回收器(GC)进行内存的释放
20、java中的标识符指的是什么?
参考答案:
类的名字、方法的名字、变量的名字