温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java的基础面试题有哪些

发布时间:2021-11-24 15:52:47 来源:亿速云 阅读:127 作者:iii 栏目:大数据

这篇文章主要介绍“Java的基础面试题有哪些”,在日常操作中,相信很多人在Java的基础面试题有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java的基础面试题有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1.JDK 和 JRE 有什么区别?

答:JRE是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的。

JDK是java开发工具包,是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用的。

2.== 和 equals 的区别是什么?

答:==是操作符,是比较两个对象的地址或基本类型,equals是比较两个对象的内容,属于Object里的方法。

3.两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?

答:不对!hashCode()相同,不代表两个对象就相同。hashCode值是从hash表中得来的,hash是一个函数,该函数的实现是一种算法,通过hash算法算出hash值,hash表就是hash值组成的,一共有8个位置。

1)、如果两个对象equals,Java运行时环境会认为他们的hashcode一定相等。 
2)、如果两个对象不equals,他们的hashcode有可能相等。 
3)、如果两个对象hashcode相等,他们不一定equals。 
4)、如果两个对象hashcode不相等,他们一定不equals。 

4.final 在 java 中有什么作用?和finally、finalize的区别是什么?

答:final的作用随着所修饰的类型而不同:

1)、final修饰类中的属性或者变量:无论属性是基本类型还是引用类型,final所            起的作用。

2)、final修饰的变量里面存放的“值”不能变。
3)、final修饰类中的方法:可以被继承,但继承后不能被重写。
4)、 final修饰类:类不可以被继承。
5)、 finally是异常处理语句结构的一部分,表示总是执行。
6)、finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。

5.java 中的 Math.round(-1.5) 等于多少,Math.round(1.5)等于多少?

答:等于-1,等于2

计算方法:

1)、参数的小数点后第一位<5,运算结果为参数整数部分

2)、参数的小数点后第一位>5,运算结果为参数整数部分绝对值+1,符号(即正      负)不变。

3)、参数的 小数点后第一位=5,正数运算结果为整数部分+1,负数运算结果为整       数部分。

总结:大于五全部加,等于五正数加, 小于五全不加

6. Java 中的重载和重写的区别?

重载和重写都允许你用相同的名称来实现不同的功能,但是重载是编译时活动,而重写是运行时活动。你可以在同一个类中重载方法,但是只能在子类中重写方法。重写必须要有继承

重写:

1)、在子类中可以根据需要对从基类中继承来的方法进行重写。

2)、重写的方法和被重写的方法必须具有相同方法名称、参数列表和返回类型。

3)、重写方法不能使用比被重写的方法更严格的访问权限。

重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准。

7.java 中操作字符串都有哪些类?它们之间有什么区别?

答:String、StringBuffer、StringBuilder可以操作拼接字符串

区别:String是不可变的对象,对每次对String类型的改变时都会生成一个新的对象,StringBuffer和StringBuilder是可以改变对象的。

对于操作效率:StringBuilder > StringBuffer > String

对于线程安全:StringBuffer 是线程安全,可用于多线程;StringBuilder 是非线程安全,用于单线程

8.String str="i"与 String str=new String("i")一样吗?

答:不一样,因为他们不是同一个对象。

9.访问修饰符public,private,protected,以及不写(默认)时的区别?

答:类的成员不写访问修饰时默认为default。默认对于同一个包中的其他类相当于公开(public),对于不是同一个包中的其他类相当于私有(private)。受保护(protected)对子类相当于公开,对不是同一包中的没有父子关系的类相当于私有。Java中,外部类的修饰符只能是public或默认,类的成员(包括内部类)的修饰符可以是以上四种。

简单些说:Protected可在包内及包外子类访问,default只能同一包内访问,prvate只能同一类。

10.java的基本类型有哪些?String是基本类型吗

Java中的基本数据类型只有8个:byte、short、int、long、float、double、char、boolean;String是一个对象,不是基本类型。

11.int和Integer有什么区别,为什么要使用包装类?

答:为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类型都引入了对应的包装类型,比如int的包装类就是Integer,Java 为每个原始类型提供了包装类型:
- 原始类型: boolean,char,byte,short,int,long,float,double
- 包装类型:Boolean,Character,Byte,Short,Integer,Long,Float,Double

12.抽象类(abstract class)和接口(interface)有什么区别?

1)、抽象类和接口都不能够实例化、不能有构造方法

2)、接口用interface来修饰

3)、类能实现一个或多个接口,但只能继承一个抽象类

4)、接口里的方法只能是抽象方法、类方法或者默认方法,接口里的方法不能有方法实现,但类方法、默认方法都必须要实现。

5)、用抽象类是为了重用。减少编码量,降低耦合性。

13.面向对象的三个特征是什么?什么是 封装、继承、多态?

