java最常见的面试题

JAVA基础目录:

  1. JDK、JRE、JVM的关系
  2. ==和equals的区别
  3. final 在 Java 中有什么作用?
  4. Java 中的 Math. round(-1. 5) 等于多少?
  5. Java中操作字符串都有哪些类?它们的区别是什么?
  6. String str = " a " 和 String str = new String(" a ")一样吗?
  7. 抽象类中可以没有抽象方法吗?
    8.普通类和抽象类有哪些区别?
    9.Java中都有哪些容器
    10.HashMap和HashTable的区别
  8. Sleep和wait的区别
    12.ThreadLocal是什么?有哪些使用场景?
  9. 什么是反射?

JAVA基础

  1. JDK、JRE、JVM的关系
    JDK:Java Development Kit 即Java开发工具包,提供了Java开发环境和Java运行环境。
    JRE:Java Runtime Environment 即Java运行环境,为Java程序的运行提供环境。
    JVM:Java Virtual Michine即Java虚拟机,Java程序运行的最小条件。
    JVM是Java程序实现跨平台(系统)的核心部分,在不同平台上有不同版本的JVM,例如Linux系统上有Linux版本的JVM,Windows系统上有Windows版本的JVM,正因为有各种版本的JVM支持,Java程序才得以在各种平台上实现。
    三者之间的关系为 JDK包含JRE和一些Java系统类库,JRE包含JVM和一些其它的支持Java程序员性的组件。即JDK>JRE>JVM。
  2. ==和equals的区别
    ==
    在比较基本类型和引用类型时分别有不同的功能。
    在比较基本类型的时候比较值是否相等。
    在比较引用类型的时候比较引用是否相等(引用也就是我们平常说的堆指向栈的地址值)。
    equals
    其实equals本质上就是“
    ”,只不过是Java中的一些类如:String、Integer等类重写了equals方法。所在在比较String,Integer类型时比较的是值是否相等。但是比较没有重写equals方法的引用类型时(如我们自己定义的实体类)默认比较的是引用(地址值)是否相等。
  3. final 在 Java 中有什么作用?
    final修饰的类叫最终类,该类不能被继承。
    final修饰的方法不能被重写。
    final修饰的变量的值不能被修改。
  4. Java 中的 Math. round(-1. 5) 等于多少?
    Math.round(-1.5)等于-1,Math,rotund(2.5)等于3。若方法的参数为正数则是四舍五入,若为负数则是五舍六入。例:Math.round(-2.6)=-3,Math.round(-2.5)=-2。
  5. Java中操作字符串都有哪些类?它们的区别是什么?
    分别是String、StringBuffer、StringBuilder

String类声明的是不可变的对象,每次操作时都会生成新的String对象,然后再将指针指向新的引用。
StringBuffer和StringBuilder
相同点:都可以在原有的对象上进行修改
不同点:StringBuffer线程安全,效率低
    StringBuilder线程不安全,效率高
所以在单线程的情况下使用StringBuilder,在多线程的情况下使用StringBuffer。
6. String str = " a " 和 String str = new String(" a “)一样吗?
不一样。内存分配方式不一样。String str = " a " 的方式,JVM会将其分配到常量池中。而String str = new String(” a ")会被分配到堆内存中。

  1. 抽象类中可以没有抽象方法吗?
    抽象类中可以不存在抽象方法。

8.普通类和抽象类有哪些区别?
抽象类中可以有抽象方法,普通类不能有抽象方法
普通类可以直接实例化,抽象类不可以直接实例化(需要通过抽象类的引用指向它的子类的实例,也就是父类引用指向子类的实例,父类是抽象类,这样在实例化子类之前会先实例化它的父类)。

9.Java中都有哪些容器
Java中容器主要分为两大类Collection 、Map,它们下面还有很多子类

Collection
List
ArrayList
LinkedList
vector
stack
set
HashSet
LinkedHashSet
TreeSet
Map
HashMap
LinkedHashMap
HashTable
ConcurrentHashMap
TreeMap
10.HashMap和HashTable的区别
存储性: HashMap允许Key和Value存储null,HashTable不可以
安全性: HashTable线程安全,HashMap线程不安全。但是HashTable是Java的保留类(过时不推荐使用的类),若需要多线程开发推荐使用线程安全的ConcurrentHashMap类。

  1. Sleep和wait的区别
    sleep是Thread类的方法,wait是Object类的方法
    sleep不释放锁 , wait释放锁
    sleep到时间自动恢复,wait需要notify或notifyall方法唤醒

12.ThreadLocal是什么?有哪些使用场景?
ThreadLocal是为每个使用该变量的线程提供一个独立的副本,让其保存只属于自己线程的信息,多个线程之间互相不影响。例如:用户登录时使用ThreadLocal保存用户的用户,密码信息。每一个用户对应一个线程,多个用户之间的信息不会相互影响。

  1. 什么是反射?
    反射是指在运行过程中,可以知道任意一个类的属性和方法,可以调用任意一个对象的属性和方法,这种动态获取信息和动态调用的功能是java的反射机制。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值