43)Java 中堆和栈有什么区别?(答案)-达内培训负责整理
JVM 中堆和栈属于不同的内存区域,使用目的也不同.栈常用于保存方法帧和局部变量,而对象总是在堆上分配.栈通常都比堆小,也不会在多个线程之间共享,而堆被整个 JVM 的所有线程共享.
关于内存的的面试问题和答案
Java 基本概念面试题
44)"a==b"和"a.equals(b)"有什么区别?(答案)
如果 a 和 b 都是对象,则 a==b 是比较两个对象的引用,只有当 a 和 b 指向的是堆中的同一个对象才会返回 true,而 a.equals(b) 是进行逻辑比较,所以通常需要重写该方法来提供逻辑一致性的比较.例如,String 类重写 equals() 方法,所以可以用于两个不同对象,但是包含的字母相同的比较.
45)a.hashCode() 有什么用?与 a.equals(b) 有什么关系?(答案)
hashCode() 方法是相应对象整型的 hash 值.它常用于基于 hash 的集合类,如 Hashtable、HashMap、LinkedHashMap等等.它与 equals() 方法关系特别紧密.根据 Java 规范,两个使用 equal() 方法来判断相等的对象,必须具有相同的 hash code.
46)final、finalize 和 finally 的不同之处?(答案)

final 是一个修饰符,可以修饰变量、方法和类.如果 final 修饰变量,意味着该变量的值在初始化后不能被改变.finalize 方法是在对象被回收之前调用的方法,给对象自己最后一个复活的机会,但是什么时候调用 finalize 没有保证.finally 是一个关键字,与 try 和 catch 一起用于异常的处理.finally 块一定会被执行,无论在 try 块中是否有发生异常.
47)Java 中的编译期常量是什么?使用它又什么风险?
公共静态不可变(public static final )变量也就是我们所说的编译期常量,这里的 public 可选的.实际上这些变量在编译时会被替换掉,因为编译器知道这些变量的值,并且知道这些变量在运行时不能改变.这种方式存在的一个问题是你使用了一个内部的或第三方库中的公有编译时常量,但是这个值后面被其他人改变了,但是你的客户端仍然在使用老的值,甚至你已经部署了一个新的jar.为了避免这种情况,当你在更新依赖 JAR 文件时,确保重新编译你的程序.
Java 集合框架的面试题
这部分也包含数据结构、算法及数组的面试问题
48) List、Set、Map 和 Queue 之间的区别(答案)
List 是一个有序集合,允许元素重复.它的某些实现可以提供基于下标值的常量访问时间,但是这不是 List 接口保证的.Set 是一个无序集合.
49)poll() 方法和 remove() 方法的区别?
poll() 和 remove() 都是从队列中取出一个元素,但是 poll() 在获取元素失败的时候会返回空,但是 remove() 失败的时候会抛出异常.
以上就是达内培训给大家做的内容详解,更多关于IT的学习,请继续关注达内培训