JAVA面试题大全(200+道题目)

一、Java 基础

1.JDK 和 JRE 有什么区别?

jdk:java development kit

jre:java runtime Environment

jdk是面向开发人员的,是开发工具包,包括开发人员需要用到的一些类。

jre是java运行时环境,包括java虚拟机等,是提供给使用java的人用的

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

==比较的是两个对象,包括对象的地址位,如果比较的两个对象地址位不同,值相同也会返回false

equals比较的是两个字符串的值,只要值相同,就会返回true

篇幅限制下面就只能给大家展示小册部分内容了。包括了:Java面试、Spring、JVM、MyBatis、Redis、MySQL、并发编程、微服务、Linux、Springboot、SpringCloud、MQ、Kafka 面试专题

需要全套资料及答案【点击此处,免费获取全套面试资料】icon-default.png?t=N7T8https://bbs.csdn.net/topics/618656674即可免费获取 备注:“CSDN”

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

不对,hashCode也是可以重写的,所以不一定。

反之,如果equals()相同,那么hashCode是一定相等的。

4.final 在 java 中有什么作用?

修饰类不可被继承;

修饰方法不可被重写;

修饰变量不能被修改。

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

-1

向上取整Math.ceil();

向下取整Math.floor();

四舍五入Math.round(x); //==Math.floor(x+0.5)

6.String 属于基础的数据类型吗?

不属于,是final修饰的Java类。

java中的基本数据类型:byte、char、short、int、long、float、double、boolean

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

String、StringBuffer、StringBuilder

String类型的字符串是不可变的,StringBuffer和StringBuilder是可以对同一个对象做更新操作的

StringBuffer是线程安全的,StringBuilder不是线程安全的。

【点击此处,免费获取全套面试资料】icon-default.png?t=N7T8https://bbs.csdn.net/topics/618656674

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

不一样。他们不是同一个对象

前者如果定义多个变量都为相同值的话,会共用同一个地址,创建的对象应该放在了常量池中;

后者是创建了一个新的对象,放在的是堆内存中。

9.如何将字符串反转

 使用StringBuffer 或 StringBuilder 的 reverse 成员方法。

10.String 类的常用方法都有那些?

"".toCharArray("");

"".charAt();

"".split();

"".indexOf();

"".equals();

"".contains();

"".length();

"".subString("");

"".replace("","");

11.抽象类必须要有抽象方法吗?

不是。抽象类可以没有抽象方法,但是如果你的一个类已经声明成了抽象类,即使这个类中没有抽象方法,它也不能再实例化,即不能直接构造一个该类的对象。如果一个类中有了一个抽象方法,那么这个类必须声明为抽象类,否则编译通不过。

12.普通类和抽象类有哪些区别?

普通类可以被继承,不能包含抽象方法,不可以被实现。

抽象类也可被继承,但是子类必须要实现父类中的抽象方法;

抽象类中的方法不能包含主体。

抽象类中的方法在扩展性和延伸性要比普通类的更好;

抽象类可以应用多态,普通类不可以。

13.抽象类能使用 final 修饰吗?

不能。

14.接口和抽象类有什么区别?

接口是要被实现的,抽象类是要被继承;

接口用interface修饰;抽象类使用abstract修饰;

两者均不能被实例化,方法都不包含主体;

一个类只能继承一个抽象类,但是可以实现多个接口。

15.java 中 IO 流分为几种?

字节流:InputStream、OutputStream

字符流:Reader、Writer

字节流是最基本的

  • 1.字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串;

  • 2.字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,而字符流就可以。

读文本的时候用字符流,例如txt文件。读非文本文件的时候用字节流,例如mp3。

【点击此处,免费获取全套面试资料】icon-default.png?t=N7T8https://bbs.csdn.net/topics/618656674

16.BIO、NIO、AIO 有什么区别?

BIO:Block IO 同步阻塞式 IO

NIO:Non IO 同步非阻塞 IO

AIO:Asynchronous IO  异步非阻塞IO

BIO是一个连接一个线程。JDK4之前的唯一选择
NIO是一个请求一个线程。JDK4之后开始支持,常见聊天服务器
AIO是一个有效请求一个线程。JDK7之后开始支持,常见相册服务器

17.Files的常用方法都有哪些?

file.getName();

file.getPath();

file.delete();

file.exits();

file.createDirectory();

file.copy();

file.move();

file.size();

file.read();

file.write();

18.重写和重载的区别

重载:必须有不同的参数列表;可以有不同的访问修饰符;可以抛出不同的异常;

重写:参数列表必须要与被重写的相同;返回的类型必须保持一致;修饰符和抛出的异常不能在被重写的方法之外

重写是父类与子类的关系,是垂直关系;重载是同一个类方法中的关系,是水平关系。

19.什么是多态

一种事物的多种表现形态就是多态,比如定义一个类为动物,那么动物可以被子类继承,从而实现具体动物的方法。

二、容器

1.java 容器都有哪些?

数组、Util下的容器:Collection(Set、List)、Map

2.Collection 和 Collections 有什么区别?

Collection是集合的接口,其实现类有List和Set;

Collections是工具类,包含许多有关集合操作的静态多态方法,可以直接使用。

3.List、Set、Map 之间的区别是什么?

List:有序集合、元素可重复

Set:元素不可重复,HashSet无序,LinkedHashSet按照插入排序,SortedSet可排序

Map:键值对集合,存储键、值之间的映射。key无序,唯一,value可重复

4.HashMap 和 Hashtable 有什么区别?

HashMap不是线程安全的,HashTable是线程安全的

HashMap允许Null Key和Null Value,HashTable不允许

5.如何决定使用 HashMap 还是 TreeMap?

如果需要得到一个有序的结果应该使用TreeMap

如果不需要排序最好选用HashMap,性能更优

6.说一下 HashMap 的实现原理?

HashMap基于Hash算法实现,通过put(key,value)存储,get(key)来获取value

当传入key时,HashMap会根据key,调用Hash(Object key)方法,计算出Hash值,根据Hash值将Value保存在Node对象里,Node对象保存在数组里。

当计算出的Hash值相同时,称为Hash冲突,HashMap的做法是用链表和红黑树存储相同Hash值的value

当Hash冲突的个数:小于等于8使用链表,大于8使用红黑树解决链表查询慢的问题。

7.说一下 HashSet 的实现原理?

HashSet是基于HashMap实现的,HashSet底层使用HashMap来保存所有元素,因此HashSet的操作相对比较简单,相关HashSet的操作,基本上都是直接调用底层的HashMap的相关方法来完成,HashSet不允许有重复的值,并且元素是无序的

  • 17
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值