除了掌握扎实的专业技能外,北京达内教育小编还专门整理了20道Java面试题发给大家。我希望每个人都能顺利通过面试并获得高薪~
1:Java内部类和子类之间有什么区别?
答案:内部类是指在一个外部类的内部再定义一个类,内部类对外部类有访问权限,可以访问类中定义的所有变量和方法。
子类是从父类(superclass)中继承的类,子类可以访问父类所有public和protected的字段和方法。
2:静态方法和静态变量的目的是什么?
答案:静态变量被类的所有实例共用,静态类只能访问类的静态变量,或调用类的静态方法。
3:什么是数据封装及其意义?
答案:封装是面向对象编程中用于在单个单元中组合属性和方法。
封装可以帮助程序员遵循模块化方法进行软件开发,每个对象都有自己的一组方法和变量,并且可以独立于其他对象来执行其功能。另外,封装也有数据隐藏的目的。
4:Java中的double和float变量有什么区别?
答案:float是单精度浮点数,内存中占用4字节,double是双精度浮点数,内存中占用8字节。
5:Java中所有派生类的基类是什么?
答案:java.lang.object
6:Java中的main()方法可以返回任何数据吗?
答案:java中的main()方法不能返回任何数据,它的返回类型始终是void。
7:接口对抽象类的性能影响是什么?
答案:与抽象类相比,接口性能较慢。一个类只能扩展一个抽象类,却能实现许多接口,随着接口在类中的实现,也会给开发人员带来额外负担。
8:Java中导入包时,其子包是否会被导入?
答案:在Java中导入包时,其子包不会被导入,如果有需要,开发者必须单独导入。开发者需要单独导入它们。
9:类中的main方法可以声明为private?
答案:Java中main方法必须是public,如果是private,那么它虽然在编译时不会出错,但是在运行时会出错。
10:我们能不能通过引用向函数传递参数?
答案:不能,我们只能通过引用将值传递给函数。
11:对象在java中如何序列化?
答案:序列化是指把Java对象转换为字节序列的过程,只能将支持 java.io.Serializable 接口的对象写入流中,每个 serializable 对象的类都被编码。
12:Java中的try…catch是用于异常处理吗?
答案:try后面往往会跟着catch或finally,try抛出的任何异常都会被捕获在catch中,在代码终止前的要执行的任务放在finally中。
13:有没有什么办法在出现异常时跳过finally?
答案:当在try中出现异常时,如果存在catch,会先被catch捕获,否则会执行到finally。异常发生时肯定会执行finally,除非在try的末尾有强制中止代码:System.exit(0);
14:String是Java的数据类型吗?
答案:String不是Java的原始数据类型,Java中创建一个string时,实际上是创建了Java.Lang.String类的对象,这个对象可以使用String类的所有内置方法。
15:数组和向量之间有什么区别?
答案:数组是对相同原始类型的数据进行组合,本质上是静态的,而矢量本质上是动态的,并且可以容纳不同数据类型的数据。
16:什么是多线程?
答案:多线程是一个编程概念,可以在单个程序中以并发方式执行多个任务。同一个进程的多个线程堆栈共享,有助于程序的性能改进。
17:为什么在ava中使用Runnable Interface?
答案:Runnable接口在Java中用于实现多线程应用程序,Java.Lang.Runnable接口由一个支持多线程的类来实现。
18:当数据需要进行大量更改时, String和StringBuffer谁是更好的选择?
答案:StringBuffers本质上是动态的,我们可以改变StringBuffer对象的值,而String是不可变的,每次数据更改都会创建一个新的String对象,增加额外开销,所以在数据更改很多的情况下,StringBuffer是一个更好的选择。
19:每个switch语句后使用break的目的是什么?
答案:switch使用break可以在执行完这个语句后中断,如果不使用break,那么它将把所有情况都执行一遍。
20:如何在Java中完成垃圾回收?
答案:Java中,对象不被引用时,垃圾回收就会发生,对象会被自动销毁,调用System.gc()方法或Runtime.gc()方法。