java面试题---基础题

  1. JDK 和 JRE 有什么区别?
    JDK(java development kit)java的开发工具包,里面包含了各种类库和工具。
    JRE (Java Runtime Enviroment)java运行环境,最核心的内容就是JVM(Java虚拟机)及核心类库。

  2. == 和 equals 的区别是什么?
    == 内存空间中的存储位置是否一致,一般用于基本数据类型比较的是值
    equals 比较两个对象的值是否相等,一般用于字符串内容是否相等比较多

  3. 两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?
    不一定相同。正常情况下,因为equals()方法比较的就是对象在内存中的值,如果值相同,那么Hashcode值也应该相同。但是如果不重写hashcode方法,就会出现不相等的情况。

  4. final 在 java 中有什么作用?
    被final关键字修饰的类不能被继承,被final关键字修饰的类属性和类方法不能被覆盖(重写)

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

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

  7. java 中操作字符串都有哪些类?它们之间有什么区别?
    string:为字符串常量,对象一旦创建之后该对象是不可更改的,适用于少量的字符串操作的情况。
    StringBuffer:字符串变量,对象一旦创建之后该对象可修改,适用多线程下在字符缓冲区进行大量操作的情况
    StringBuilder:字符串变量,对象一旦创建之后该对象可修改,适用于单线程下在字符缓冲区进行大量操作的情况

    在线程安全上,StringBuilder是线程不安全的,而StringBuffer是线程安全的

  8. String str="i"与 String str=new String(“i”)一样吗?
    不一样。
    String str="i"字符串保存在常量池中,常量池中没有重复的元素,比如当执行代码“abc”时,java虚拟机会先在常量池中检索是否已经有“abc”,如果有那么就将“abc”的地址赋给变量,如果没有就创建一个,然后在赋给变量。
    String str=new String(“i”)创建的对象保存在堆内存中即使内容一样还是会创建新的对象。

  9. 如何将字符串反转?
    public static String reverse2(String s) {
    int length = s.length();
    String reverse = “”;
    for (int i = 0; i < length; i++)
    reverse = s.charAt(i) + reverse;
    return reverse;
    }

    public static String reverse4(String s) {
    return new StringBuffer(s).reverse().toString();
    }

  10. String 类的常用方法都有那些?
    replace()、split()、length()、indexOf()、lastIndexOf()、substring()、trim()、toLowCase()、toUpperCase()、equals()、charAt()、getBytes()

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

  12. 普通类和抽象类有哪些区别?
    抽象类不能被实例化。
    抽象类可以有构造函数,被继承时子类必须继承父类一个构造方法,抽象方法不能被声明为静态。
    抽象方法只需申明,而无需实现,抽象类中可以允许普通方法有主体
    含有抽象方法的类必须申明为抽象类
    抽象的子类必须实现抽象类中所有抽象方法,否则这个子类也是抽象类

  13. 抽象类能使用 final 修饰吗?
    Java抽象类不可以被final修饰。因为抽象类必须被继承才能用,而final修饰的类是不能被继承的。

  14. 接口和抽象类有什么区别?
    抽象类 和 接口 都是用来抽象具体对象的. 但是接口的抽象级别最高
    抽象类可以有具体的方法 和属性, 接口只能有抽象方法和不可变常量
    抽象类主要用来抽象类别,接口主要用来抽象功能.
    抽象类中,且不包含任何实现,派生类必须覆盖它们。接口中所有方法都必须是未实现的。

  15. java 中 IO 流分为几种?
    两种类型的流:字节流(byte)和字符流(char)

  16. BIO、NIO、AIO 有什么区别?
    同步阻塞IO(BIO):服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,可以通过线程池机制来改善

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

    异步阻塞IO(AIO):服务器实现模式为一个有效请求一个线程,客户端的IO请求都是由操作系统先完成了再通知服务器用其启动线程进行处理。

  17. Files的常用方法都有哪些?
    createNewFile()、mkdir()、mkdirs()、 renameTo(File dest)、delete()、exists() 、isFile()、isDirectory()、isHidden()、isAbsolute()、getName() 、length() 、getParent()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值