Java面试题及答案

题目均来自https://blog.csdn.net/sufu1065/article/details/88051083

一.Java基础

  1. JDK 、JRE 和 JVM 有什么区别?
    JDK是Java Development Kit的缩写,是java开发工具包,包含JRE。
    JRE是Java Runtime Environment的缩写,是java程序的运行环境,其包含JVM。
    JDK = JRE + Java工具包(javac.exe + java.exe + javadoc.exe)
    JRE = JVM + Java核心类库
  2. == 和 equals 的区别?
    == 是判断两个变量或实例是不是指向同一个内存空间。
    equals 是判断两个变量或实例指向的内存空间的值是否相同。
  3. 两个对象的hashCode()相同,则equals()也一定为true,对吗?
    不对。hashCode()相同,只能说明两个对象在散列存储结构的同个位置,hash值相同,不代表对象的值一定相同。
    反之,equals() true的两个对象,hashCode()一定相同。
  4. final在Java中的作用是什么?
    final是Java中的非访问修饰符。它修饰的变量为常量,不可改变;修饰的类不能被继承;修饰的方法不可以被继承重写。
  5. java中的Math.round(-1.5)等于多少?
    Math.round()方法是四舍五入,所以  Math.round(-1.5) =  -1
  6. String 属于基础的数据类型吗?
    不属于。基础数据类型有八种,分别为byte、short、int、long、float、double、char、boolean
  7. java中操作字符串都有哪些类?它们之间有什么区别?
    操作字符串的类有String、StringBuffer、StringBuilder。
    String类:被final修饰,不能对字符串对象进行修改,每次修改都会产生一个新的对象。
    StringBuffer:线程安全,可以对字符串对象进行修改
    StringBuilder:线程不安全,可以对字符串对象进行修改
    速度:StringBuilder > StringBuffer > String
    少数据量:String
    单线程,数据量大:StringBuilder
    多线程,数据量大:StringBuffer
  8. String str="i"与 String str=new String(“i”)一样吗?
    不一样,前者是在常量池中的对象,后者是在堆中对常量池中"i"对象的复制对象。
  9. 如何将字符串反转?
    使用StringBuffer的reverse()方法
    使用String的toCharArray()方法,将获得的char[]再拼成字符串;
    使用String的CharAt()方法,遍历获取各个位置的字符,拼成字符串。
  10. String类的常用方法都有哪些?
    equals() :字符串比较
    concat():拼接字符串
    charAt():获取指定位置字符
    indexOf():获取指定字符串第一次出现的索引
    trim():去除字符串两端空格
    length():获取字符串长度
    subString():截取字符串
  11. 抽象类必须要有抽象方法吗?
    抽象类可以有抽象方法和非抽象方法,不一定要有抽象方法。反过来,有抽象方法的类必须声明为抽象类。
  12. 普通类和抽象类有什么区别?
    抽象类有abstract关键字修饰;抽象类不能被实例化;普通类不能有抽象方法;抽象类的子类必须实现父类的所有抽象方法
  13. 抽象类能用final修饰吗?
    不能,因为用final修饰的类,不能被继承,而抽象类就是用于被继承。
  14. 接口和抽象类有什么区别?
    抽象类可以有普通方法和抽象方法,接口只能有抽象方法。
    抽象类可以有构造方法,接口没有构造方法
    抽象类有普通变量,接口中只有public常量
    抽象类只能单继承类,接口可以多继承接口(比如:interface A extends B,C,D{})
    实现类只能继承一个抽象类,但是可以实现多个接口
  15. Java中的IO流分为几种?
    按数据的流向分为:输入流和输出流
    按流数据的格式分为:字符流和字节流
    按流数据的包装过程分为:节点流和处理流
    其中 InputStream/Read是所有输入流的基类
    OutputStream/Writer是所有输出流的基类
  16. BIO、NIO、AIO 有什么区别?
    BIO是同步阻塞IO模型,服务器实现模式为一个连接一个线程。。。
    NIO是同步非阻塞IO模型,服务器实现模式为一个请求一个线程。。。
    AIO是异步非阻塞IO模型,服务器实现模式为一个有效请求一个线程。。。
  17. Files的常用方法都有哪些?
    Files.exist()         检查文件路径是否存在
    Files.delete()       删除文件或者目录
    FIles.copy()         复制文件
    Files.move()        移动文件
    Files.createFile()  创建文件
    Files.createFileDirectory()         创建文件夹
    Files.size()           查找文件个数
    Files.read()          读取文件
    Files.write()          写入文件

二.容器

  1. Java容器有哪些?
     
  2. Collection 和 Collections 有什么区别?
     
  3. List、Set、Map 之间的区别是什么?
     
  4. HashMap 和 Hashtable 有什么区别?
     
  5. 如何决定使用 HashMap 还是 TreeMap?
     
  6. 说一下 HashMap 的实现原理?
    HashMap是数组+链表的数据结构,
  7.  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值