1. String和StringBuffer和StringBuild的区别?
String类型的值是不可变的,每次新的操作都会产生一个新的对象。
StringBuffer:值可变,线程安全。
StringBuild:值可变,线程不安全。
2. Java中如何对一个数字进行四舍五入?
Java中有一个Math类,可以使用Math.round(num)方法进行四舍五入。
3. List、Set、Map 之间的区别是什么?
List:有序容器,可以存重复值,可以插入多个null元素。
Set:无序容器,不可以存重复值,只允许插入一个null元素。
Map:key-value容器,key值唯一,value值不唯一。
4. HashMap 和 Hashtable 有什么区别?
HashMap:继承于AbstractMap类,线程不安全,key、value均可为null。
HashTable: 继承于Dictionary类,线程安全,key、value均不可为null。
5. ArrayList 和 LinkedList 的区别是什么?
ArrayList:底层基于数组实现的,因为底层是数组,查询的时候是根据索引直接定位元素,所以查询效率高。
LinkedList:底层基于双向链表实现的,因为底层是双向链表,在进行增加或删除时,效率会相对高很多。
6. 如何实现数组和 List 之间的转换?
数组转List ,使用JDK中java.util.Arrays工具类的asList方法可以实现。
List 转数组,使用 List 的toArray方法。无参toArray方法返回Object数组,传入初始化长度的数组对象,返回该对象数组。
7. JDK8相对于JDK7有哪些升级?
增加 Lambda 表达式。
增加 方法引用(双冒号::)。
增加 函数式接口。
还有很多,比如Steam流等等。
其中的解答只是个基本答案,不是什么标准答案,每个人面试的时候都不一样,所以面试题的解答方式还需要自己心有腹稿,只是一个记录,望大家可以稍作借鉴。