java面试

一. Java 基础

  1. JDK 和 JRE 有什么区别?
    jdk全称Java Development Kit是Java的开发工具集,它包括jre,
    jre全称是Java Runtime environment是Java运行环境,它包括Java工具(javac/java/jdb)和类库(Java API)。
    jdk是给开发人员用的,jre是给普通用户用的。

  2. == 和 equals 的区别是什么?
    ==和equals的区别
    == : 它的作用是判断两个对象的地址是不是相等。即,判断两个对象是不是同一个对象。(基本数据类型==比较的是值,引用数据类型==比较的是内存地址)

    equals() : 它的作用也是判断两个对象是否相等。但它一般有两种使用情况:
    情况1:类没有覆盖 equals() 方法。则通过 equals() 比较该类的两个对象时,等价于通过“==”比较这两个对象。
    情况2:类覆盖了 equals() 方法。一般,我们都覆盖 equals() 方法来两个对象的内容相等;若它们的内容相等,则返回 true (即,认为这两个对象相等)。

  3. 两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?
    hashCode和equal方法
    如果两个对象equals相等,那么这两个对象的HashCode一定也相同
    如果两个对象的HashCode相同,不代表两个对象就相同,只能说明这两个对象在散列存储结构中,存放于同一个位置

  4. final 在 java 中有什么作用?
    参考
    final作为Java中的关键字可以用于三个地方。用于修饰类、类方法和属性以及变量。
    特征:凡是引用final关键字的地方皆不可修改!
    (1)修饰类:表示该类不能被继承;
    (2)修饰方法:表示方法不能被重写;
    (3)修饰变量:表示变量只能一次赋值以后值不能被修改(常量)。但是要注意是引用数据类型还是基本数据类型,基本数据类型是这个值就不能改变了,引用数据类型是这个地址不能改变,但是地址指向的内容是可以改变的。

  5. java 中的 Math.round(-1.5) 等于多少?
    返回最接近它的整数,若有两个返回接近的整数,则取最大的那个
    Math.round(-1.5)返回-1,Math.round(1.5)返回2

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

  7. java 中操作字符串都有哪些类?它们之间有什么区别?
    String、StringBuilder、StringBuffer
    String 是只读字符串,String 对象内容是不能被改变的
    StringBuffer 和 StringBuilder 的字符串对象可以对字符串内容进行修改,在修改后的内存地址不会发生改变
    StringBuilder 线程不安全;StringBuffer 线程安全

  8. String str="i"与 String str=new String(“i”)一样吗?
    参考
    不一样String str="i"Java 虚拟机会将其分配到常量池中String str=new String("i")会被分到堆内存中,即使内容一样还是会创建新的对象。

  9. 如何将字符串反转?
    三种方法参考

  10. String 类的常用方法都有那些?
    第一梯队(重写)
    equals hashCode compareTo toString
    第二梯队(常用)
    charAt() codePointAt()
    indexOf()lastIndexOf()
    substring() split()replace()
    length()`` concat()contains();trim();
    getBytes() toCharArray() matches()
    第三梯队(一般)
    toUpperCase() toLowerCase()
    startsWith() endsWith();
    isEmpty();

  11. 抽象类必须要有抽象方法吗?
    抽象类中必须有抽象方法么? 不是必须含有抽象方法
    抽象方法必须放在抽象类中么? 目前来看必须放在抽象类中(或接口中) 普通类是不允许含有抽象方法。

  12. 普通类和抽象类有哪些区别?
    象类是不能被实例化的,就是不能用new调出构造方法创建对象,普通类可以直接实例化;
    普通类不能包含抽象方法,抽象类可以包含抽象方法。抽象方法只需声明,无需实现;
    含有抽象方法的类必须声明为抽象类,抽象类的子类必须实现抽象类中所有抽象方法,否则这个子类也是抽象类,如果子类没有实现父类的抽象方法,则必须将子类也定义为abstract类。
    抽象方法不能被声明为静态
    抽象方法不能用 private 修饰
    抽象方法不能用 final 修饰

  13. 抽象类能使用 final 修饰吗?
    不能,抽象类是被用于继承的,final修饰代表不可修改、不可继承的。

  14. 接口和抽象类有什么区别?
    参考
    抽象类中能不能没有具体成员,全部都是抽象方法----- 可以 —> 抽象类抽象到极致 质的变化 —> 接口
    (1)抽象类可以有构造方法,接口中不能有构造方法。
    (2)抽象类中可以有普通成员变量,接口中没有普通成员变量
    (3)抽象类中可以包含静态方法,接口中不能包含静态方法
    (4) 一个类可以实现多个接口,但只能继承一个抽象类。
    (5)接口可以被多重实现,抽象类只能被单一继承
    (6)如果抽象类实现接口,则可以把接口中方法映射到抽象类中作为抽象方法而不必实现,而在抽象类的子类中实现接口中方法

  15. java 中 IO 流分为几种?
    参考
    按照流的流向分,可以分为输入流和输出流;
    按照操作单元划分,可以划分为字节流和字符流;
    按照流的角色划分为节点流和处理流。

  16. BIO、NIO、AIO 有什么区别?
    暂时看不懂啊

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

你可能感兴趣的:(工作,java学习)