Java经典面试
文章平均质量分 81
脑袋不灵光的小白羊
这个作者很懒,什么都没留下…
展开
-
Java经典面试题——对比 Vector、ArrayList、LinkedList 有何区别?
迭代器只会调用一次 node(int) 方法,在执行 list.iterator() 的时候:先调用 AbstractSequentialList 类的 iterator() 方法,再调用 AbstractList 类的 listIterator() 方法,再调用 LinkedList 类的 listIterator(int) 方法,如下图所示。这三者都是实现集合框架中的 List ,也就是所谓的有序集合,因此具体功能也比较近似,比如都提供按照位置进行定位、添加或者删除的操作,都提供迭代器以遍历其内容等。原创 2023-03-09 14:51:10 · 916 阅读 · 0 评论 -
Java经典面试题—— int 和 Integer 有什么区别?谈谈 Integer 的值缓存范围
我们知道 Java 的对象都是引用类型,如果是一个原始数据类型数组,它在内存里是一段连续的内存,而对象数组则不然,数据存储的是引用,对象往往是分散地存储在堆的不同位置。这种设计虽然带来了极大灵活性,但是也导致了数据操作的低效,尤其是无法充分利用现代 CPU 缓存机制。原则上,建议避免无意中的装箱、拆箱行为,尤其是在性能敏感的场合,创建 10 万个 Java 对象和 10 万个整数的开销可不是一个数量级的,不管是内存使用还是处理速度,光是对象头的空间占用就已经是数量级的差距了。,也就是生成的字节码是一致的。原创 2023-03-06 15:07:01 · 1663 阅读 · 0 评论 -
Java经典面试题——谈谈 Java 反射机制,动态代理是基于什么原理?
使用 jdk 的反射机制,创建对象的能力, 创建的是代理类的对象。而不用你创建类文件。不用写java文件。动态:在程序执行时,调用jdk提供的方法才能创建代理类的对象。jdk动态代理,必须有接口,目标类必须实现接口, 没有接口时,需要使用cglib动态代理。原创 2023-03-04 11:33:50 · 745 阅读 · 0 评论 -
Java经典面试题——Exception 和 Error 有什么区别?
不检查异常就是所谓的运行时异常,类似 NullPointerException、ArrayIndexOutOfBoundsException 之类,通常是可以编码避免的逻辑错误,具体根据需要来判断是否需要捕获,并不会在编译期强制要求。Exception 和 Error 都是继承了 Throwable 类,在 Java 中只有 Throwable 类型的实例才可以被抛出(throw)或者捕获(catch),它是异常处理机制的基本组成类型。原创 2023-03-03 16:25:11 · 83 阅读 · 0 评论 -
Java经典面试题——谈谈 final、finally、finalize 有什么不同?
缓存:final 配合 static 关键字提高了代码性能,JVM和Java应用都会缓存 final 变量。同步:final 变量或对象是只读的,可以安全的在多线程环境下进行共享,而不需要额外的同步开销。内联:使用 final 关键字,JVM会显式地主动对方法、变量及类进行内联优化。原创 2023-03-03 15:20:54 · 489 阅读 · 0 评论 -
Java经典面试题——String、StringBuffer、StringBuilder有什么区别?
StringBuffer本质是一个线程安全的可修改字符序列,它保证了线程安全,也随之带来了额外的性能开销,所以除非有线程安全的需要,不然还是推荐使用它的后继者,也就是StringBuilder。也由于它的不可变性,类似拼接、裁剪字符串等动作,都会产生新的 String 对象。count 是一个 int 类型的变量,表示字符序列的长度。随着字符串的拼接,value 数组的长度会不断增加,因此在 StringBuilder 对象的实现中,value 数组的长度是可以动态扩展的,就像ArrayList那样。原创 2023-03-02 14:46:07 · 387 阅读 · 0 评论