Java面试题答案整理(一)

1.JDK 和 JRE 有什么区别?

  • Jdk是Java Development Kit的缩写,顾名思义是java开发工具包,是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用的。JDK包含了JRE,同时还包含了编译java源码的编译器javac,还包含了很多java程序调试和分析的工具:jconsole,jvisualvm等工具软件,还包含了java程序编写所需的文档和demo例子程序。

  • JRE是Java Runtime Environment的缩写,顾名思义是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的,还有所有的Java类库的class文件,都在lib目录下,并且都打包成了jar。

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

一、对象类型不同

  • 1、equals():是超类Object中的方法。在Object中。==和equals是等价的。

  • 2、==:是操作符。

二、比较的对象不同

  • 1、equals():用来检测两个对象是否相等,即两个对象的内容是否相等。

  • 2、==:用于比较引用和比较基本数据类型时具有不同的功能。引用类型比较的是地址。

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

  • 1、如果两个对象相等,则hashcode一定也是相同的

  • 2、两个对象相等,对两个对象分别调用equals方法都返回true

  • 3、两个对象有相同的hashcode值,它们也不一定是相等的

另外,equals方法被覆盖过,则hashCode方法也必须被覆盖为在散列表中,hashCode()相等即两个键值对的哈希值相等,然而哈希值相等,并不一定能得出键值对相等。

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

  • 修饰类:表示该类不能被继承;

  • 修饰方法:表示方法不能被重写;

  • 修饰变量:表示变量只能一次赋值以后值不能被修改(常量)。

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

-1,round方法的源代码是+0.5之后向下取整。

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

String不是基本的数据类型,是final修饰的java类,java中的基本类型一共有8个,它们分别为:

  • 字符类型:byte,char

  • 基本整型:short,int,long

  • 浮点型:float,double

  • 布尔类型:boolean

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

String、StringBuffer、StringBuilder

  • String : final修饰,String类的方法都是返回new String。即对String对象的任何改变都不影响到原对象,对字符串的修改操作都会生成新的对象。

  • StringBuffer : 对字符串的操作的方法都加了synchronized,保证线程安全。

  • StringBuilder : 不保证线程安全,在方法体内需要进行字符串的修改操作,可以new StringBuilder对象,调用StringBuilder对象的append、replace、delete等方法修改字符串。

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

不一样,因为内存的分配方式不一样。String str="i"的方式,java虚拟机会将其分配到常量池中;而String str=new String("i")则会被分到堆内存中。

9.如何将字符串反转?

  • 利用 StringBuffer 或 StringBuilder 的 reverse 成员方法

  • 利用 String 的 toCharArray 方法先将字符串转化为 char 类型数组,然后将各个字符进行重新拼接

  • 利用 String 的 CharAt 方法取出字符串中的各个字符

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

  • 抽象类必须有关键字abstract来修饰。

  • 抽象类可以不含有抽象方法

  • 如果一个类包含抽象方法,则该类必须是抽象类

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

  • 抽象类不能被实例化

  • 抽象类可以有抽象方法,抽象方法只需申明,无需实现

  • 含有抽象方法的类必须申明为抽象类

  • 抽象的子类必须实现抽象类中所有抽象方法,否则这个子类也是抽象类

  • 抽象方法不能被声明为静态,不能用private,final修饰

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

  • 抽象类要被子类继承,接口要被类实现。

  • 接口只能做方法声明,抽象类中可以作方法声明,也可以做方法实现。

  • 接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。

  • 接口是设计的结果,抽象类是重构的结果。

  • 抽象类和接口都是用来抽象具体对象的,但是接口的抽象级别最高。

13.java 中 IO 流分为几种?

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

  • BIO:Block IO 同步阻塞式 IO,就是我们平常使用的传统 IO,它的特点是模式简单使用方便,并发处理能力低。

  • NIO:Non IO 同步非阻塞 IO,是传统 IO 的升级,客户端和服务器端通过 Channel(通道)通讯,实现了多路复用。

  • AIO:Asynchronous IO 是 NIO 的升级,也叫 NIO2,实现了异步非堵塞 IO ,异步 IO 的操作基于事件和回调机制。

  1. BIO:同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善。

  2. NIO:同步非阻塞,服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。

  3. AIO:异步非阻塞,服务器实现模式为一个有效请求一个线程,客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程进行处理。

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

  • Files.exists() 检测文件路径是否存在

  • Files.createFile()创建文件

  • Files.createDirectory()创建文件夹

  • Files.delete() 删除文件或者目录

  • Files.copy() 复制文件

  • Files.move() 移动文件

  • Files.size()查看文件个数

  • Files.read() 读取文件

  • Files.write()写入文件

 


发布于 2020-04-05 00:26:41
收藏
分享
海报
0 条评论
196
上一篇:google优化排名怎么做?2019年7个核心排名因素 下一篇:浅谈JDBC中ParperStatement和Statement的区别
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码