Java面试题基础模块

一、Java 基础

1.JDK 和 JRE 有什么区别?

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

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

      总结:JRE可以支撑Java程序的运行,包括JVM虚拟机(java.exe等)和基本的类库(rt.jar等),JDK可以支持Java程序的开发,包括编译器(javac.exe)、开发工具(javadoc.exe、jar.exe、keytool.exe、jconsole.exe)和更多的类库(如tools.jar)等。如果你需要运行java程序,只需安装JRE就可以了。如果你需要编写java程序,需要安装JDK。

   详解:https://www.cnblogs.com/lsw9/p/8685623.html

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

    通俗讲,==比较对象的值和内存地址,只有同时满足时才为true,否则为false;equals比较的是值相等,通常用于字符串的比较

Integer x =10,y=10;
int a=10,b=10;
Integer既可以使用==也可以使用equals来进行比较,但是int只能使用==

    详解:https://www.cnblogs.com/wangzn/p/7121159.html

    https://juejin.im/post/5c7ddcd06fb9a04a06059bea

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

    错误,两个对象equals相等,则它们的hashcode必须相等,反之则不一定。

    详解:https://www.jianshu.com/p/17a02ad2f62b

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

    a) final可以修饰类,这样的类不能被继承

    b) final可以修饰方法,这样的方法不能被重写。 

    c) final可以修饰变量,这样的变量的值不能被修改,是常量

    详解:https://blog.csdn.net/m0_37695351/article/details/78201776

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

    结果:-1,个人理解round(负值)相当于取Math.ceil(-1.5);四舍五入的原理是在原基础上+0.5然后取整就是最后的结果。

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

    String不是基础数据类型,并且String不能被继承。

    详解:https://www.jianshu.com/p/1184a2e5929f

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

    String、StringBuffer、StringBuilder

    1、在字符串不经常发生变化的业务场景优先使用String(代码更清晰简洁)。如常量的声明,少量的字符串操作(拼接,删除等)。

    2、在单线程情况下,如有大量的字符串操作情况,应该使用StringBuilder来操作字符串。不能使用String"+"来拼接而是使用,避免产生大量无用的中间对象,耗费空间且执行效率低下(新建对象、回收对象花费大量时间)。如JSON的封装等。

    3、在多线程情况下,如有大量的字符串操作情况,应该使用StringBuffer。如HTTP参数解析和封装等。

    详解:https://baijiahao.baidu.com/s?id=1629804867201303563&wfr=spider&for=pc

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

9.如何将字符串反转?

  StringBuiler的reverse()的方法,最快的方式

  详解:https://blog.csdn.net/cghu1201/article/details/78490934

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

    详解:https://www.cnblogs.com/ABook/p/5527341.html

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

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

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

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

    a 接口里只能包含抽象方法,静态方法和默认方法,不能为普通方法提供方法实现,抽象类则完全可以包含普通方法。

    b 接口里只能定义静态常量,不能定义普通成员变量,抽象类里则既可以定义普通成员变量,也可以定义静态常量。

    c 接口不能包含构造器,抽象类可以包含构造器,抽象类里的构造器并不是用于创建对象,而是让其子类调用这些构造器来完成属于抽象类的初始化操作。

    d 接口里不能包含初始化块,但抽象类里完全可以包含初始化块。

    e 一个类最多只能有一个直接父类,包括抽象类,但一个类可以直接实现多个接口,通过实现多个接口可以弥补Java单继承不足。

    参考:https://baijiahao.baidu.com/s?id=1622053733155304478&wfr=spider&for=pc

15.java 中 IO 流分为几种?

    Java中IO流分成两大类,一种是输入流,所有的输入流都直接或间接继承自InputStream抽象类,输入流作为数据的来源,我们可以通过输入流的read方法读取字节数据;另一种是输出流,所有的输出流都直接或间接继承自OutputStream抽象类,输出流接收数据,可以通过write方法写入字节数据。

    https://blog.csdn.net/iispring/article/details/46821033

    https://blog.csdn.net/tang834133957/article/details/81271514

    https://www.cnblogs.com/QQ846300233/p/6046388.html

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

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

    https://www.cnblogs.com/wangjinlong-padan/p/6382924.html

转载于:https://my.oschina.net/marlon520/blog/3056522

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值