Java 面试题及答案
一、JDK8 新特性
面试题:请列举 JDK8 的主要新特性?
答案:
- Lambda 表达式和函数式接口
- 方法引用 (:: 操作符)
- Stream API
- 接口的默认方法和静态方法
- Optional 类
- 新的日期时间 API (java.time 包)
- Nashorn JavaScript 引擎
- 重复注解
- 类型注解
- 并行数组排序
二、HashMap 原理及线程安全
面试题1:HashMap 的工作原理是什么?
答案:
- HashMap 基于哈希表实现,使用数组+链表+红黑树(JDK8)结构
- 通过 key 的 hashCode() 计算哈希值,确定数组下标
- 处理哈希冲突:链表法(JDK8 中链表长度超过8转为红黑树)
- 扩容机制:默认负载因子0.75,扩容时容量翻倍
面试题2:如何保证 HashMap 的线程安全?
答案:
- 使用 Collections.synchronizedMap() 包装
- 使用 ConcurrentHashMap(推荐)
- 使用 HashTable&