• 菜鸟刷面试题(一、Java基础篇)


    目录:

    • JDK 和 JRE 有什么区别?
    • == 和 equals 的区别是什么?
    • 两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?
    • final 在 java 中有什么作用?
    • java 中的 Math.round(-1.5) 等于多少?
    • String 属于基础的数据类型吗?
    • java 中操作字符串都有哪些类?它们之间有什么区别?
    • String str="i"与 String str=new String(“i”)一样吗?
    • 如何将字符串反转?
    • String 类的常用方法都有那些?
    • 抽象类必须要有抽象方法吗?
    • 普通类和抽象类有哪些区别?
    • 抽象类能使用 final 修饰吗?
    • 接口和抽象类有什么区别?
    • java 中 IO 流分为几种?
    • BIO、NIO、AIO 有什么区别?
    • Files的常用方法都有哪些?

    纯自己的见解+网上的资料的整理,如有问题请各位大佬指出 (ಥ_ಥ) 

    JDK 和 JRE 有什么区别?

    JDK是java development kit,java开发工具包,JDK中包含JRE。

    JRE是java runtime environment,java运行时环境。

    JDK面向开发人员使用,JRE面向Java程序使用;如果你只需要运行java程序的话,按照JRE就可以了,如果你还要编写java程序,就需要安装JDK了。

    == 和 equals 的区别是什么?

    ==判断两个变量或实例内存地址是否相等,equals判断两个变量或实例的值是否相等。

    但equals本质是一个方法,最底层是在Object定义的,向Integer、Long这种包装类重写了逻辑,所以会相等;

    若没有重写的话,调的是Object的equals。

    public boolean equals(Object obj) {
        return (this == obj);
    }

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

    不一定,equals是对象的一个方法,如果内部实现不一致是不会相同的。

    final 在 java 中有什么作用?

    对于class来说,定义成final的class是不能被继承的

    对于方法来说,定义成final的方法也是不能被重写的

    对于属性来说,定义成final的属性是常量,不能被修改

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

    等于-1,round就是四舍五入,将原值加上0.5后再向下取整就可以了。

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

    不属于,String是引用类型。

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

    常用的有String、StringBuffer、StringBuilder

    String被final修饰,所有的方法返回new String,即对String修改不会影响到原对象

    String可以说是Stringbuffer和StringBuilder的基类,后两者是对String的增强;但StringBuffer对于StringBuilder来说更适用于并发的场景,它在方法上都加了锁来保证线程安全。

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

    不一样,我们用==比较,得出的结果为false;

    首先str = "i"表示将字符串i的内存地址给到str,而new String("i")是将一个对象的内存地址给到str。

    然后我们通过实验来验证:

    String str = "i";
    String str2 = "i";
    String str3 = new String("i");
    System.err.println(str==str2);
    System.err.println(str==str3);
    System.err.println(str2==str3);

    结果为:true、false、false

    如何将字符串反转?

    通过StringBuilder或StringBuffer的reverse()方法。

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

    valueOf()

    concat()

    split()

    substring()

    equals()

    indexOf()

    replace()

    ...

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

    不是必须要有抽象方法,抽象类其实和普通的类本质上没有区别,只是可以拥有未实现的抽象方法,来让继承自己的类实现。

    它对于普通的类来说不能实例化,即不能构造该类的对象。

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

    类定义上:普通类class className,抽象类abstract class className

    方法实现上:普通类的方法都必须要有实现,而抽象类可以只定义不实现

    实例化:普通类能够直接实例化,而抽象类不能实例化

    方法定义上:普通类可以拥有private方法,而抽象类的抽象方法不能是private,因为抽象方法需要子类实现,若是private的话子类无法实现该方法。

    抽象类能使用 final 修饰吗?

    不能;因为被final修饰的类是不能被继承的,而抽象类中可能包含抽象方法,抽象方法是必须要被重写的,所以不能用final修饰抽象类。

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

    方法实现:接口只能声明方法,抽象类还可以实现方法。

    属性和方法:接口的属性都是public static final的,抽象类可以自己定义;接口的方法都是public abstract的,抽象类也是自己定义的。

    承接关系:抽象类是继承,接口是实现

    java 中 IO 流分为几种?

    按照数据的流向分为:input(输入流用于读数据)、output(输出流用于写数据)。

    按照流数据的格式分为:字符流、字节流。

    常用的有InputStream、OutputStream、Reader、Writer,java中其它各种各样的流均是他们派生出来的。

    BIO、NIO、AIO 有什么区别?

    BIO:Blick IO,同步阻塞式IO;也就是传统的IO,特点是使用简单,缺点是处理并发能力差;它是一个连接一个线程。(关键字:传统的、并发能力差

    NIO:Non IO,同步非阻塞IO;是传统IO的优化IO,客户端和服务端通过channel通讯,实现类多路复用;它是一个请求一个线程。(关键字:以channel通讯、多路复用IO

    AIO:Asynchronous IO,异步非阻塞,NIO的升级;实现了异步非阻塞IO,基于事件和回调机制;它是一个有效的请求一个线程。(关键字:异步非阻塞IO、基于事件和回调机制

    参考:https://blog.csdn.net/zhcswlp0625/article/details/93461137

    Files的常用方法都有哪些?

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

    2、Files.createFile() 创建文件

    3、Files.createDirectory() 创建文件夹

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

    5、Files.copy() 复制文件

    6、Files.move() 移动文件

    7、Files.size() 查看文件个数

    8、Files.read() 读取文件

    9、Files.write() 写入文件

  • 相关阅读:
    poj 3590 The shuffle Problem——DP+置换
    poj 3128 Leonardo's Notebook——思路(置换)
    bzoj 1004 [HNOI2008]Cards && poj 2409 Let it Bead ——置换群
    bzoj 1119 [POI2009]SLO && bzoj 1697 [Usaco2007 Feb]Cow Sorting牛排序——思路(置换)
    bzoj 3944 Sum —— 杜教筛
    bzoj 1367 [ Baltic 2004 ] sequence —— 左偏树
    bzoj 2093 [ Poi 2010 ] Frog —— 滑动窗口 + 倍增
    bzoj 2276 [ Poi 2011 ] Temperature —— 单调队列
    bzoj 2069 [ POI 2004 ] ZAW —— 多起点最短路 + 二进制划分
    NOIP2007普及 守望者的逃离
  • 原文地址:https://www.cnblogs.com/bzfsdr/p/11977822.html
Copyright © 2020-2023  润新知