答:面向对象的三个基本特征:封装、继承、多态

1)、封装(英语:Encapsulation)是指,一种将抽象性函式接口的实现细节部份包装、隐藏起来的方法。封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。

2)、继承可以使得子类具有父类的属性和方法或者重新定义、追加属性和方法等,继承可以理解为一个对象从另一个对象获取属性的过程。

3)、多态是同一个行为具有多个不同表现形式或形态的能力。多态性是对象多种表现形式的体现。比如我们说"宠物"这个对象,它就有很多不同的表达或实现,比如有小猫、小狗、蜥蜴等等。那么我到宠物店说"请给我一只宠物",服务员给我小猫、小狗或者蜥蜴都可以,我们就说"宠物"这个对象就具备多态性。 

14.列出一些你常见的运行时异常?

答:- ClassNotFoundException(类找不到异常)
       - ClassCastException (类转换异常)
       - IllegalArgumentException (非法参数异常)
       - IndexOutOfBoundsException (下标越界异常)
       - NullPointerException (空指针异常)
       - SecurityException (安全异常)

15.Java容器有哪些?Collection、Collections、List、Set、Map的区别?

答:Collection接口和Map接口,List和Set继承了Collection接口,Collections是个一个工具类,提供了一系列的静态方法来辅助容器操作,这些方法包括对容器的搜索、排序、线程安全化等等。

1)、List是有序集合,允许重复,实现List接口的有ArrayList、LinkedList、Vector,其中ArrayList便于查询、便于随机访问,而LinkedList是链表,便于插入和删除的操作,Vector中的方法由于添加了synchronized修饰,因此Vector是线程安全的容器,但性能上较ArrayList差,因此已经是Java中的遗留容器。

Java的基础面试题有哪些

2)而Set是无序集合、不允许重复;Set的实现类有EnumSet、SortedSet、HashSet

,其中HashSet查取、查找性能优异,其子类是LinkedHashSet,通过链表维护的内部顺序和通过元素的添加顺序来访问集合里的元素,使用链表记录集合的添加顺序;TreeSet是SortedSet的子类,采用红黑树的数据结构来存储集合元素,支持自然排序和定制排序,是一个有序的集合。

Java的基础面试题有哪些

备注:Hashtable、Dictionary、BitSet、Stack、Properties都是遗留容器),已经不推荐使用。

3)、Map接口键值对(key-value pair)映射 Map 集合类用于存储元素对(称作"键"和"值"),其中每个键映射到一个值。

16.hashMap原理,java8做的改变

答:从结构实现来讲,HashMap是数组+链表+红黑树(JDK1.8增加了红黑树部分)实现的。HashMap最多只允许一条记录的键为null,允许多条记录的值为null。HashMap非线程安全。ConcurrentHashMap线程安全。解决碰撞:当出现冲突时,运用拉链法,将关键词为同义词的结点链接在一个单链表中,散列表长m,则定义一个由m个头指针组成的指针数组T,地址为i的结点插入以T(i)为头指针的单链表中。Java8中,冲突的元素超过限制(8),用红黑树替换链表。

17.HashMap和Hashtable的区别。

答:HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。

1)、HashMap允许空的键值对, 但最多只有一个空对象,而HashTable不允许。HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。
2)、 Hashtable继承自Dictionary类,而HashMap继承自abstractMap

3)、最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步

 HashTable同步,而HashMap非同步,效率上比HashTable要高。

4)、Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。

18.常用数据结构。

答:集合,线性结构(数组,队列,链表和栈),树形结构,图状结构。

19.Comparator 与Comparable 有什么不同?

答:Comparable 接口用于定义对象的自然顺序,是排序接口,而 comparator 通常用于定义用户定制的顺序,是比较接口。

20.Java 中堆和栈有什么区别?

答:JVM 中堆和栈属于不同的内存区域,使用目的也不同。栈常用于保存方法帧和局部变量,而对象总是在堆上分配。栈通常都比堆小,也不会在多个线程之间共享,而堆被整个 JVM 的所有线程共享。

21.JVM分为哪些区,每一个区是干嘛的?

1)、方法区(method):被所有的线程共享。方法区包含所有的类信息和静态变量。

2)、堆(heap):被所有的线程共享,存放对象实例以及数组,Java堆是GC的主要区域。

3)、栈(stack):每个线程包含一个栈区,栈中保存一些局部变量等。

4)、程序计数器:是当前线程执行的字节码的行指示器。

22.解释堆空间和GC是什么?

答:Java 进程的时候,会为它分配内存。内存的一部分用于创建堆空间,当程序中创建对象的时候,就从对空间中分配内存。GC 是 JVM 内部的一个进程,回收无效对象的内存用于将来的分配。

到此,关于“Java的基础面试题有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI