zoukankan      html  css  js  c++  java
  • Java面试题(一)- Java基础

    1. JDK JRE 有什么区别?

    JRE(JavaRuntimeEnvironment),Java运行时环境,也就是Java平台。所有的Java 程序都要在JRE下才能运行。普通用户只需要运行已开发好的java程序,安装JRE即可。

    JDK(Java Development Kit)是程序开发者用来编译、调试java程序用的开发工具包。JDK的工具也是Java程序,也需要JRE才能运行。为了保持JDK的独立性和完整性,在JDK的安装过程中,JRE也是 安装的一部分。所以,在JDK的安装目录下有一个名为jre的目录,用于存放JRE文件。

    JVM(JavaVirtualMachine,Java虚拟机)JRE的一部分。它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java语言最重要的特点就是跨平台运行。使用JVM就是为了支持与操作系统无关,实现跨平台。

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

    “==”比较基本数据类型时比较的是值,比较引用类型时比较的是地址

    equals”是Object中定义的方法,在Objectequals比较的也是地址(returnthis==obj)),但是系统的类一般都会重写equals方法用于比较内容

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

    不对,java中规定两个对象相等(即equals()的结果为true),hashCode必须相等,

    相反两个对象有相同的hashcode值,它们不一定是相等的

    4.final java 中有什么作用?

    final修饰的类为最终类,不能被继承

    final 修饰的方法不能被重写

    final 修饰的变量为常量,只能被赋值一次,赋值后值不能再被修改

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

    实际上 Math.round(a) 返回的是 (long)Math.floor(a + 0.5d)

    所有Math.round(-1.5)等于-1

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

    String是引用数据类型,java中的基础类型有八种:byteintshortlongfloatdoublecharboolean

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

    String :不可变字符序列

    StringBuffer : 可变字符序列,线程安全但效率相对较低

    StringBuider: 可变字符序列,线程不安全,效率较高

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

    不一样,String str="i"只会在常量池创建一个对象,并且如果常量池已经存在相同的对象就不再创建直接引用该对象,String str=new String(i)无论常量池存不存在相同的对象都会在堆中创建一个对象,如果常量池中没有相同的对象会再次在常量池中创建一个对象

    9.如何将字符串反转?

    可以使用StringBufferStringBuider中的reverse()方法

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

    indexOf():返回指定字符的索引。

    charAt():返回指定索引处的字符。

    replace():字符串替换。

    trim():去除字符串两端空白。

    split():分割字符串,返回一个分割后的字符串数组。

    getBytes():返回字符串的 byte 类型数组。

    length():返回字符串长度。

    toLowerCase():将字符串转成小写字母。

    toUpperCase():将字符串转成大写字符。

    substring():截取字符串。

    equals():字符串比较。

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

    抽象类不一定包含抽象方法,但是包含抽象方法的类一定是抽象类

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

    普通类不能定义抽象方法可以直接实例化,

    抽象类能定义抽象方法,不能直接实例化

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

    抽象类不能用final修饰,抽象类本身是不能实例化的,定义抽象类就是为了给其他类继承的,如果用final修饰就无法被继承

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

    使用抽象类的主要目的是减少重复性的代码,而接口的目的是实现模块间的连接,实现模块间的信息传递,降低模块间的耦合性(抽象类主要用于模块内,接口主要用于模块间)。

    抽象类可以有各种类型的变量,而接口只能是静态常量

    抽象类可以有普通方法,而接口中只能存在抽象方法

    抽象类只能继承一个父类,接口可以继承多个父接口

    一个类只可以继承一个类,却可以实现多个接口

    抽象类可以有构造器,接口不能有构造器

    15.java IO 流分为几种?

    按流的方向分为:输入流(从数据源流向程序的流)和输出流(从程序流向目的地)

    按内存单元分:字节流(以字节为单位操作数据的流)和字符流(以字符为单位操作数据)

    按处理方式分:节点流(直接对数据源或者目的地进行读写)和处理流(不直接连接数据源或目的地,而是对其他流进行处理包装,从而提高程序的性能)

    16.BIONIOAIO 有什么区别?

    BIOBlock IO 同步阻塞式 IO,就是我们平常使用的传统 IO,它的特点是模式简单使用方便,并发处理能力低。

    NIONew IO 同步非阻塞 IO,是传统 IO 的升级,客户端和服务器端通过 Channel(通道)通讯,实现了多路复用。

    AIOAsynchronous IO NIO 的升级,也叫 NIO2,实现了异步非堵塞 IO ,异步 IO 的操作基于事件和回调机制。

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

    Files.exists():检测文件路径是否存在。

    Files.createFile():创建文件。

    Files.createDirectory():创建文件夹。

    Files.delete():删除一个文件或目录。

    Files.copy():复制文件。

    Files.move():移动文件。

    Files.size():查看文件个数。

    Files.read():读取文件。

    Files.write():写入文件。

  • 相关阅读:
    [LeetCode] 310. Minimum Height Trees
    [LeetCode] 722. Remove Comments
    [LeetCode] 243, 244, 245. Shortest Word Distance I, II, III
    [LeetCode] 939. Minimum Area Rectangle
    [LeetCode] 135. Candy
    [LeetCode] 1395. Count Number of Teams
    [LeetCode] 673. Number of Longest Increasing Subsequence
    [LeetCode] 724. Find Pivot Index
    [LeetCode] 1219. Path with Maximum Gold
    [LeetCode] 849. Maximize Distance to Closest Person
  • 原文地址:https://www.cnblogs.com/gaojinshun/p/10777878.html
Copyright © 2011-2022 走看看