Java程序员面试题(刷题)

第一模块

Java 基础

1.JDK 和 JRE 的区别

JDK:Java编译、运行平台

JRE:Java运行平台

(可以说JDK包括了JRE加上Java的源码编译器javac)

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

==的作用效果:

  • 基本类型:比较的是值是否相等
  • 引用类型:比较的是引用是否相等

equals解读:

默认下是引用比较,但是很多类都重写了equals方法,把它变成了值比较,所以一般情况下equals比较的是值是否相等

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

不对,在散列表中,hashCode()相等即两个键值对的哈希值相等,然而哈希值相等,并不一定能得出键值对相等

4.final 在 Java 中有什么作用

如若对类声明final关键字,表示该类不可继承
如若对方法声明final关键字,表示该方法不可被重写
如若对变量声明final关键字,表示该变量为常量,不可被修改

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

四舍五入功能方法:
结果为(-1),在数轴上向右方向入(小->大)

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

不属于,String是一个类;基础数据类型有:byte,int,short,long,char,boolean,float,double

7.Java 中操作字符都有那些类?他们之间有什么区别吗?

String类、StringBuilder类、StringBuffer类

String类的字符串长度是不可变的,StringBuilder和StringBuffer类是可动态变化字符串长度的。其中StringBuilder是非线程安全的,更适合单线程运行程序解决性能问题,而StringBuffer是支持同步的,是线程安全的,多线程下使用的字符串操作类。

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

不一样,内存的分配方式不一样。String str = “i”的方式,Java虚拟机会将其分配到常量池中,而后者会分配到堆内存中(即创建了String类的新对象)

9.如何将字符串反转

1
2
3
4
5
6
7
8
9
//StringBuilder类的reverse()方法
StringBuilder sb = new StringBuilder();
sb.append("You are");
System.out.print(sb.reverse());

//StringBuffer类的reverse()方法
StringBuffer sb = new StringBuffer();
sb.append("You are");
System.out.print(sb.reverse());

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

  • indexOf(“”):返回指定子串首次出现的位置下标
  • charAt():返回指定索引处的字符
  • replace():
  • trim():去除字符串两端的空白
  • split():分割字符串(返回数组)
  • getBytes():返回字符串的 byte 类型的数组
  • length():返回字符串的长度
  • toLowerCase():将字符串转化为小写字母
  • toUpperCase():将字符串转化为大写字母
  • subString():截取字符串
  • equals():字符串的比较
    1
    2
    3
    4
    5
    6

    ```

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

    不需要
    abstract class Dog {
    public static void sayWang() {
        System.out.print("wang wang wang ...")
    }
    }

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

  • 普通类不能有抽象方法,而抽象类可以有
  • 抽象类不能直接实例化,而普通类可以

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

不能,定义抽象类就是让其他类取实现的,而 final 修饰的类为最终类,是不允许被继承的,所以是自相矛盾的。

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

实现:实现抽象类是用 extends 继承;实现接口是用 implements 实现接口

构造函数:抽象类可以有;而接口不可

main 方法:抽象类可以有 main 方法,并且我们能运行它;
而接口不能有 main 方法

实现数量:一个类可以实现多个接口;但一个类只能继承一个抽象类

访问修饰符:接口中的方法默认使用 public 的;而抽象类中的方法可以自定义任意访问权限的

15.Java 中 IO 流分为几种?

按功能分:输入流和输出流

按类型分:字节流和字符流

  • 字符流按八位传入传输
  • 字节流按十六位…..

输入流和输出流

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

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

  • Files.exists():检测文件路径是否存下。
  • Files.creatFile():检测文件
  • Files.creatDirectory():创建文件夹
  • Files.delete():

第二模块

第三模块

第四模块

第五模块

第六模块

第七模块

第八模块

第九模块

第十模块

第十一模块

第十二模块

第十三模块

第十四模块

第十五模块

第十六模块

第十七模块

第十八模块

第十九模块