基础面试题归纳(1)

    1):String;StringBulid;StringBuffer的区别
String:不可变字符串;每次修改都会创建对象,用于不常修改的字符串;
Stringbuild:可变字符串;线程不安全    ,用于单线程频繁修改字符串;
STringbuffer:可变字符串;线程安全,用于多线程环境;

    2):Java的反射机制
运行时动态获取类的信息并操作类或对象的能力;
通过反射我们可以在编译时无法确定的情况下通过类名获取类的实例`字段方法`构造函数等信息,
并可以在运行时调用这些方法或访问这些字段;

    3)接口和抽象类的区别
接口是一种规范,它定义了一组方法的签名,而不包含具体实现。一个类可以实现多个接口。
抽象类是一种可以包含具体方法和抽象方法的类,它可以被继承,但不能被实例化。一个类只能继承一个抽象类。
简而言之,接口关注的是行为的规范,而抽象类关注的是共享的功能

    4)重写(override)和重载(overload)的区别 
重写(override)指的是子类重新实现了父类中已有的方法,子类的方法具有相同的名称、参数列表和返回类型。
重载(overload)指的是在同一个类中定义了多个方法,它们具有相同的名称但参数列表不同。
重写主要涉及继承和多态性,而重载则是在同一个类中的方法之间进行区分。
简而言之,重写是对已有方法的重新实现,而重载是创建具有相同名称但不同参数的多个方法。

    5)sleep和wait的区别
sleep是线程休眠一段时间后继续执行,期间保持对锁不释放;
wait是线程进入等待,并释放锁;直到其他线程通知后才继续执行;

    6)简述双亲委派机制
指的是类加载器在加载类的时候,先将加载请求委托给父类加载器,
只有父类无法加载时,自己会尝试加载,以确保类的加载安全和防止类的重复加载.

    7)hashMap为什么用红黑树不用B树
红黑树相对于B树在插入删除,查询等操作上的平衡性更好.
而且红黑树的节点比B树的节点更小,占用内存更少,是适合存储在内存中的数据结构;

    8)hashMap什么时候扩容
JDK1.7:hashMap中元素 超过当前容量与负载因子(默认0.75){超过当前容量的75%的时候}的乘积会扩容,扩容后的容量是当前容量的2倍;
JDK1.8:hashMap中链表长度超过阈值(8)就会把链表变成红黑树,当红黑树的容量超过容量与负载因子的乘积阈值(64)会扩容2倍;

    9)hashMap的长度为什么是2的N次方
HashMap的长度选择为2的N次方是为了提高散列算法的效率和分布均匀性,
通过使用2的幂次方作为长度,可以确保哈希码的高位和低位可以均匀参与到散列计算中,减少哈希冲突的发生,
并提高散列算法的效率和性能

    10)HashMap和HashTable区别
HashMap是非线程安全的、允许空键和空值,并使用数组+链表/红黑树底层实现;
HashTable是线程安全的、不允许空键和空值,并使用数组+链表底层实现。

    11)ConcurrentHashMap和HashMap的区别
ConcurrentHashMap是线程安全的并发哈希表,支持高效地并发访问;
HashMap是非线程安全的哈希表,适用于单线程环境下的使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值